大家好,我目前正准备将UCOS 移植到 STM32F103 ,我不太会移植,我参考了网上很多资料,也包括Micrium 官方的针对STM32的UCOS2.86例程,本人想在Micrium 的例程上修改下。
问题是有人说官方的程序有死机及OSCtxSw 函数里 R4,R5的使用破坏数据,还有周公的网站上也提到了死机的问题等,想问问有没有人用过官方的移植例程,用起来怎么样有没有上面提到的问题,要是真有死机或的什么问题,该如何解决?
希望不吝赐教!! 谢谢
以下引用一个大侠的说的话:
最明显的BUG是 IAR PORT os_cpu_a.asm中
OSCtxSw
LDR R4, =NVIC_INT_CTRL ; trigger the PendSV exception (causes context switch)
LDR R5, =NVIC_PENDSVSET
STR R5, [R4]
BX LR
用R4 R5会破坏数据, 我相信Micrum不会犯这样的错误
我不会uCOS,但看到论坛中已经有很多讨论,也有很多成功的
你先自己搜索一下吧。
如果你想自己做`
就少问多做,觉得麻烦找现成的就ok~
hehe
问题就在这里
论坛里这方面的东西太多了,有说有错误有说没有的。
我都糊涂了,再有我是不太会移植,就是找的现成的,但是都说有死机现象,也不知道有没有稳定的。
那可以考虑freertos
简单也够稳定,,当你熟悉的差不多了,再回头看看,ucos
感谢
谢谢 open_free 的回复,可是我还是希望能有人回答我关于UCOS的问题
感激不尽!
不说
新版的代码里面已经改正了么。上官网下载最新版的移值代码看看。
不清楚改没改啊。
wlq_9 清楚么
我就是下的Micrium 最新的代码,
OSCtxSw
LDR R4, =NVIC_INT_CTRL ; trigger the PendSV exception (causes context switch)
LDR R5, =NVIC_PENDSVSET
STR R5, [R4]
BX LR
这里还是没有改过啊
刚刚下了官方的2.86的源代码
刚刚下了官方的2.86的源代码
R4,R5的问题已经改过了:
OSCtxSw
LDR R0, =NVIC_INT_CTRL ;
LDR R1, =NVIC_PENDSVSET
STR R1, [R0]
BX LR
不知道更改优先级会死机的问题 该了没有
我还需要测试下,嘿嘿
哎..发现自己原来越懒了,也越来越不相信自己了,决定自己动手移植了
谢谢大家的答复,结贴!
呵呵,我移植成功了,但是是在开发板上实现的。
方便的话,我们可以共同探讨一下,呵呵
你是 用官方的例子改的?
你是 用官方的例子改的?
测试过么 跑起来怎么样?