历史上的今天
今天是:2025年04月02日(星期三)
2020年04月02日 | S5PV210的BL1应用
2020-04-02 来源:eefocus
准备分析
经过了对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。
史海拾趣
|
看到有那么多DIY MP3的东东,于是乎在网上发现了这个文章,转来看看,是不是增强了我们DIY的决心了呢? 看过一篇文章说医生将自己的病人介绍到其他医院做手术,说得出的原因是病房装修或者床位不空等,而真实原因则是本院收费严格无利可图,介绍到 ...… 查看全部问答> |
|
1. 学习LM3S8962只要有51单片机基础就可以学习.它使用Keill编译. 下载可以用多种方法下载.并且是接用keil软件下载,并不要安装其它软件,操作方法,快捷.而且还可以用keil在线认真调试, 非常不错的功能. 下 ...… 查看全部问答> |
|
PlaySound()与WaveOutWrite()有什么区别? PlaySound()与WaveOutWrite()有什么区别? PlaySound()是否是WaveOutWrite()的上层函数?也就是事实上PlaySound也是调用了WaveOutWrite()? 那么,到底是用哪个层次的函数来播放声音好呢? 另外,PlaySound()的第一个参数可以使文件的路径名也可 ...… 查看全部问答> |
|
#include #define uchar unsigned char int flag; unsigned int count; sbit l1 = P1^0; sbit l2 = P1^1; sbit l3 = P1^2; sbit s1 = P1^3; //第一个红外开关 sbit s2 = P1^4; ...… 查看全部问答> |
|
死在Calibrating delay loop... 怎么解决?不要嫌分少啊。 我编写了一个针对某块芯片的framebuffer代码 修改了 drives/video 下相应的Config.in fbmem.c Makefile文件 在make menuconfig中也做了相应的修改 我用的是MIPS 编译好的代码在板上跑的时候总是死在Calibra ...… 查看全部问答> |
|
用的IAR软件。2000(fury)的CAN程序拿到5791(tempest)中就有问题了。IO加了GPIOpinConfig函数。发是能发(抓到报文了),但是进不去中断。是IAR软件的设置还是程序中应该注意什么?中断程序中可以设置断点,但进不去,2000可以进去。icf文件改了 ...… 查看全部问答> |
|
TI AM335x ARM微处理器(MPU)是业界性价比最高的Cortex-A8解决方案,该系列MPU的起步价格仅为5美元,能以ARM9 的价格提供ARM Cortex-A8的性能,该解决方案实现了性能、功耗以及外设集成的完美平衡,能够全面满足您对产品的要求。 $(\'swf ...… 查看全部问答> |
|
always @ (posedge txclk or posedge ld_tx_data or negedge reset) if(!reset) begin tx_reg … 查看全部问答> |




