OK6410烧写裸机代码的第一天

  以前只是用rvds和jlink在线仿真过裸机程序,掉电后程序会丢失,因此今天尝试  将裸机程序烧写进nandflash中,且重启板子后可以自动运行裸机程序。

  1、usb转串口驱动 在飞凌配套光盘里。

  2、dnw usb 驱动安装:由于PC机是win7 64位,没找到可以直接安装的驱动,所以通过DOS命令  bcdedit /set testsigning on 开启测试模式,避免系统检测驱动的数字签名证书。

  3、在虚拟机中安装交叉编译工具链 arm-linux-gcc-4.3.2.tgz:

        将文件从win7复制到linux  /home/aatorx下

        以root用户解压缩(tar xvzf arm-linux-gcc-4.3.2.tgz -C /), 解压后的编译命令存放在/usr/local/arm/4.3.2/bin/中

        vi  /etc/profile      在文件最下面添加一行  PATH=/usr/local/arm/4.3.2/bin        PS:等号两边不能有空格,如果是多个路径用分号隔开,不能有空格,如果已有PATH在后面加            :/usr/local/arm/4.3.2/bin

        source /etc/profile       使新添加的命令可以直接使用,即命令前不用加路径

4、建立led.c

#define rGPMCON (*(volatile unsigned *)(0x7f008820))
#define rGPMDAT (*(volatile unsigned *)(0x7f008824))
#define rGPMPUD (*(volatile unsigned *)(0x7f008828))

void msDelay(int time)
{
    volatile unsigned int i,j;
    for(i = 0 ; i < 20000 ; i++ )
        for(j = 0 ; j < time ; j++);
}

void GPIO_Init(void)
{
    rGPMCON = 0x11111;
    rGPMPUD = 0x00;
    rGPMDAT = 0X1F;
}

void LedTest(void)
{
    volatile unsigned int i;
    while(1)
    {
        for( i = 0 ; i < 4 ; i++ )
        {
            rGPMDAT = ~(1 << i);
            msDelay(10);
        }
    }
}

void main (void)
{
    GPIO_Init();
    LedTest();
}

5、建立init.c

.globl _start
_start:
    
    ldr r0,=0x70000000
    orr r0,r0,#0x13
    mcr p15,0,r0,c15,c2,4

    ldr r0,=0x7e004000
    mov r1,#0
    str r1,[r0]

    ldr sp,=8*1024
    bl main
halt:
    b halt

6、建立makefile

led.bin : start.o led.o
    arm-linux-ld -Ttext 0 start.o led.o -o led.elf
    arm-linux-objcopy -O binary led.elf led.bin
    arm-linux-objdump -D led.elf > led.dis

start.o : start.S
    arm-linux-gcc -o start.o start.S -c -O2

led.o : led.c
    arm-linux-gcc -o led.o led.c -c -O2

.PHONY : clean
clean :
    rm *.o led.elf led.bin led.dis

7、将三个文件放在一个文件夹中make,生成led.bin,将led.bin 拷到 windows目录下。

      打开dnw,连接usb转串口,usb线,在uboot界面进入命令行,dnw 50008000,然后从菜单栏中的usb port -> transmit 将led.bin下载到该地址。
      输入nand erase 0 100000 擦除nandflash前1Mb空间 。

      输入nand write.uboot 50008000 0 100000 将内存50008000中1Mb数据写到nandflash的前1M空间。

8、将开发板设置到nandflash启动,并启动开发板,可以看到程序运行结果。







  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值