歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

本人想寫一個簡單的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