IAR环境m3内核移植TencentOS tiny存在调度任务时发生硬件错误(OS日志误报,实际是stack溢出)

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)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值