国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 4993|回復(fù): 1
打印 上一主題 下一主題

Keil MDK下uC/OS-II在FL2440上的移植

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2010-11-18 13:04:39 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: Keil , MDK , 移植
關(guān)于uCOS-II的種種阿呆就不說了,很多初學(xué)者從此踏上操作系統(tǒng)之路
uCOS-II在ADS上的移植很常見,而在KEIL MDK下的移植卻不是很多,阿呆根據(jù)ADS下的移植范例,結(jié)合自
己最近使用KEIL MDK的稍許心得,記錄一下uCOS-II在KEIL MDK下的移植過程。
一:準(zhǔn)備源碼
在官網(wǎng)上下載了uCOS-II的源碼,好像似乎是2..91的了.
二:編寫OS移植文件
1.編寫OS_cpu_c.c
這個文件阿呆是在ADS下的移植范例里面copy的,直接使用就可以了
注:2.89開始添加了OS_TaskReturn(),它會調(diào)用OSTaskReturnHook(),如果copy的版本低于2.89則需要
自己添加一下。
2.編寫OS_cpu_a.s
這個文件也是阿呆在ADS下的一直范例里面copy的,同樣的S3C2440平臺,這下函數(shù)一樣的,而KEIL MDK
與ADS相比,在語法上沒有什么特別的要求。
3.添加系統(tǒng)心跳定時器
阿呆使用沒有輸出引腳的Timer4作為系統(tǒng)心跳定時器,具體實(shí)現(xiàn)參看:OS_Timer4_c.c
三:修改啟動代碼
1.如果直接將ADS下的啟動代碼copy到MDK下,編譯會提示出錯,一般錯誤是:.\OutPutFiles\uCOS-
II_Uart.axf: Error: L6238E: 2440_init.o(Init_2440) contains invalid call from '~PRES8 (The
user did not require code to preserve 8-byte aligment of 8-byte data objects)' function to
'REQ8 (Code was permitted to depend on the 8-byte aligment of 8-byte data items)' function
App_Main.
解決方法是在代碼段前部添加:PRESERVE8,如圖1

2.將IRQ中斷交給uC/OS-II管理
代碼如下:
;****************************************************
;將OS_CPU_IRQ_ISR地址裝入HandleIRQ中,IRQ中斷交給uCOS-II管理      
;****************************************************
  LDR     R0,=HandleIRQ    ;This routine is needed
   LDR     R1,=OS_CPU_IRQ_ISR   ;if there isn't 'subs pc,lr,#4' at 0x18,
0x1c
   STR     R1,[r0]
即發(fā)生IRQ中斷時系統(tǒng)跳轉(zhuǎn)到OS_CPU_IRQ_ISR處執(zhí)行uC/OS-II中斷服務(wù)函數(shù),具體事件由它負(fù)責(zé)。
四:設(shè)置MDK編譯參數(shù)信息
1.選擇CPU:

2.填寫存儲器信息:

3.編寫scatter
如果不想自己編寫此文件,KEIL會自動生成文件模板,選擇如下:
但是阿呆不推崇這中方法,這種方法讓人有種霧里看花的感覺,不明了
還是自己編寫吧:
設(shè)置如下:

Scatter文件內(nèi)容:
/*-------------------------------------------------------------
運(yùn)行域在SRAM中,可使用以下寫法,也可直接將WR,ZI段跟在ROM后面
-------------------------------------------------------------*/
LR_ROM1 0x30000000 0x01000000  {    ; load region size_region
  RO 0x30000000 0x01000000  {  ; load address = execution address
   2440_init.o (Init_2440, +First)
   .ANY (+RO)
  }
  RW 0x31000000 0x01000000  {  ; RW data
   .ANY (+RW)
  }
  ZI  +0 {
   .ANY (+ZI)
  }
}
很多同志會遇到.\OutPutFiles\uCOS-II_Uart.axf: Error: L6218E: Undefined symbol
Image$$RO$$Base (referred from 2440_init.o).
從ADS copy過來的和KEIL默認(rèn)的標(biāo)號是不一致的,修改scatter文件里面的ER_ROM1為RO標(biāo)號,RW_RAM1為
RW,以此類推即可。
阿呆安排運(yùn)行域地址從0x30000000-0x31000000,數(shù)據(jù)域地址:0x31000000-0x32000000
安排方式純屬個人愛好。
由于MDK默認(rèn)生成的輸出文件時HEX的,要使之生成BIN的需要添加一條命令:
如下:

在RUN #1,中添加:D:\ProgramFiles\KEIL\MDK\ARM\BIN40\fromelf.exe --bin -o
./OutPutfiles/uCOS-II_Uart.bin ./OutPutfiles/uCOS-II_Uart.axf
具體路徑需調(diào)整。
至此為止,uCOS-II的移植已經(jīng)完畢,阿呆沒有在uC/OS-II的具體細(xì)節(jié)上糾結(jié),而是將精力放在MDK環(huán)境
的使用上,簡單介紹了一下在KEIL MDK下編寫程序的基本步驟。
編譯之:


OK啦。
沙發(fā)
發(fā)表于 2011-4-5 14:30:15 | 只看該作者
bucuo
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 深爱激情婷婷 | 欧美午夜不卡 | 久久天天躁狠狠躁夜夜2020一 | 精品久久中文久久久 | 国产成人免费高清激情视频 | 好男人新视频社区 | 日本大片免费观看 | 12至16末成年毛片 | 高清欧美一级在线观看 | 一级毛片在线免费观看 | 欧美日韩免费在线视频 | 日韩欧美视频在线一区二区 | 一级做a爱片久久毛片 | 色久网站 | 欧美精品一区二区三区免费 | 欧美黄色大片免费观看 | 日本免费高清视频 | 一区二区三区www | 国产999视频 | 日本jizz强视频69视频 | 国产精品成人第一区 | 国产在线91精品入口首页 | 日韩一区二区三区不卡 | 亚洲欧美日韩中文综合v日本 | 在线精品视频免费观看 | 亚洲zscs综合网站 | 日日夜夜综合 | 精品在线播放 | 麻豆婷婷 | 亚洲黄色激情视频 | 国产一级三级三级在线视 | 国产精品第一区在线观看 | 四虎影视精品永久免费 | 九九热视频免费观看 | 男人插入视频 | 免费观看国产一区二区三区 | 青青青国产免费手机视频在线观看 | 99热成人精品热久久669 | 97视频在线免费播放 | 国产精品2020观看久久 | 精品国产免费久久久久久婷婷 |