【LPC824Lite试用】1.奔跑吧uCOS

作者: jasonwangse
上传时间为: 2017-11-13 12:51 PM
2017-11-13
阅读:

很幸运LPC824Lite开发板的试用申请审核通过了,打算在上面跑跑uCOS-III,同时体验一下LPC824特有的片内ROM驱动,在学习的同时把经历和大家分享一下。

可依想得很周到,周五发的快递,周末包裹在路途飞奔,正好周一早晨就收到了。包装很简洁,一个扑克牌大小的纸盒+一个防静电袋。板卡兼容Arduino R3扩展接口,更多的细节我就不介绍了,可以移步评测文章

http://www.eeboard.com/evaluation/nxp-lpc824lite/

直入主题,首先下载官方的资料,包含板卡手册、原理图等文档以及SDK。SDK中有最基本的启动配置、驱动和很多demo代码,移植时会用到

http://www.ucdragon.cn/prod_view.aspx?TypeId=148&Id=250

然后到Micrium官网下载一个CortexM0+的BSP包,没找到NXP的,就下了一个FRDM-KL25Z的

https://www.micrium.com/download/micrium_frdm-kl25z/

这样uC/OS中和arch相关的代码就不用动了,剩下的就是修改BSP了。由于跑基础BSP只需要中断、时钟和串口,再加个点灯;而中断NVIC和时钟SysTick都是标准的,所以移植只需要做以下的改动:

  1. 把SDK中的common和driver挪到BSP目录下
  2. 对照着Reference Manual改中断向量相关的文件,主要是cstartup.s,bsp_int.c和bsp.h
  3. 对照着SDK改启动相关的代码、clock、LED 相关IO管脚的配置,以及用作debug串口的USART1的驱动和IO管脚配置
  4. 为了能够看到运行效果,先创建一个任务,循环点灯

最后创建一个MDK的工程,把需要编译的文件和头文件路径都配好,就可以编译了。Project的结构编排如下

编译中会遇到提示内存不足的问题,因为KL25Z的SRAM是16K,而LPC824的RAM只有8K;如果把原来BSP下的所有特性都使能,内存是不够用的,所以需要对uCOS-III进行裁剪。我主要做了以下的修改

  1. 关闭一些不使用的模块,比如OS_CFG_PEND_MULTI_EN、OS_CFG_MEM_EN等等
  2. 减少系统支持的最大任务优先级,比如OS_CFG_PRIO_MAX改为16
  3. 减小一些系统任务的堆栈,比如idle任务和tick任务

做了这些裁剪后占用SRAM大小降到了5K多,也就是说留给用户的内存就剩不到3K了。

虽然还可以往下继续裁剪,但是相应的功能也就用不了了。看来要想充分地使用uCOS-III的功能,8K的内存还是显得小了一些。

最后将Debugger设置为CMSIS-DAP Debugger,通过MDK download按钮就可以下载到flash中运行了

期间遇到一个小插曲,就是下载过SDK中的demo后,再用MDK download就会报“invalid rom table”了。我开始以为板子坏了,结果到网上一搜,还真有人遇到过同样的问题,而且给出了解决办法;回头细看评测文章,发现在最后也提到了这个问题,又一次感慨——网上高手真多啊!

http://www.nxpic.org/module/forum/forum.php?mod=viewthread&tid=607045

附件中有打包的工程

LPC824Lite-uCOS-III-1.zip

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示