×
单片机 > 单片机程序设计 > 详情

S5PV210的BL1应用

发布时间:2024-05-13 发布时间:
|

准备分析


经过了对NandFlash的操作现在可以熟练的读NandFlash了,这时候单独将启动代码整理成BL1就显得很必要了,不然整个程序会显得很乱,以后的裸机就可以只考虑自己,不用考虑启动的事了。

资源工具


同《 S5PV210的LED应用(一)》

NandFlash: K9GAG08U0F (2G)

对应代码:9.bl1


着手写程序


(1) 在工程目录添加一个新目录名字为BL1。

(2) 将mkv210_image.c移动到BL1目录中。

(3) BL1.bin需要的目标文件有start.o nand_cp.o以及uart.o。

(4) 由于BL1中将不再链接main.o,那么start.o在链接时候就会找不到“main”这个在main.c中的符号。这里可以在nand_cp.c中以弱符号的方式在nand_cp.c添加一个空的main函数,内容如下:

// BL1 main()

void main(void) __attribute__((weak, alias("__main")));

void __main(void) {};

这个程序不会被执行,所以没有任何的影响。

(5) BL1标中添加Makefile,内容如下:


all: BL1.bin


BL1.bin: start.bin

gcc mkv210_image.c -o mkv210

./mkv210 start.bin BL1.bin

cat BL1.bin ../210.bin > ../BL1210.bin

start.bin:

cp ../start.o ../nand_cp.o ../uart.o ./

arm-linux-ld -o start.elf start.o nand_cp.o uart.o

arm-linux-objcopy -O binary start.elf start.bin

arm-linux-objdump -D start.elf > start_elf.dis



clean:

rm *.o *.elf *.bin *.dis mkv210 -f

(6) 在工程目录中的Makefile中去掉对mkv210的操作,将可执行文件统一命名为210.bin,这样在BL1目录中的Makefile中会自动将BL1.bin和210.bin制作在一起命名为BL1210.bin。Makefile内容如下:

all:210.bin

make -C ./BL1


led.bin: start.o main.o nand_cp.o uart.o

arm-linux-ld -Ttext $(CONFIG_SYS_TEXT_BASE) -o led.elf $^

arm-linux-objcopy -O binary led.elf led.bin

arm-linux-objdump -D led.elf > led_elf.dis


210.bin: led.bin

cp led.bin 210.bin

%.o : %.S

arm-linux-gcc -o $@ $< -c -fno-builtin


%.o : %.c

arm-linux-gcc -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) -o $@ $< -c -fno-builtin


clean:

rm *.o *.elf *.bin *.dis mkv210 -f

make clean -C ./BL1/


下载运行


同《 S5PV210的LED应用(一)》

下载文件:BL1210.bin


运行调试

程序可以运行起来了,如图所示:


代码目录结构清晰很多:


遗留问题

1.这个BL1也算是V1.0版本的,日后再丰富一点,让其更通用一点。

2.COPY_BL2_SIZE的大小不统一,目前是8k。

3.还没有涉及到DRAM。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TQ210天嵌开发板S5PV210 LED闪烁程序C语言代码记录