|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于簡(jiǎn)單啟動(dòng)代碼的問(wèn)題 |
| 作者:eyuge2 欄目:ARM技術(shù) |
用實(shí)驗(yàn)教程的時(shí)候,碰到問(wèn)題。在這里向大家請(qǐng)教。 書中的開始的幾個(gè)C語(yǔ)言的例子中,都有簡(jiǎn)單的啟動(dòng)代碼,啟動(dòng)很長(zhǎng)一部分是完成RW的數(shù)據(jù)從載入?yún)^(qū)向執(zhí)行區(qū)的轉(zhuǎn)移,以及ZI部分的清零。當(dāng)然此時(shí)的設(shè)置沒有用到分散加載文件,只是使用的了簡(jiǎn)單的RO RW命令行。 看到后面的TCP實(shí)驗(yàn),這時(shí)看啟動(dòng)代碼(startup.s),關(guān)于轉(zhuǎn)移和清零的部分沒有找到。在軟件仿真的過(guò)程中,執(zhí)行到 B _Main的時(shí)候會(huì)出現(xiàn)反匯編窗口,請(qǐng)問(wèn)窗口中的程序是不是就是用來(lái)完成這個(gè)功能的?這段代碼的源文件在哪里?謝謝 |
| 2樓: | >>參與討論 |
| 作者: dragonman 于 2006/3/23 16:47:00 發(fā)布:
answer 使用_main,編譯時(shí)自動(dòng)會(huì)加上初始化應(yīng)用環(huán)境的代碼,如果不用_main,則須自行加上. |
|
| 3樓: | >>參與討論 |
| 作者: bbb_ATK 于 2006/3/24 14:15:00 發(fā)布:
RE 我做過(guò)一次的,也是用LPC2210,程序在片外FLASH。主要是使用了分散加載來(lái)實(shí)現(xiàn)的。定義一個(gè)PI類型的加載區(qū)(首地址已知),然后在這個(gè)區(qū)定義它的執(zhí)行區(qū),首地址就是RAM里面運(yùn)行的地址。程序里面需要有copy代碼,copy完了就跳到RAM執(zhí)行區(qū)首地址開始運(yùn)行,當(dāng)然加載文件中要用(+FIRST)把主函數(shù)定義到最開始的地方。 |
|
| 4樓: | >>參與討論 |
| 作者: eyuge2 于 2006/3/24 14:51:00 發(fā)布:
能否具體一點(diǎn),謝謝! |
|
| 5樓: | >>參與討論 |
| 作者: bbb_ATK 于 2006/3/24 15:36:00 發(fā)布:
RE 程序: RAMSTRADDR EQU 0x40001000 ROMSTRADDR EQU 0x80007000 RamRouteLen EQU 0x00001000 RETURNADDR EQU 0x80001000 AREA BOOTLOADER,CODE,READONLY BootLoader LDR R0,=ROMSTRADDR LDR R1,=RAMSTRADDR LDR R2,=RamRouteLen LoadLoop LDR R3,[R0],#4 STR R3,[R1],#4 SUBS R2,R2,#4 BNE LoadLoop LDR LR,=RETURNADDR LDR PC,=RAMSTRADDR 分散加載: ROM_LOAD2 0x80007000 PI 0x1000 { ROM2_EXEC 0x40001000 0x1000 { UartLoad.o(MainMenu,+First) UartLoad.o(+RO) MyFile.o(+RO) rt_memcpy_w.o(+RO) } } |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |