现在的位置: 首页 > 综合 > 正文

SD烧写裸机程序

2013年10月05日 ⁄ 综合 ⁄ 共 2489字 ⁄ 字号 评论关闭

通过Uboot 下载裸机程序

---------LED小刀初试

2013/4/15

1、这几天学习下载程序,由于各种问题(RVDS的安装,AXD的破解问题,AXF调试可执行文件),无法通过RVDS+AXD实现裸机程序运行调试。唯一可以使用的是RVDS自带的RVDEBUG软件进行寄存器的查看。

2、既然不能通过JLINK下载,借鉴SDUboot可以烧写flash,那么也就可以烧写程序。所以采用linux+gcc+arm 编译bin文件,既可以实现程序下载。

3、两种方法采用的方法:
方法一:windows 开发环境下使用RVDS+AXD>.AXF 可执行文件,通过JLINK下载

方法二:采用linux环境下,使用LINUX+GCC+ARM生成bin可执行文件,通过SDUBOOT下烧写源程序。

4、安装RVDS软件需要设置license,以及需要打补丁。

5、JLINK安装软件在(E:\飞凌\工具)文件夹下

6、看到http://blog.csdn.net/liushaowei2008/article/details/7713810这个博客使用的是SD卡下载

7、源程序

//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();

}

//start.S初始化汇编//

.globl _start

_start:

/*硬件相关设置*/

    /* Peri port setup */

    ldr r0, =0x70000000

    orr r0, r0, #0x13

    mcr p15,0,r0,c15,c2,4       @ 256M(0x70000000-0x7fffffff)

    

/*关看门狗*/

ldr r0, =0x7E004000

mov r1, #0

str r1, [r0]

/* 设置C程序运行的栈*/

ldr sp, =8*1024

bl main

halt:

b halt

//Makefile 文件//

led.bin: start.o led.o

arm-linux-ld -Ttext 0 -o led.elf start.o led.o

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

clean:

rm *.o led.elf led.bin led.dis

然后在将上述3个文件放在Linux上面编译生成led.bin可执行文件(证明了以前安装的交叉编译器没有问题,可以使用里面的arm-linux-ldarm-linux-objcopyarm-linux-objdump三个函数

8、详细操作步骤如下:

  我们将三个线连接到开发板上面:

1)开发板电源线

2)USB转串口线:一端连接电脑USB口,一端连接开发板。(com2115200

3)USB device线(minUSB):一端连接电脑USB口,一端连接开发板。(就是开发板上面的小USB口,dnw下载程序用(win7系统采用管理员权限打开,以免出现问题),请根据飞凌的资料安装好驱动程序(dnw 50008000))

硬件连接完毕,现在介绍烧写步骤。

烧写原理:用LinuxUBOOT命令 nand 烧写程序到开发板。

1) 通过SD_Writer.exe(采用管理员权限,否则出错)将mmc256.bin烧写到SD 卡中 ,将开发板设置到SD卡启动(设置为0111)。

2) 然后打开开发板,确保USB转串口连接,miniUSB 连接,

3) 把SD插入开发板SD卡槽内,选择SD启动,进入UBOOT界面(UBOOT完成CPU以及时钟的初始化)如下

DNW下输入SMDK6410 # dnw 50008000  打开USB,首先前提(配置USB地址为0x57e00000)

4) 

显示如下

SMDK6410 # dnw 50008000

OTG cable Connected!

Now, Waiting for DNW to transmit data

5)然后从dnwusbport->Transmit->Transmit发送你要生成的led.bin

6)擦出Nandflash,输入nand erase 0 100000 擦除Nandflash0开始的1MB大小的区域

7)输入 nand write.led 50008000 0 100000 将内存地址50008000中的1Mb数据写到nandflash0100000空间中。(即前1Mb中,uboot中输入的数据默认16进制)

8)开发板设置到nandflash启动(0100),并启动开发板,就可以看到4LED灯在循环亮。

抱歉!评论已关闭.