想接触嵌入式操作系统,建议你最好从ucos和freeRTOS这种系统入手,因为大多数对实时性要求苛刻的系统都不用Linux,并且,ucos一类的这种小型系统方便你去分析源码,直接跟源码打交道,便于为以后学习大规模OS如linux、android这些打个基础。
实时性方面:UC/OS-II作为实时操作系统,为实时应用提供了高可靠性的系统服务。对于对时间要求极为严格的任务,UC/OS-II表现得更出色。而Linux作为一个通用的操作系统,虽然在实时性方面也有一定的表现,但在高实时要求的场景下,可能不如UC/OS-II表现得敏捷。
相比于商业RTOS,μC/OS-III免费用于教育和研究,仅在商业项目中需支付少量版权费用,对学习者和开发者非常友好。μC/OS-III的核心包括OSCore.c,负责初始化、运行、中断处理等,维持系统基本运作。OSTask.c处理任务创建、删除等操作,它是以任务调度为基本单元,对任务管理至关重要。
uC/OS-II,OS,是操作系统,uC就是微处理器,就是嵌入微处理器的操作系统,它是个实时的操作系统,具有操作系统的任务管理,文件管理,设备管理等底层支持,编写语言一般用C语言编写,具有可移植特点。
可以看出uC/OS-II是一个比较简单的操作系统内核,而很多东西都要自己实现。相比较而言Linux就比较完善。当然uC/OS-II更加简单,内核代码也更少。你的确应该看uC/OS-II的源代码,但是必须边看边练。不要单纯的去看,还有记下一些笔记,平时上网可以多看看相关资料。不要因为资料是英文的就不去看。
1、肯定能用,只是资源太少了,不过也无所谓,用什么添什么就是了。不过还是建议买有教程售后服务好的开发板,毕竟arm不像51那么好学,有教程效率会提高很多。给你邮箱发点资料,希望对你有帮助。
2、在Cubemx软件中生成代码并导出,然后在您的IDE中打开这个工程并编译。 在您的应用程序中,可以使用操作系统提供的API来创建和管理任务、信号量、消息队列等操作系统资源。 最后,在启动代码中初始化操作系统并启动调度器即可开始运行您的应用程序。
3、要深入学习STM32,首先要对五大嵌入式操作系统有所理解:μClinux、μC/OS-II、eCos、FreeRTOS和RT-thread。μClinux,作为微控制Linux的缩写,它具有Linux核心特性,如稳定性和移植性,但内核小,适合无MMU的STM32F103。
MQX与FreeRTOS都是开源免费的实时操作系统,商业应用免费。MQX有NXP公司长期支持,其中MQX系统有RTCS、文件系统MFS、USB主机/设备协议栈等配套软件集合。大大缩短软件开发周期,应用于多种平台;FreeRTOS是不多的同时具有实行性,开源性,可靠性,易用性,多平台支持等特点的嵌入式操作系统。
内核ROM和耗费RAM都比uCOS 小,特别是RAM。 这在单片机里面是稀缺资源,uCOS至少要5K以上, 而freeOS用2~3K也可以跑的很好。2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。3。
个人认为uCOS更适合作为学习RTOS的平台。它提供了完整的C源代码,在多种CPU上移植的例程,完整的讲义。这些都是学习必须的。
1、软件部分:操作系统,嵌入式Web服务器运行在定制的操作系统上,如uCOSIII、VxWorks、等,这些操作系统为嵌入式设备提供了实时多任务处理功能,能够支持Web服务器的运行。硬件部分:处理器或微处理器,这是嵌入式Web服务器的核心,负责处理和执行各种指令。
2、嵌入式web服务器,是web服务器当中的一种。在嵌入式系统(通俗点就是单片机系统)上实现的一个web服务器,可以通过ie等去访问,对硬件要求稍微低一点。举个简单的例子,我们用的路由器,就是一个典型的嵌入式web服务器,通过19160.1等可以直接访问。
3、嵌入式web服务器,是基于嵌入式系统而实现的web服务器。很好理解,拆分成两个部分,WEB服务器 + 嵌入式。WEB服务器,即我们通常所说的网页服务器。 用IE等浏览器访问时,网页内容储存的地方就叫做web服务器。大型的网站等,对服务器的硬件要求比较高,可以支持成千上万个客户端同时访问,而且速度要快。
C/OS-Ⅱ的移植实例要求用户编写六个简单的C函数:OSTaskStkInit(); OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook(); OSTimeTickHook()。唯一必要的函数是OSTaskStkInit(),其它五个函数必须得声明但没必要包含代码。
OS_ENTER_CRITICAL 和OS_EXIT_CRITICAL 的实现方法有3种,取决于处理器的类型以及C编译器的特性。
当OS_CRITICAL_METHOD= = 1时,简单实现如下:define OS_ENTER_CRITICAL() disable_int()define OS_EXIT_CRITICAL() enable_int()但这样有一个问题,如果禁止中断的情况下调用uC/OS-II功能函数,那么从功能函数返回时,中断可能变成允许的了,而实际上还是希望是禁止的。
首先需要知道,μC/OS-II中创建任务的函数有两个: OSTaskCreate()和OSTaskCreateExt() (1)OSTaskCreate() //创建普通任务 由于重点在下面的创建扩展任务函数,故本函数就不多说了!确实,要想实现检测目标任务栈实际使用情况的功能,是不能使用这个函数来创建目标任务的,必须使用OSTaskCreateExt() 。
其他的都是在c语言编写的中断服务子程序SWI_Exception中。