准备分析
看似就一个LED,但是S5PV210不同于S3C2440,不是在于LED,而是在于从NandFlash启动的过程中不一样。对于S3C2440,只要程序没有问题,想办法下载程序到NandFlash的0地址处一般都是可以正常运行的,下载的方法无非采用开发板厂家下载BOOTLOADER的方法来下载。S5PV210启动时从NandFlash的0地址拷贝时候会拷贝前16k,但是会读取前16byte进行与和校验值做比较。所以略显麻烦。
资源工具
1.开发板:tiny210v2
2.关于头信息使用:mkv210_image.c
3.交叉工具链:arm-linux-gcc-4.5.1
4.LED1对应的管脚:GPI2_0
着手写程序
@******************************************************************************
@ File:start.S
@ 功能:LED点灯程序,点亮LED1
@****************************************************************************** .text
.global _start
_start: ldr R0,=0xE0200280 @ R0设为GPJ2CON寄存器。此寄存器@ 用于选择端口J各引脚的功能:@ 是输出、是输入、还是其他mov R1,#0x00000001 str R1,[R0] @ 设置GPJ2_0为输出口, 位[10:9]=0b01ldr R0,=0xE0200284 @ R0设为GPJ2DAT寄存器。此寄存器@ 用于读/写端口GPJ2各引脚的数据mov R1,#0x00000000 @ 此值改为0x00000001,@ 可让LED1熄灭str R1,[R0] @ GPJ2_0输出0,LED1点亮
MAIN_LOOP:b MAIN_LOOP
Makefile:
led.bin: start.o arm-linux-ld -Ttext 0x0 -o led.elf $^arm-linux-objcopy -O binary led.elf led.binarm-linux-objdump -D led.elf > led_elf.disgcc mkv210_image.c -o mkv210./mkv210 led.bin 210.bin%.o : %.Sarm-linux-gcc -o $@ $< -c%.o : %.carm-linux-gcc -o $@ $< -c clean:rm *.o *.elf *.bin *.dis mkv210 -f
下载运行
1.根据开发板使用手册先将superboot烧到SD卡上,在images/FriendlyARM.ini中添加"USB-Mode = yes",然后以SD卡方式启动开发板。
2.按照下图配置进行烧写,这样就烧写到了NandFlash的0地址处。
运行调试
程序简单,运行正常。
遗留问题
1.mkv210_image.c没有去分析