学习ucos和ARM体系结构的路线图

c/c++

浏览数:117

2019-11-2

AD:资源代下载服务

Step 1:学会使用开发板跑简单程序

熟读对应开发板上的ARM芯片的datasheet,之后就尽可能的在开发板上逐个实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。当每个功能模块都实现以后,再实现多个功能复合的编程,比如用UART打印出ADC的值什么的。

Step 2:搞懂uCOS等简单OS

建议购买《嵌入式实时操作系统μCOS-II(第二版)》,

1.重点搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统;

2.详细了解他的TCB(Task Control Block)和ECB(Event Control Block)的数据结构,搞清楚整个uCOS的实现机制;

3.详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组。

Step 3:建立对uCOS的初步认识

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

在你的开发板上跑跑uCOS,建立起自己对于uCOS在开发板上的认识。在你的开发板上编写一个自己跑uCOS的简单任务。

Step 4:熟悉ARM体系结构

可参考《ARM体系结构与编程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》

了解以下几个方面的知识:

1、ARM模式下的指令集

2、Thumd模式下的指令集

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

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

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

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

Step 5:自己动手移植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开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:

a、OSStartHighRdy函数

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

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

Step 6:测试自己的uCOS移植代码

Step 7:在自己写的uCOS移植代码中跑跑任务。

作者:Leon_Geo