IAR环境移植教程链接:
https://github.com/Tencent/TencentOS-tiny/blob/master/doc/11.Porting_Manual_for_IAR.md
目的
IAR环境开发,移植完成TencentOS tiny到stm32cbt6,并完成多任务执行。
开发环境
软件:
IAR for arm 8.40.2
stm32cubeMX
硬件:
stm32f103cbt6
移植
1》 根据教学,先完成cubeMX配置并生成工程。
(1)时钟源选择:HSE
(2)SWD调试使能配置
(3)串口1配置
(4)时钟树配置,因人而异,本人带有外部16m晶振。
(5)工程生成配置为IAR工程
2》生成IAR工程,根据教学复制开源项目中的arch、board、kernel、osal到自己的工程中
将生成的IAR放入到board中,将剩下的已存在的工程例程删除。
打开iar工程
最终移植结果
工程options 配置include:
main实现了创建两个任务线程并执行两个任务
编译烧录后,程序跑了几下发生异常:
从错误信息中,认为是idle空闲代码执行时发生错误,而不是栈溢出错误。但是,当本人修改idle任务栈大小为1024B时(原来才128B),又报成了task1任务执行有问题。
当我扩大了task1和task2的任务栈后(256B到512B),程序可以保持持续运行了。
对此,本人认为这个TencentOS错误日志报错问题并不正确,误导性容易让开发者陷入误区而没法真正解决问题。不知是IAR问题还是它的IAR驱动存在问题,因为教程分配的任务栈却不会有栈溢出问题(教程用的开发环境是KEIL MDK)。