本人想寫一個簡單的Bootloader,以前在2410上寫過一個。是以現在想在6410上也寫一個,友善了解啟動過程。但是發現剛一起步就遇到了困惑。
以前玩ARM7、ARM9、PowerPC闆子時,都有燒寫器或下載下傳器可以将一段彙編代碼放到nor flash中運作。
但現在發現目前市面上很多6410的開發闆不太容易這麼做,很多都是沒有nor flash,要通過u-boot将程式下載下傳到Nand flash中,然後利用u-boot指令來運作nand flash裡面的彙程式設計式。
既然是裸機程式,那麼就不想闆子上同時有其他程式在運作。
這給獨立寫一個Bootloader并放到nand flash上運作程式帶來了不便。
本人買了一塊飛淩科技的OK6410開發闆,準備在上面完成這個Bootloader的工作。
第一件事情就是如何将一個裸機程式單獨的在闆子上運作。從網上找了很多資料,這篇文章http://bbs.witech.com.cn/thread-6921-1-3.html 介紹了具體方法。
我是用的是方法一:使用WinHex_14.0_SR-1_SC.exe來作為輔助軟體。使程式燒寫到SD卡中,從SD卡中啟動裸奔程式。
也就是說闆子啟動從SD卡啟動,這樣也算是真正的裸機程式了。試驗成功。
我是用的代碼如下,可以控制OK6410的LED燈。
把以下代碼編譯後。放到SD卡中,然後用SD卡啟動。
(從網上找的參考代碼,以後有時間再分析吧):
AREA Test, CODE, READONLY ; name this block of code
ENTRY ; mark first instruction
; to execute
start
B reset
reset
B main
NOP
main
ldr r0,=0x7f008820
ldr r1,=0x1111
str r1,[r0]
ldr r0,=0x7f008824
ldr r1,[r0]
ldr r2,=0x1
mov r3,#0
; bic r2,r1,#3
; orr r2,r2,#0xc
; bic r3,r1,#0xc
; orr r3,r3,#3
nn
lsl r2,#1
add r3,r3,#1
cmp r3,#4
moveq r2,#1
moveq r3,#0
str r2,[r0]
ldr r4,=5000000
delay1
sub r4,r4,#1
cmp r4,#0
bne delay1
; str r3,[r0]
; ldr r4,=5000000
;delay2
; sub r4,r4,#1
; cmp r4,#0
; bne delay2
b nn
END
作者:滄海獵人 出處:http://blog.csdn.net/embedded_hunter 轉載請注明出處 嵌入式技術交流QQ群:179012822