一位嵌入式er学习ucos和ARM体系结构的心得体会,有用功!

第一步:在开发板上跑跑简单程序

因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。

熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。自己写自己的程序,然后在开发板上好好实践一下。

当每个功能模块都实现以后,建议你让你的开发板实验一下多个功能复合使用,比如用UART打印出ADC的值什么的。

第二步:学习uCOS

鉴于你已经购买了《嵌入式实时操作系统μCOS-II(第二版)》,除开以下三个文件:

1、OS_CPU_C.c

2、OS_CPU.H,

3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编)

这三个文件的处理机制暂时可以不用先了解怎么做的,怎么移植的,以后再说

第一次读这本书时,搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统。

第二次读这本书时,详细了解他的TCB(Task Control Block)和ECB(Event Control Block)的数据结构,搞清楚整个uCOS的实现机制(这里不要先就去看uCOS的移植,这样只会让你云里雾里的)

第三次读这本书是,详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组

鉴于你又购买了《μC/OS-Ⅱ标准教程》,你 可以想在VC++ 6.0开发环境下实现对信号量,互斥信号量、消息队列、邮箱和事件标志组的上机实验代码。

如果还是不能了解uCOS怎么工作的,建议你多看几遍(我可是足足看了6、7遍了,书都翻得脱页了。汗说明我很笨,希望各位看官都比我聪明,呵呵)

第三步:建立对uCOS的初步认识

在网上下载对应你的开发板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(当然有的开发板已经提供了这样的基础实验)

在你的开发板上跑跑uCOS,建立起自己对于uCOS在ARM7开发板上的认识。

在你所购买的ARM7开发板上编写一个自己跑uCOS得任务(这里先不要去搞中断,初学者对于uCOS下的中断程序设计根本就搞不清楚)

第四步:熟悉ARM体系结构

因为是基于ARM7的移植,建议英文不好的去看看这本书《ARM体系结构与编程》(虽然这本书的作者在翻译时有很多操作,但是还是建议初学者去购买来好好看看),对于英文好的直接在网上下载《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了

在看这个《ARM体系结构与编程》或

《ARM+Architecture+Reference+Manual(2nd+Edition)》时,务必注意多看几次,了解以下几个方面的知识:

1、ARM模式下的指令集

2、Thumd模式下的指令集

3、异常模式及进入异常时ARM如何处理

4、一定能熟悉ARM中的汇编指令

5、熟悉CPSR,R0-R7,R8-R14,R15及在各个模式下,这些寄存器的映射。

熟悉以后,再来自己做uCOS的移植了。

第五步:uCOS移植

当然在自己编写代码做移植uCOS之前,有必要看看别人的移植代码。

其实对于uCOS的移植,我们只需要编写关键的三个文件,文件如下:

1、OS_CPU_C.c(堆栈初始化操作OSTaskStkInit函数)

2、OS_CPU.H:完成在该芯片下的数据定义,比如什么unsigned char 之类的,注意一下OS_STK和OS_CPU_SR的定义,定义下关中断和开中断的方式,有三个只能选择1个,ARM芯片一般是定义为第三种方式

3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:

1、OSStartHighRdy函数

2、任务级的任务切换函数OSCtxSw,

3、中断级的任务切换OSIntCtxSw,其实只要写好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的时候记者要把保存当前任务的寄存器去掉就可以了。

第六步:测试自己的uCOS移植代码

第七步:在自己写的uCOS移植代码中跑跑任务。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注