历史上的今天
返回首页

历史上的今天

今天是: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。 

推荐阅读

史海拾趣

Evans Capacitor Company公司的发展小趣事

Evans Capacitor Company(以下简称ECC)自创立之初,就专注于电容器的技术研发。公司创始人约翰·埃文斯是一位电子工程领域的杰出人才,他带领研发团队开发出了具有更高能量密度和更长寿命的新型电容器。这一创新产品迅速在市场上获得了认可,ECC因此获得了大量的订单,公司规模逐渐扩大。

BeagleBoard公司的发展小趣事

BeagleBoard公司的创业之路始于对开源硬件和嵌入式系统的热情。面对当时市场上嵌入式系统开发工具不足的情况,公司创始人看到了巨大的机遇。他们坚信,通过提供一个开放、易用且功能强大的硬件平台,可以激发开发者群体的创造力,推动嵌入式系统领域的发展。经过数月的努力,BeagleBoard推出了首款产品——一款基于开源原则的嵌入式系统开发板,得到了开发者们的热烈响应。

Eurohm Resistors公司的发展小趣事

随着市场的不断扩张和竞争的加剧,Eurohm Resistors始终坚持品质至上的原则。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把关。这种对品质的坚守不仅赢得了客户的信任,也为公司赢得了良好的口碑。

DALLAS公司的发展小趣事

随着移动设备市场的蓬勃发展,Dallas公司敏锐地捕捉到了电池电量管理技术的市场需求。在深入研究和技术攻关后,Dallas成功推出了可编程锂离子电池电量计DS2790。这款产品集成了先进的微控制器、大容量程序和数据存储器以及精密的电池电流、电压和温度测量系统,为定制单节电池电量计的算法提供了优秀的平台。DS2790的推出不仅满足了市场需求,也为Dallas公司在电池管理技术方面赢得了声誉。

EPC公司的发展小趣事

某EPC公司在电子行业中以技术创新为核心竞争力。在早期阶段,公司专注于研发高效的电子制造技术和工艺,通过不断的技术突破,成功降低了生产成本,提高了产品质量。随着技术的不断成熟和应用,公司逐渐在行业内树立了技术领先的形象,吸引了众多客户的合作。通过与知名企业的合作,公司不断拓展市场份额,实现了快速发展。

台湾诚阳(BC)公司的发展小趣事

在电子行业的激烈竞争中,台湾诚阳(BC)公司凭借其对技术的敏锐洞察和持续创新,成功研发出一款具有颠覆性的电子产品。这款产品不仅具有高性能和稳定性,还集成了多项前沿技术,满足了市场对于高效、便捷的需求。凭借这一创新产品,台湾诚阳迅速在市场中脱颖而出,赢得了众多客户的青睐。

问答坊 | AI 解惑

纽曼MP3维修记,是不是坚定了我们DIY的决心?(转)

看到有那么多DIY MP3的东东,于是乎在网上发现了这个文章,转来看看,是不是增强了我们DIY的决心了呢? 看过一篇文章说医生将自己的病人介绍到其他医院做手术,说得出的原因是病房装修或者床位不空等,而真实原因则是本院收费严格无利可图,介绍到 ...…

查看全部问答>

LM3S8962学习心得

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 ...…

查看全部问答>

usb转多个串口的讨论

                                 使用STM32的USB转3个串口,能否实现,如果能实现,需要在ST提供的下位机程序中修改哪些地方?上位机驱动是否需要作 ...…

查看全部问答>

关于M3不同系列CAN的设置问题

用的IAR软件。2000(fury)的CAN程序拿到5791(tempest)中就有问题了。IO加了GPIOpinConfig函数。发是能发(抓到报文了),但是进不去中断。是IAR软件的设置还是程序中应该注意什么?中断程序中可以设置断点,但进不去,2000可以进去。icf文件改了 ...…

查看全部问答>

【TI视频】TI AM335x ARM微处理器概述

TI AM335x ARM微处理器(MPU)是业界性价比最高的Cortex-A8解决方案,该系列MPU的起步价格仅为5美元,能以ARM9 的价格提供ARM Cortex-A8的性能,该解决方案实现了性能、功耗以及外设集成的完美平衡,能够全面满足您对产品的要求。   $(\'swf ...…

查看全部问答>

一个串口发送的verilog程序,运行结果很奇怪

always @ (posedge txclk or posedge ld_tx_data or negedge reset) if(!reset) begin         tx_reg      …

查看全部问答>