歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OK6410開發板裸板程序實驗-LED

OK6410開發板裸板程序實驗-LED

日期:2017/3/1 10:03:59   编辑:Linux編程

本人想寫一個簡單的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://www.linuxidc.com/Linux/2013-01/77213.htm介紹了具體方法。

我是用的是方法一:使用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

Copyright © Linux教程網 All Rights Reserved