?? readme.txt
字號:
small RTOS(AVR) 1.22.1v 說明文件
CPU: ATmega8L
Compile: avr-gcc3.4.3
Stack: 靜態(tài)
我在使用陳明計先生寫的small RTOS和51單片機做過幾個小項目,起初都很好,開發(fā)變的容易了,程序變的容易修改。后來隨著任務(wù)個數(shù)的增多,RAM很快就不夠用了。51系列的芯片內(nèi)部RAM普遍都是256個,很難找出1024個字節(jié)RAM或更多,而價格又合適的。記得上一次我沒有辦法被迫使用了64K flash內(nèi)部帶768字節(jié)的XRAM的51芯片,而我根本用不到那么多flash。
然而AVR的mega系統(tǒng)芯片內(nèi)部集成數(shù)量適中的flash,較大內(nèi)部RAM(1024Bytes)特別是mega8和mega16這兩款芯片性能價格比極高。特別適合做一些小項目。而且同樣的時鐘頻率下AVR運行速度又快。理論上同樣時鐘頻率下,AVR會比51快12倍,然而我在特定環(huán)境下測試small RTOS做任務(wù)切換的速度AVR會比51快7~8倍。這有可能同樣是8位機,51的指針可以是8位的而AVR的卻必須是16位的。16位的數(shù)據(jù)自然就要使用更多的指令完成處理操作。
small RTOS移植到AVR上以后,就不用考慮函數(shù)的可重入問題了。只要不使用全局變量就可以了。因為我用的編譯器是能產(chǎn)生可重入型代碼的AVR-GCC.我重新寫了和硬件相關(guān)的部分,2個OS_CPU_C.c和OS_CPU_A.c都是用C寫的。第2個文件使用了幾處嵌入式匯編語句。這個文件本來應該用匯編寫,但考慮實現(xiàn)難度與可讀性也是使用了C編寫而成。
要想無需任何改動就可以編譯這個程序,就必須安裝winavr20050214和uv2,先點擊uv2的工程文件打開這個工程然后在Tools---->Customize Tools Menu...嵌入gcc編譯命令make all和make clean即可立即編譯。編譯后可以使用avr studio進行代碼級仿真,在仿真之前最好把這個軟件能打的補丁都打上,這個軟件實在是讓人不敢恭維。
優(yōu)化級別必需為s,其他優(yōu)化級別也不會導致編譯時出錯,但會導致運行時出錯。原因涉及局部變量分配堆棧處理方式不同,也就是OS_CPU_A.c那個文件中的移植部分。還有就是其他優(yōu)化涉及的中斷自動保存寄存器的數(shù)量有所出入。
再次感謝陳明計先生,是他把我引入了RTOS的世界。
徐寶田
2005年7月5日
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -