首页 > 代码库 > Tiny6410_SMDK从SD卡直接启动裸板代码

Tiny6410_SMDK从SD卡直接启动裸板代码

     今天折腾了一天终于可以可以直接从SD卡启动6410的裸板程序了,这也让我实现了完全在linux下开发裸板代码。详细过程如下:

1.通过查SMDK6410_IROM_APPLICATION NOTE_REV 1.00,可以查到如下


其中BL1是开发板自动运行的固件代码


从上可以知道应将代码烧到最后地址-(1025+1+16)*512字节处

2.测试代码如下:

  1     .text
  2     .code 32
  3     .globl _start
  4     _start:
  5     ldr r0,=0x70000000
  6     orr r0,r0,#0x13
  7     mcr p15,0,r0,c15,c2,4 @设置外设地址和大小
  8 /*关闭看门狗*/
  9     ldr r1,=0x7e004000
 10     mov r0,#0
 11     str r0,[r1]
 12
 13     ldr r2,=0x7f008800
 14     ldr r0,=0x11110000
 15     str r0,[r2]
 16     ldr r0,=0xff0f
 17     ldr r2,=0x7f008808
 18     str r0,[r2]
 19     halt:
 20     b halt

Makefile代码如下:

  1 led.bin:led.S
  2     arm-linux-gcc -c -o led.o led.S
  3     arm-linux-ld -Ttext 0xc000000 -o led.elf led.o
  4     arm-linux-objcopy -O binary led.elf led.bin
  5
  6 clean:
  7     rm led.o led.elf
其中-Ttext 0xc000000是指加载到地址为0xc0000000处执行(查S3C6410_中文手册内存映射部分可以知道:)


3.查看我的SD卡信息如下:

shi@shi:~/ARM_C/led$ sudo fdisk /dev/sdc
[sudo] password for shi:

命令(输入 m 获取帮助): p

Disk /dev/sdc: 7742 MB, 7742685184 bytes
226 heads, 5 sectors/track, 13382 cylinders, total 15122432 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   设备 启动      起点          终点     块数   Id  系统
/dev/sdc1            2048    14858239     7428096    b  W95 FAT32

命令(输入 m 获取帮助): q
4.烧写:
shi@shi:~/ARM_C/led$ sudo dd if=led.bin of=/dev/sdc seek=7742151680 bs=1
记录了72+0 的读入
记录了72+0 的写出
72字节(72 B)已复制,0.92066 秒,0.1 kB/秒

其中seek=7742151680的数据是7742685184-(1042*512)

5.将开发板打到SD卡启动

~