历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

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

2018-10-14 来源: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。 


推荐阅读

史海拾趣

Diotec Electronics Corp公司的发展小趣事

面对全球化的市场趋势,Diotec开始实施全球化战略。公司加强与国际市场的联系,积极开拓海外市场。同时,Diotec还加强与全球合作伙伴的合作,共同推动电子行业的发展。展望未来,Diotec将继续坚持技术创新和品质至上的理念,致力于成为全球领先的电子元器件供应商。同时,公司还将关注新兴市场和技术趋势,为未来的发展做好充分准备。

帝特(DTECH)公司的发展小趣事

帝特在国内市场取得一定成绩后,开始积极拓展国际市场。公司在中国区开设了广州、深圳分公司,并在泰国和马来西亚等地设立了分公司和专卖店。通过全球化的战略布局,帝特的产品销售网络遍布东南亚、中东、非洲和美洲等国家和地区,公司的知名度和市场份额均得到了显著提升。

G-Mag Usa公司的发展小趣事

在20世纪90年代初,G-Mag Usa公司由一群电子工程师创立,专注于研发高性能的半导体芯片。当时,市场上对于小型化、低功耗的芯片需求日益增长。G-Mag通过不断的技术创新,成功研发出了一种新型低功耗处理器,该处理器在保持高性能的同时,能耗降低了30%。这一技术突破迅速吸引了众多智能手机制造商的注意,G-Mag因此迅速崛起,成为半导体行业的佼佼者。随着智能手机市场的爆发式增长,G-Mag的芯片出货量也随之飙升,公司规模迅速扩大。

Chip Supply Micro Devices公司的发展小趣事

在微电子器件领域,Chip Supply Micro Devices凭借一项创新技术,成功打破了市场格局。公司研发出了一种新型低功耗芯片,不仅提高了电子设备的性能,还降低了能源消耗。这一技术突破使得Chip Supply Micro Devices迅速获得了市场的认可,产品销量激增。公司借此机会扩大生产规模,加大研发投入,进一步巩固了其在微电子器件市场的地位。

Dalian Dlicap Corporation公司的发展小趣事

2023年12月29日,大连达利凯普科技股份公司在深圳证券交易所创业板正式挂牌上市,股票代码为301566。这一里程碑式的事件标志着公司进入了一个新的发展阶段。上市融资将为达利凯普提供更多的资金支持和发展机遇,公司将继续加大研发投入和市场拓展力度,不断推动技术创新和产业升级。同时,达利凯普也将积极履行社会责任和义务,为电子行业的发展做出更大的贡献。

请注意,这些故事概要基于现有信息整理而成,具体细节可能因时间、环境等因素而有所不同。

EUPEC [eupec GmbH]公司的发展小趣事

随着市场的不断变化和客户需求的升级,EUPEC意识到品牌重塑的重要性。公司开始着手进行品牌升级和形象重塑工作,通过加强品牌宣传、提升产品质量和服务水平等方式,不断提升EUPEC品牌的知名度和美誉度。这些努力使得EUPEC在市场上树立了良好的形象,成为电力半导体领域的知名品牌。

问答坊 | AI 解惑

JLINK V8使用问题

新买了一个JLINK V8,用来调试STM32板子,可以单步调试,但是怎么都不能单步仿真呀!哪位熟悉的大哥指点一下吧,谢谢! 说明:STM32是我买的一块开发板,应该没有问题。…

查看全部问答>

stm32f10X系列MPU的keil仿真问题.

发现了一个keil仿真软体的BUG.   USART_DeInit(USART1);   USART_InitStructure.USART_BaudRate = 115200;   USART_InitStructure.USART_WordLength = USART_WordLength_8b;   USART_InitStructure.US ...…

查看全部问答>

嵌入式开发的具体介绍

有谁能给我介绍一下嵌入式开发,我是学电子通信类的,以后准备搞嵌入开发,我对这方面得东西不是很了解,懂一点windows驱动的开发,好像嵌入式开发要涉及很多的东西,不知具体要学些什么内容,我对单片机了解一些,需要c和汇编的基础,这我都具备了 ...…

查看全部问答>

win7 PB5.0兼容性问题

请问大家有没有在Win7下用PB5.0的。可以兼容吗?…

查看全部问答>

12864液晶如何显示温度单位C前面的。小圆

12864液晶如何显示温度单位C前面的。(小圆),在字库中找到一个是2个字节的,我想要一个1个字节的,怎么办…

查看全部问答>

大家好,做嵌入那个版本更比较好?

大家好,做嵌入那个版本更好? 我用的redhat9.0,但是有些开发工具编译不过去.比较头痛! 大家都用什么操作系统?那个比较稳定?…

查看全部问答>

关于isl7135的转换

我读出的转换结果始终是0,而且超限报警一直为高电平,用电位器模拟输入,无论怎样更改输入电压,都是如此…… 这会是什么原因呢? 我的程序逻辑应该没有错,读出的数据只有位码,而对应的BCD码却都为零,这说明寻址正确了…… 等待解答..... …

查看全部问答>

哪位朋友有锂离子蓄电池蓄能电池行业标准!

 哪位朋友有锂离子蓄电池蓄能电池行业标准!…

查看全部问答>

FPGA中AD转换代码,看不懂,谢谢各位大哥了~

我是初涉FPGA的新手,买回开发板,照着例子做,现在在研究AD转换方面的东西,可是看到verilog编的语言这里,看不懂,还需要各位前辈对小弟进行指导,对于伸出援助之手的大哥,小弟不胜感激~我现将代码贴上:`timescale 1ns / 1ps// synthesis trans ...…

查看全部问答>