您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机TMS320F28x上RTOS移植关键技术分析 正文
TMS320F28x上RTOS移植关键技术分析

TMS320F28x上RTOS移植关键技术分析

点击数:7148 次   录入时间:03-04 11:59:53   整理:http://www.55dianzi.com   ARM单片机

  笔者选择了目前应用比较广泛的实时操作系统μC/OS-Ⅱ。要移植μC/OS-Ⅱ需要满足以下要求:

  ◇ 处理器的C编译器能产生可重入代码;
  ◇ 用C语言就可以打开和关闭中断;
  ◇ 处理器支持中断,并且能产生定时中断(通常在10~100 Hz之间);
  ◇ 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈;
  ◇ 处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈或内存中的指令。移植工作包括以下几个内容:
  ◇ 用#define设置一个常量的值(OS_CPU.H);
  ◇ 声明10个数据类型(OS_CPU.H);
  ◇ 用#define声明3个宏(OS_CPU.H);
  ◇ 用C语言编写6个简单的函数(OS_CPU_C.C);
  ◇ 编写4个汇编语言函数(OS_CPU_A.ASM)。

  移植的难点在于实现OS_CPU_A.ASM。这个文件的实现需要十分清楚处理器启动过程和中断处理,以及代码的运行过程。由于TI公司的DSP堆栈从下往上长,所以移植时需要置OS_STK_GROWTH为0。可以简单地使用TIMS320LF28x的中断使能和禁止命令来实现OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL()两个宏。

  以下是移植时OS_CPU_A.ASM文件里任务切换的代码。任务切换时,须时刻注意自己设计的堆栈结构。

_OSCtxSw:
  CALL_CTX_SAVE
  LDPK_OSTCBCur; OSTCBCur>OSTCBStkPtr = SP
  LARAR3, _OSTCBCur
  MAR*, AR3
  SARAR1, * , AR1

_OSIntCtxSw:
  CALL_OSTaskSwHook; OSTaskSwHook()
  LDPK_OSTCBHighRdy; OSTCBCur = OSTCBHighRdy
  BLDD_OSTCBHighRdy,#_OSTCBCur
  LDPK_OSPrioHighRdy; OSPrioCur = OSPrioHighRdy
  BLDD_OSPrioHighRdy,#_OSPrioCur
  LDPK_OSTCBHighRdy; SP=OSTCBHighRdy>OSTCBStkPtr
  LARAR3, _OSTCBHighRdy
  MAR*, AR3
  LARAR1, *
  B_CTX_REST, AR1

结语

  本文详细说明了从上电复位开始,DSP中程序运行的过程;分析了固化在片上ROM的程序以及由编译器自动生成的程序。另外,通过对DSP/BIOS启动、中断执行、从RAM中执行代码等问题的探讨,了解DSP的运行机制,掌握移植实时操作系统的关键技术知识。笔者成功地将实时操作系统μC/OS-Ⅱ移植到了TMS320LF2812数字信号处理器上。



上一页  [1] [2] 


本文关键字:技术  ARM单片机单片机-工控设备 - ARM单片机