Ucos-2是一个精巧且可剪裁的适合嵌入式系统的操作系统,这个操作系统已移植到很多嵌入式芯片中。TI作为全球领先的微控器生产厂商,ucos-2在6211,6414,6711,6713上得到移植。因为项目开发,开始接触OMAPL138这款芯片,上网搜索发现没有针对该款芯片的移植,当然OMAPl138的DSP核心为C674X,它向下兼容64x+,67xx,64xx内核,所以针对这些芯片,如6414,6713的移植可以在很小改动下在OMAPL138上运行(需要修改芯片初始化过程和定时器初始化)。所以针对OMAPL138的移植在前人的基础上难度小了很多,本程序是在6414的移植基础上做的修改。
考虑到OMAPL138是在ARM启动后再启动的,芯片初始化的工作已由ARM完成,所以dsp开始工作时仅需要初始化定时器和中断向量表重定位。本程序中用了定时器1,注意不要使用定时器2,因为ARM的Linux已经占用了,修改定时器2会导致ARM崩溃。当然若要单独调试DSP程序,可以用CCS加载GEL文件来初始化程序。
关于C_int00符号的位置本程序放在0x0x11800000,ARM启动DSP时需按这个位置设置复位寄存器,当然可以放在别的位置上,只需按1K字节地址对齐即可。
中断向量表的位置可以放在任意位置,按1k字节对齐,初始化是设置ISTP寄存器即可。
Ucos-2需要一个定时器,我把该定时器中断服务函数放在8号中断向量上,定时周期1ms,若要修改定时器周期,修改USTIMER_init()函数即可。
最后写个小的测试程序,创建两个线程,延时轮流执行打印些语句。
这个移植工作是在瑞泰的开发板上做的测试。CCS采用的是3.3.82.13 ,CGT版本是6.1.20。
程序代码都放在256k的L2中,和外部DDR大小无关,若程序变大,可以考虑修改cmd文件将代码或数据放在DDR中,注意不能和ARM占用的内存冲突。