Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / 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