音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

ucos移植到MPC860

作者:novar 欄目:嵌入式系統(tǒng)
ucos移植到MPC860
目  錄

^_^    2
一、移植環(huán)境    2
1  uC/OS-II版本    2
2  處理器相關(guān)代碼    2
3  開發(fā)工具    2
3.1  編譯    2
3.2  調(diào)試    3
3.3  下載    3
4  目標(biāo)板    3
二、修改uC/OS-II    3
三、Diab    4
1  dcc    4
2  das    4
3  dld    5
4  ddump    5
5  windiss    5
四、在RAM中運行    6
1  準(zhǔn)備點燈    6
2  準(zhǔn)備串口    6
3  生成elf文件    6
4  通過MPCBDM下載    6
5  單任務(wù)實驗    6
5.1  在0x600處死循環(huán)    7
5.2  在DEC_Hdlr中停止    7
5.3  無法切換到IDLE任務(wù)    7
6  多任務(wù)實驗    8
五、燒寫FLASH    8
1  規(guī)劃地址空間    8
2  向量表的位置    8
3  copy_to_ram    8
4  生成bin文件    9
5  使用PPCBoot燒寫    9
6  迎頭棒喝    9
6.1  部分代碼未燒寫成功    9
6.2  重新點燈    10
6.3  棧與點燈    10



^_^
不知道這個實驗有多大價值,但因為比較熟悉MPC860,又才看了uC/OS-II,所以想把它移植上去跑跑,共花了3周的時間 :-(

這是我第一次做移植實驗,發(fā)現(xiàn)真正動手和看資料真是不一樣。而且,成功之后的興奮,也是無法銘狀的 #_#

在做這個實驗的時候,我沒用過tornado,所有的開發(fā)調(diào)試手段都比較落后 :-/  但也有好處,讓我對底層有了更清晰的認(rèn)識。

搞嵌入式,我還是個新手,發(fā)現(xiàn)需要學(xué)習(xí)的芯片、工具、理論太多,但如果能和大家一起探討,將會少走不少彎路。因此,與壇子里的xdjm們共勉!

以下,是一個簡單的實驗的簡單的筆記,有自己的一些淺顯體會。如果能對你有所幫助,那最好不過,如果沒有,就請一笑了之 ^_^
一、移植環(huán)境
1  uC/OS-II版本
移植工作本身與uC/OS-II的版本沒有太大關(guān)系,基于v2.51移植成功之后,沒做多少工作就能讓v2.62也跑起來。因為修改的是處理器相關(guān)的部分,這部分代碼并沒有體現(xiàn)版本的變化。
2  處理器相關(guān)代碼
從www.ucos-ii.com上可以下載PowerPC8xx的移植代碼,BSE版本,基于此做少量更改,就可以滿足自己的需求。
3  開發(fā)工具
3.1  編譯
使用Diab 5.1for PowerPC套件(含編譯器、匯編器、鏈接器、反匯編及仿真工具等)。由Tornado 2.2 for PowerPC附帶。我是直接在windows下的命令行進(jìn)行編譯的。先要安裝Tornado(如果有單獨的Diab,直接用就可以了),然后運行Tornado/host/x86-win32/bin/torvars.bat,這樣就可以在命令行使用Diab了。

另,有大俠直接用tornado完成移植工作,我還沒有試過,過段時間再看吧。如果能成,當(dāng)然不需要像我這樣折騰了 :-(
3.2  調(diào)試
MPC860沒有自帶的IDE,而Tornado或SINGLE Step能否使用,因為不熟悉也沒有嘗試。以前用過BDM,所以繼續(xù)使用,對應(yīng)的軟件是Linux下的MPCBDM。BDM可以看作是GDB的一個target,所以調(diào)試的實體就是GDB,版本4.18。
3.3  下載
使用BDM下載程序到RAM,使用PPCBoot燒寫程序到FLASH

這些工具都是Linux下的,而編譯又要在windows下,來回的切換很是麻煩。試圖在cygwin下使用BDM,編譯gdb時沒有成功 :-?
Vmware也聽說不錯,但沒時間試了。后來和一同事一起,2臺機(jī)器方便些了。
4  目標(biāo)板
使用華恒的HHPPC860-3COM-2ETH-R1開發(fā)板。
處理器:    MPC860
FLASH:    2片,各2M字節(jié)
SDRAM:    16M字節(jié)
二、修改uC/OS-II
為了移植到MPC860,需要修改uC/OS-II中與處理器和編譯器相關(guān)的部分代碼。在這里,大部分的修改在BSE的ppc8xx移植版本里已經(jīng)做好了,其它需要修改的是:

bsestart.s文件:
ü    IMMR、PLPRCR等
ü    修改對UPM的配置(MCR、MDR)
ü    修改片選的配置(OR、BR)

首先要保證正確的配置,860才能跑得起來。

另外,BSE的移植版本,是用于在RAM中運行的,如果要燒寫FLASH,要做更多改動,后面再說。
三、Diab
這是個好東東(不比gcc差吧?),對應(yīng)的手冊是《Diab Compiler Users Guide PPC》(tornado里有)。越來越發(fā)現(xiàn),開發(fā)調(diào)試一定要清楚編譯原理,從一個編譯器的手冊入手是最直接的了,我很多以前模糊的概念都在這里得到了解釋。

用到的工具如下:
1  dcc
編譯器,據(jù)稱對代碼的優(yōu)化是最好的。
常用命令:
1.    –c        
a)    只進(jìn)行匯編步驟,生成一個目標(biāo)文件(默認(rèn)的后綴是.o);
2.    –Dname[=VALUE]
a)    定義預(yù)處理的宏名(與#define類似),如果沒有指定VALUE,則VALUE為1;
3.    –g
a)    產(chǎn)生符號調(diào)試信息;
4.    –t
a)    定義目標(biāo)板配置變量;
b)    DTARGET、DOBJECT、DFP和DENVIRON;
5.    –X
a)    控制編譯的細(xì)節(jié);
b)    –Xlint:遇到可疑代碼產(chǎn)生警告,它在編譯時進(jìn)行檢查;不會影響優(yōu)化,且只會增加少量的編譯時間,故通常都可以使用該選項;
c)    -Xstruct-min-align=n:強(qiáng)制結(jié)構(gòu)體從一個n字節(jié)的邊界開始;
d)    -Xstruct-max-align=n:設(shè)置結(jié)構(gòu)體的成員需要對齊的最大字節(jié)邊界;
e)    …………………………
f)    不說那么多了,手冊里都有
2  das
匯編器。常用命令:
1.    –t
a)    選擇目標(biāo)板的微處理器;
b)    使用-t可以設(shè)置4個配置變量:DTARGET(微處理器)、DOBJECT(目標(biāo)模塊格式)、DFP(浮點類型的支持)和DENVIRON(目標(biāo)板運行環(huán)境);
c)    如:-tPPC860ES:psos
i.    DTARGET = PPC860;
ii.    DOBJECT = E(COFF)(F for ELF,N for GNU/VxWorks格式);
iii.    DFP = S(軟件浮點模擬)(H for 硬件浮點,N for 不支持浮點);
iv.    DENVIRON = psos;
d)    如果不在編譯時用-t指定,則使用default.conf中的默認(rèn)配置;
3  dld
鏈接器,通過命令行或鏈接命令文件(.dld)的控制生成elf可執(zhí)行文件,通過-m選項也可以生成map文件,在調(diào)試的時候特別有用。

使用-#選項,可以查看默認(rèn)的dld選項(如果你不顯示使用dld的話)。

最好能搞清楚dld文件的語法和原理,這樣會對如何生成bin文件或elf文件,如何鏈接,如何分配段等等有更好的理解。
4  ddump
我用它來生成燒寫FLASH的bin文件,也支持S-Record和HEX文件的生成。

常用的命令:

ddump -ftv file > OUTPUT,生成符號表的信息至文件OUTPUT
ddump -Ruv file,生成bin文件:注意v選項,如果沒有的話,它會將.bss段和.sbss段也輸出到bin文件,則很可能產(chǎn)生gap越界的錯誤
ddump -Rv file,生成srec文件
ddump -Sv file,查看段的大小
5  windiss
windiss -il label file,生成文件file中函數(shù)label的反匯編代碼。
windiss -o,同時生成機(jī)器碼;

沒琢磨出來怎么生成整個elf文件的反匯編代碼,只好一個符號(函數(shù))一個符號的來了  :-(

windiss還有仿真功能,不過用處不大,因為它是針對PowerPC的,而MPC860作為PowerPC的一個implementation,還是有不少區(qū)別的——仿真時,總說860的一SPR不存在 :-(

ddump和windiss都是我調(diào)試常用的,因為底層調(diào)試,要知道符號的地址。
四、在RAM中運行
1  準(zhǔn)備點燈
如果用匯編實現(xiàn)點燈,則在初始化IMMR之后,就可以使用了。

如果用C代碼,想在原程序初始化棧之前就能點燈,必須在一開始先初始化好一個臨時棧,可以使用MPC860內(nèi)部的DPRAM——初始化IMMR之后,將DPRAM的地址賦給r1,OK,現(xiàn)在就可以在匯編中直接跳轉(zhuǎn)到點燈的C函數(shù)了。
2  準(zhǔn)備串口
在bsetest.c中,添加對MPC860的SMC1初始化的代碼,然后
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問各位大蝦,toshiba的t7e46f有沒有國貨替換
psoc求救
UC/osII任務(wù)的問題
用過32腳的eerom么?容量2m-4m,介紹一下型號,謝了。
課題急用:關(guān)于USB
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號