?? +-
字號:
問題越來越多
關(guān)于uC/OS-II
1。uC/OS-II源碼里有的地方好象漏掉了編譯預處理,導致裁減失效。是作者故意這樣做的嗎?還是有技巧?
2。推薦的中斷處理流程:
void OSTickISR(void)
{
保存處理器寄存器的值;
調(diào)用OSIntEnter()或是將OSIntNesting加1;
調(diào)用OSTimeTick();
調(diào)用OSIntExit();
恢復處理器寄存器的值;
執(zhí)行中斷返回指令;
}
似乎有問題。我認為“OSIntEnter()或OSIntNesting+1”應(yīng)該放到第1句,否則中斷嵌套發(fā)生后,不知道前面已經(jīng)中斷過,在中斷退出處理時就可能提前任務(wù)切換,導致混亂。我建議進入中斷后立即關(guān)中斷執(zhí)行OSIntNesting+1或如果CPU支持OSIntNesting+1原語直接加1。
關(guān)于uCOS51
1。51支持4個寄存器區(qū)(R0-R7),在C里也可以調(diào)用USING選擇,你只保存1個寄存器區(qū),是有問題的。
2。通過使用bank技術(shù),51可以支持2M的存儲,對于使用字庫等的應(yīng)用很有價值,uCOS51如何實現(xiàn)?
3。任務(wù)參數(shù)傳遞問題的解決使用了R1-R3,據(jù)我所知,不使用堆棧傳值,無法重入,如果我想遞歸調(diào)用,如何實現(xiàn)?51仿真堆棧的格式是如何安排的?
問題越來越多,目前發(fā)現(xiàn)這些,有些解決了,有些正在想,請繼續(xù)查錯,也請幫忙指點和改正。
在其他MCU上移植,請注意:
1。任務(wù)實現(xiàn)了重入了嗎?
2。任務(wù)參數(shù)傳遞是否真正用堆棧實現(xiàn)。
3。中斷處理流程有無BUG。
4。原作者給的源碼是否完整,有無經(jīng)過技術(shù)處理。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -