基于ARM微處理器的uC/OS的移植設(shè)計(jì)
概述
本文引用地址:http://www.ex-cimer.com/article/152361.htm嵌入式操作系統(tǒng)μC/OS-II是一個(gè)公開源代碼的占先式多任務(wù)的微內(nèi)核RTOS,其特點(diǎn)可以概括為以下幾個(gè)方面:公開源代碼,代碼結(jié)構(gòu)清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內(nèi)核屬于搶占式,最多可以管理60個(gè)任務(wù)。目前國內(nèi)對μC/OS-II的研究和應(yīng)用都很多。只要買一本書就可獲得源代碼,對學(xué)校和教育的使用完全免費(fèi),商業(yè)應(yīng)用的費(fèi)用相對也很低。所以對μC/OS-II實(shí)時(shí)操作系統(tǒng)的學(xué)習(xí)研究、開發(fā)、應(yīng)用具有重要意義。
大部分的μC/OS-II代碼是使用ANSI C語言書寫的,因此μC/OS-II的可移植性好,然而仍需要使用C和匯編語言寫一些處理器相關(guān)代碼。μC/OS-II的移植需要滿足以下要求:
?。?)處理器的C編譯器可以產(chǎn)生可重入代碼;
(2)可以使用C調(diào)用進(jìn)入和退出臨界區(qū)代碼;
(3)處理器必須支持硬件中斷,并且需要一個(gè)定時(shí)中斷源;
?。?)處理器需要能夠容納一定數(shù)據(jù)的硬件堆棧;
?。?)處理器需要有能夠在CPU寄存器與內(nèi)核和堆棧交換數(shù)據(jù)的指令。
基于ARM7的S3C44B0X處理器完全滿足上述要求。它使用ARM公司的16位/32位RISC結(jié)構(gòu),內(nèi)核是ARM7TDMI,工作在66MHz,片上集成了以下部件:8K Cache、外部存儲器控制器、LCD控制器、4個(gè)DMA通道、2個(gè)UART、1個(gè)多主I2C總線控制器、1個(gè)I2C總線控制器,以及5通道PWM定時(shí)器和1個(gè)內(nèi)部定時(shí)器、8通道12位ADC等,能夠與常用的外圍設(shè)備實(shí)現(xiàn)無縫連接,功能強(qiáng)大。目前,國內(nèi)應(yīng)用較為廣泛。
1內(nèi)核的移植
μC/OS-II的移植只需要修改與處理器相關(guān)的代碼就可以了。具體有如下內(nèi)容:
?。?)os_cpu.h中需要設(shè)置一個(gè)常量來標(biāo)識堆棧增長方向;
?。?)os_cpu.h中需要聲明幾個(gè)用于開關(guān)中斷和任務(wù)切換的宏;
?。?)os_cpu.h中需要針對具體處理器的字長重新定義一系列數(shù)據(jù)類型;
?。?)os_cpu_a.asm需要改寫4個(gè)匯編語言的函數(shù);
?。?)os_cpu_c.c需要用c語言編寫6個(gè)簡單函數(shù);
?。?)修改主頭文件include.h,將上面的三個(gè)文件和其他自己的頭文件加入。
完成上述工作后,μC/OS-II就可以運(yùn)行在ARM處理器上了。
2 LwIP的移植
μC/OS-II本身沒有TCP/IP協(xié)議棧,目前的一些第三方TCP/IP支持都是完全商業(yè)化的,很少給出源代碼,影響了μC/OS-II的研究和推廣。通過把開放源代碼的TCP/IP協(xié)議棧LwIP移植到μC/OS-II上來,就獲得了一套可免費(fèi)研究、學(xué)習(xí)的嵌入式網(wǎng)絡(luò)軟件平臺。
tcp/ip相關(guān)文章:tcp/ip是什么
評論