当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:首先介绍μC/OS-II操作系统的特点,重点分析μC/OS-II在EP7312上的移植方法,介绍μC/OS-II在EP7312中的开发过程。 关键词:嵌入式操作系统 μC/OS-II EP73

摘要:首先介绍μC/OS-II操作系统的特点,重点分析μC/OS-II在EP7312上的移植方法,介绍μC/OS-II在EP7312中的开发过程。 关键词:嵌入式操作系统 μC/OS-II EP7312 引 言   随着Internet和后PC时代的到来,嵌入式系统的应用愈来愈广泛,嵌入式产品在人们的生活中无处不在。今天,嵌入式系统带来的工业年产值已超过 1万亿美元,已经在IT产业中占有很大的比重。   通常,应用程序对嵌入式软件的基本要求是体积小、执行速度快、具有较好的裁减性和可移植性。嵌入式软件的灵魂是嵌入式操作系统。在特定的操作系统之上开发应用软件,可以让程序开发人员屏蔽掉很多低层硬件细节,使得应用程序调试方便、移植简单、易维护,同时开发周期也短。目前,实时操作系统很多,如 VxWorks、Window CE、pSOS、QNX、LynxOS等等。这些操作系统都具有高可靠性、很强的实时性等特点,但它们都是商业操作系统,价格昂贵,人们往往很难接受。 μC/OS-II的出现是对这些商业操作系统的一个很大的冲击。μC/OS-II是源码公开的实时操作系统,是一个自由操作系统。程序开发人员可以改写源代码,使之符合自己的要求。裁减掉不需要的部分,使操作系统变得小巧、灵活,并且能满足用户特定操作系统的需要。 1 μC/OS-II简介   μC/OS-II并非一个完整的实时操作系统,它只是一个实时内核。μC/OS-II不像其它实时操作系统一样,提供给用户的是一个标准的API函数,程序开发人员利用操作系统提供的API函数进行应用程序的开发。要想在μC/OS-II内核上进行应用程序的开发,就需要程序开发人员在实时内核的基础上建立自己的实时操作系统。首先,把μC/OS-II移植到自己的硬件目标板上,写出相应的驱动程序以及用户图形界面等等;在这些接口函数之上,加上用户自己的应用程序,就构成了嵌入式软件。 2 μC/OS-II在EP7312上的移植   μC/OS-II的移植条件是:只要该处理器有堆栈,有CPU内部寄存器入栈、出栈指令;使用的C编译器支持内嵌汇编(inline assembly)或者该C语言可扩展,可连接汇编模块,使得关中断、开中断能在C语言程序中实现。Cirrus Logic公司生产的EP7312芯片内部采用的是ARM720T处理器,内部有37个寄存器。其中R13通常用作堆栈指针。堆栈寻址是隐含的,堆栈指针所指定的存储单元就是堆栈的栈顶,堆栈寻址通常有两种方式向上生长和向下生长。ARM处理器有ARM和Thumb两种指令集。每种指令集都有丰富的指令可以对堆栈进行操作。堆栈指针指向最后压入堆栈的有效数据,称为满堆栈(full stack);堆栈指针指向下一个数据项放入的空位置,称为空堆栈(empty stack)。根据堆栈的生长方向不同,可以生成4种类型的堆栈,即满递增、空递增、满递减、空递减。我们所使用的ARM SDT(ARM Software Development Kit)开发系统内含的编译器,同样也支持内嵌汇编,所以μC/OS-II完全可以移植到EP7312上。

  μC/OS-II核心代码很小,程序开发人员要把它移植到自己的目标板中只需做少量的工作。图1是μC/OS-II硬件和软件的体系结构。   虽然μC/OS-II大部分源代码是用C语言写的,但是完成和处理器一些有关的代码时,还是必须要用汇编语言来实现的。寄存器的读、写只能通过汇编语言的存储和加载指令来实现。要使μC/OS-II能够正常工作, 处理器必须满足以下要求:  ① 处理器的C编译器能产生可重入代码;  ② 用C语言可以打开和关闭中断;  ③ 处理器支持中断,并且能够产生定时中断(通常在10"100Hz之间);  ④ 处理器能够支持容纳一定量数据的硬件堆栈;  ⑤ 处理器有将堆栈指针和其它寄存器读出和存储到堆栈或内存中的指令。   μC/OS-II的移植包括以下几个部分。 (1)设置与编译器有关的代码[OS_CPU.H]   在不同的处理器中有不同的字长,所以必须定义一系列数据类型以确保移植的正确性。另外,在μC/OS-II中,不使用C的short、int和 long等数据类型,这些都是和编译器相关的。下面就是μC/OS-II定义的一部分数据类型。 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /*无符号8位整数 */ typedef signed char INT8S; /*有符号8位整数 */ typedef unsigned int INT16U; /*无符号16位整数 */ typedef signed int INT16S; /*有符号16位整数 */ typedef unsigned long INT32U; /*无符号32位整数 */ typedef signed long INT32S; /*有符号32位整数 */ typedef float FP32; /*单精度浮点数 */ typedef double FP64; /*双精度浮点数 */   μC/OS-II需要先禁止中断访问代码的临界区,并且在访问完毕后重新允许中断。μC/OS-II定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。 #define OS_ENTER_CRITICAL() IRQFIQDE #define IRQFIQDE __asm { mrs r0, CPSR; stmfd sp!, {r0}; orr r0, r0, #NOINT; msr CPSR_c, r0; } #define OS_EXIT_CRITICAL() IRQFIQRE #define IRQFIQRE __asm { ldmfd sp!, {r0}; msr CPSR_c, r0; } #endif   (2)编写4个汇编语言函数[OS_CPU_A.S]   μC/OS-II的移植实例要求用户编写4个简单的汇编语言函数: OSStartHighRdy() OSCtxSw() OSIntCtxSw() UCOS_IRQHandler 详细内容见本刊网络补充版(http://www.dpj.com.cn)。   (3)用C语言编写6个与操作系统有关的函数[OS_CPU_C.C] 这6个函数是: OSTaskStkInit() OSTaskCreatHook() OSTaskDelHook() OSTaskSwHook() OSTaskStatHook() OSTaskTickHook()   这6个函数只对OSTaskStkInit()编写代码,后5个函数必须声明,但是内部并没有代码。OSTaskCreate()和 OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。这个函数的移植代码,可参考文献[3]。 3 测试、编写驱动和应用程序   做完以上工作以后,就要测试移植的是否正确。测试一个μC/OS-II实时内核并不复杂,就是让这个实时内核在自己的目标板上跑起来。开始时,可以运行一些简单的任务和时钟节拍中断任务,如果调试成功就可以在上面添加应用程序。   μC/OS-II移植完成以后,就要在这个实时内核之上编写接口驱动程序。由于嵌入式操作系统体积更小,功能更强,且快速、稳定,更具有针对性,因此不像其它操作系统那样,对系统的所有接口设备都需要驱动、管理、调度和监视。由于嵌入式产品是针对特殊的用途而设计的,有很强的专一性,因此,在编写驱动程序时内容更精简,更具有稳定性,编写出的驱动模块更小。编写驱动程序应完成以下基本功能:①对设备初始化和释放;②把数据从内核传送到硬件和从硬件读取数据;③读取应用程序传送给设备文件的数据和回送应用程序请求的数据;④检测和处理设备出现的错误。实现了以上功能以后,一个嵌入式操作系统就基本构成了。   完成了μC/OS-II的移植和驱动程序的编写以后,利用操作系统提供的API函数编写应用程序,调用μC/OS-II中与应用程序相关的系统服务。调试通过后,固化到目标板上,这个嵌入式应用软件就完成了。[!--empirenews.page--]

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭