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