历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2018年10月12日 | Tiny210和Tiny4412裸板程序烧写比较

2018-10-12 来源:eefocus

1、Tiny4412启动时首先运行固化在芯片内部iROM中的程序,把启动设备(可能是EMMC/nand flash、SD、USB启动)特定位置处的程序读入片内存 (iRAM) ,并执行它,BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。(详情可参考博文“Exynos4412的启动过程分析”)在汇编流水灯程序中我们通过mkbl2工具制作的BL2:

    sudo ./sd_fusing.sh /dev/sdc ../../../hardware/1th_led_s/led.bin

分析sd_fusing.sh可知:

####################################

# check files

SOURCE_FILE=$2

MKBL2=./my_mkbl2

# make bl2

#使用my_mkbl2工具来处理传入的bin,从而生成bl2.bin

${MKBL2} ${SOURCE_FILE} bl2.bin 14336                                

####################################

# fusing images

signed_bl1_position=1  #bl1的镜像烧写到sd卡的第1个扇区

bl2_position=17        #bl2的镜像烧写到sd卡的第17个扇区

# BL1 fusing 

echo "---------------------------------------"

echo "BL1 fusing"

# 烧写bl1到SD卡512字节处

dd iflag=dsync oflag=dsync if=/work/4412/tools/E4412_N.bl1.bin of=$1 seek=$signed_bl1_position

# BL2 fusing 

echo "---------------------------------------"

echo "BL2 fusing"

# 烧写bl2到SD卡(512+8K)字节处, 512+8K=17x512,即第17个block

dd iflag=dsync oflag=dsync if=./bl2.bin of=$1 seek=$bl2_position

# flush to disk 

# 同步文件

sync

rm bl2.bin

####################################

# Message Display 

echo "---------------------------------------"

echo "source file image is fused successfully."

echo "Eject SD card and insert it to Exynos 4412 board again."

故Tiny4412是把裸板固件放在SD卡BL2地址处运行。

2、Tiny210(S5PV210)上电将iROM(interal ROM)处执行固化的启动代码,它对系统时钟进行初始化,对启动设备进行判断,并从启动设备中复制BL1(最大16KB)到iRAM(0xd002_0000处,其中0xd002_0010之前的16个字节存储的的BL1的校验信息和BL1尺寸)中,并对BL1进行校验,检验OK转入BL1进行执行;BL1执行完成后,开始执行BL2,BL2加载内核,把OS在SDRAM中运行起来。

S5PV210用SD/MMC启动时:

在这种模式下,BL0会跳过SD的block0,从SD的block1加载,先加载block1到0xD002_0000,通过header中的size判断需要读取多少block,然后再加载剩余的block。 最后计算除header外的数据的校验和,和header中的校验和比较,一旦匹配,则跳转到0xD002_0010。 因此,当我们选择这种方式的时候,需要给BL1的镜像加上16B的header,然后以block1位置开始存放整个镜像。

而在烧写裸板时要先把编译出来的裸板固件经过mktiny210spl.exe工具(是u-boot生成的,可以参考博文:“自己写mktiny210spl工具生成bin文件”制作一个)重新生成一个新的bin文件,而该bin文件只比旧的bin文件多出四行信息(共16字节不能够是真正的代码,而应该是头部信息),对上述内容解析:

---------------------------------------------

0x0地址:BL1 size

---------------------------------------------

0x4地址:必须设置为0 (是规定)

---------------------------------------------

0x8地址:CheckSum

---------------------------------------------

0xc地址:必须设置为0 (是规定)

---------------------------------------------

进一步解析:

BL1 size:就是用于告诉IROM中的代码,需要从外部存储器中(SD,Nand等)拷贝多大的数据到IRAM中,最多16K;

CheckSum:用作校验,当IROM将数据往IRAM拷贝完以后,会自动生成一个“校验数据”,然后会让该“校验数据”和CheckSum进行比较。

根据:“SD卡烧写210裸板、uboot”

先用mktiny210spl.exe工具生成可用的.bin文件,再用下面方法烧写:

下载sd-wy.bin文件到SD卡,PC上执行:

    dd iflag=dsync oflag=dsync if=sd-wy.bin of=/dev/sdb seek=1

下载sd-wy.bin文件到SD卡,dd命令用于对SD进行烧写,根据三星手册《S5PV210_iROM_ApplicationNote_Preliminary_20091126》,将sd-wy.bin烧写到SD卡的第1个Block,保留第0个block不用,每个block=512B。 

故Tiny210是把裸板固件放在SD卡BL1地址处运行。


推荐阅读

史海拾趣

格莱尔(GLE)公司的发展小趣事

面对日益激烈的市场竞争,格莱尔积极推进数字化转型和智能化升级。公司引入了ERP、EHR、OA等信息化系统,实现了生产、管理、销售等各个环节的信息化和智能化。同时,格莱尔还加大了对自动化生产设备的投入和研发力度,提高了生产效率和产品质量。这些举措不仅提升了企业的竞争力,也为格莱尔在未来的发展中注入了新的动力。

Changzhou Galaxy Century Microelectronics Co.,Ltd公司的发展小趣事

随着技术实力的不断提升,银河微电开始积极拓展市场。公司深入分析市场需求,针对不同行业和领域的特点,推出了定制化的产品解决方案。同时,银河微电还加大了营销力度,通过参加行业展会、举办技术研讨会等方式,与潜在客户建立联系,推动产品销售。在市场的不断拓展中,银河微电实现了跨越式发展,市场份额逐年提升。

ETAL公司的发展小趣事

在产品质量和技术水平得到认可后,ETAL开始积极拓展市场。公司制定了详细的市场营销策略,通过参加国际电子展会、与知名企业合作等方式提高品牌知名度。同时,ETAL还注重客户服务,建立了完善的售后服务体系,确保客户在使用产品过程中得到及时、专业的支持。这些举措使得ETAL的市场份额不断扩大,品牌影响力逐渐增强。

固驰(GUERTE)公司的发展小趣事

随着产品质量的不断提升和技术的持续创新,固驰电子开始积极拓展国内外市场。公司产品不仅畅销国内市场,为美的、格力、艾美特等知名企业配套,还大量出口至韩国、俄罗斯、美国、加拿大、德国等国家和地区。这一过程中,固驰电子凭借其优良的品质、满意的价格和完善的服务赢得了国内外客户的一致好评,品牌影响力显著提升。

福建国光公司的发展小趣事

固驰电子深知产品质量是企业生存之本,因此始终将品质控制放在首位。公司不仅建立了完善的质量管理体系,还通过了ISO9001:2015质量管理体系认证和美国UL产品认证,这标志着固驰电子的产品质量达到了国际先进水平。此外,公司还积极申请专利,目前已拥有50项国家专利,进一步巩固了其在行业内的技术领先地位。

European Crystal Org公司的发展小趣事

ECO始终将产品质量视为公司发展的生命线。公司建立了严格的质量管理体系,对生产过程中的每一个环节进行严格把关。此外,ECO还注重品牌形象的塑造,通过广告宣传、客户案例分享等方式提升品牌知名度和美誉度。这些努力使ECO在行业内树立了良好的口碑,吸引了越来越多的优质客户。

问答坊 | AI 解惑

UPS电源在操作员站的使用

火电厂的供电系统并不是连续而且恒定的,大型设备的启停、开关操作,电气工作段上负载长时间较大,故障情况下电气工作段的切换都会影响电力的正常供应,对计算机和微处理器产生干扰或破坏。   我公司的自动化程度较高,其设计安装采用的人机接口 ...…

查看全部问答>

模拟集成电路的分析与设计

第一次发贴支持下,不知道可不可以传上去啊!…

查看全部问答>

什么样的子程序能通用?

新手刚学,看到一些书介绍一些可以现成使用的子程序与我想象的大不一样,感到十分困惑!不禁问:类似象键盘,显示器件的这些子程序有没有通用的?…

查看全部问答>

EVC的CString是否有问题?

程序莫名奇妙得在其一个成员函数里抛出ASSERT错。同样的运行路径进行第二次,就没问题了。…

查看全部问答>

国庆散分!

想散个分,等级太低了 只能搞一百 -- 版主不要把我的贴搞到扩充板块的去了 国庆好开心 …

查看全部问答>

WCE不支持CStdioFile么?

不知道为什么 编译通过了 但是运行的时候却发生了错误: error:Debug Asesertion Failed Failed! f:\\sp\\vctors\\vc7libsce\\ship\\atlmfc\\src\\mfc\\filecore.cpp line 207   (207看不清楚不知道是297还是207) 相关的MFC函数: ...…

查看全部问答>

求助!ADI平台,USB如何虚拟出一个串口?

现在在做一网卡项目,实现的功能是当网卡插入Windows XP系统时,显示一个USB口和一个串口,其中USB口实现上网,串口用于走AT命令等,现在在Windows端的驱动程序都已有现成的,USB也可以上网了     其中卡侧是TTPcom开发环境   &nb ...…

查看全部问答>

ADSP21161N的时钟问题

请问用多片ADSP21161N时不可以用外部晶振作为CLKIN的输入吗?看ADSP21161N的数据手册24页这么说的,不知道是不是理解错了。想用FPGA来驱动4片ADSP21161N时钟信号,现在不知道该怎么办了。。。请高人指点,谢谢。…

查看全部问答>

cs5523问题

小弟才毕业,要设计一个工业遥控器带摇杆的,请问谁有CS5523的相关应用电路,发我看看,谢谢 QQ674118202…

查看全部问答>

新手求助 J-LINK连接问题

新买的arm开发板,芯片型号:STM32F103VET6, 编译器:IAR,仿真器:J-LINK。下载程序的时候提示:API Error: Debugger tries to select a device after communication with the target CPU has already been performed. Device selection not exec ...…

查看全部问答>