S5PV210的BL1应用

来源:互联网 发布:linux 用户列表 编辑:程序博客网 时间:2024/05/22 08:07
准备分析

        经过了对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

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


         代码目录结构清晰很多:
0 0
原创粉丝点击