分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc_第1页
分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc_第2页
分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc_第3页
分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc_第4页
分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页分享tiny4412,emmc烧录u-boot,支持fastboot模式烧写emmc前言:

按照光盘介绍编译烧写U-boot也无法启动板子,只有superboot使用后才可以启动板子。到此大家估计很多和我想的一样,如何使用开源的u-boot来启动开发板。

言归正传,我们的目的是要用u-boot来运行tiny4412.

正文:

首先要注意的是,原版的内核配置把CONFIG_ARM_TRUSTZONE给打开了,这个与superboot.bin是配套使用的,但是u-boot经研究发现暂不支持TZ模式,所以内核配置要把这个选项去掉。不然按照教程会出现死机。论坛也有很多网友发现了此现象,不再赘述。(后面有时间本人会研究下trustzone机制)

把TZ选项去掉后,通过SD卡烧录u-boot可以把板子带起来,这个不是我们要讲述的重点,我们要讲的是如何把u-boot烧录到emmc中,这个友善没有提供方法,其实不难。

emmc其实和SD卡类似,都是SD设备,emmc是8-bit模式,SD是4-bit模式。TINY4412是eMMC4.4.既然sd卡能烧,那么emmc一定可以烧。

SD卡烧录,其实通过友善教程,在U-boot源码目录下有sd_fusing.sh,打开看下即可知道烧录原理。这个不讲了,有兴趣的朋友可以看下,很见到。就是把各个bin文件按照指定位置烧到SD卡的系统分区中。

那么eMMC如何烧写呢,这是我们要讲的重点。在这里不得不讲一下DNW工具,这个可以通过USB把电脑端的文件烧录到目标板的内存中。附件是dnwLinux完整源码包,解要到一个文件夹,里面有dnw.c,Makefile,预编译dnw(x86_64).大家可以直接使用或是自己编译,编译后的dnw可以复制到/usr/bin,并chmod777/usr/bin/dnw.

u-boot中断也支持dnw指令,所以eMMC烧录就有可能了,因为电脑上的u-boot.bin固件可以通过dnw烧录到开发板的内存了。。。。

编译uboot过程友善的文档已经写的很完善,大家自己参考并编译u-boot.编译完成后u-boot目录下有:

u-boot.bin

进入u-boot/sd_fuse/执行make,可以生成mkbl2工具,

进入u-boot/sd_fuse/tiny4412目录下可以看到bl2.binE4412_N.bl1.binE4412_tzsw.bin三个bin,其中bl2.bin在制作SD启动卡时会生成,我们也需要此文件。

下面讲如何使用dnw下载固件到开发板内存,注意本人是以Ubuntu环境来调试,使用Windows的朋友自己对照流程。

1下载附件dnw编译,上面已经讲了,

2按照友善文档,制作SD启动卡,开发板SW2开关选择SD启动.

3把串口先连接PC与开发板。

4插制作好的SD卡到开发板,并给开发板上电SW1.

5键盘按任意键盘进入uboot终端,此时输入help可以看到很多指令。

6现在我们进入了SD卡模式启动的u-boot.现在我们看下mmc设备信息:

u-boot模式下输入:

>mmcinfo0

省略

>mmcinfo1

Device:S5P_MSHC4

ManufacturerID:15

OEM:100

Name:M4G1Y

TranSpeed:0

RdBlockLen:512

MMCversion4.0

HighCapacity:Yes

Size:3728MB(block:7634944)

BusWidth:8-bit

BootPartitionSize:2048KB

上面两条指令分别执行,可以发现mmc0就是我们的SD卡,mmc1设备就是我们要烧录的设备eMMC,uboot返回提示是8-bit,内存容量是4G的eMMC卡。

7继续输入:

>fdisk-p0

>fdisk-p1

partion#size(MB)blockstart#blockcountpartition_Id

1695607081214244780x0C

23201342446563040x83

3205779054842137700x83

4520500431810664940x83

这两条指令是分别查看mmc0/1设备的分区表信息。设备mmc1的分区信息,即eMMC分析,注意这个是superboot分区信息,我们就用这个分区。

分区1是FAE分区,分区2是给system的,分区3是user-data,分区4是cache.

8格式化eMMC,u-boot模式下输入如下指令来格式化eMMC设备。

>fdisk-/p>

执行后会返回分区信息,继续格式话分区1,2,3,4

>fatformatmmc1:1

这句话意思是对mmc1设备的第一分区格式作fat格式化。

>ext3formatmmc1:2

>ext3formatmmc1:3

>ext3formatmmc1:4

上面三个指令是分别对eMMC的分区2,3,4作ext3格式化。

到此我们完成了对eMMC的设备的格式化。

接下来我们要想办法烧录bl1.bin,bl2.bin,u-boot.bin,tzsw.bin烧录到eMMC中。

9从PC端下载固件到开发板Memory中。

刚才我们重点介绍了dnw,接下来我们要使用此工具来下载固件到开发板内存中。注意是下载到内存,把固件数据缓存起来,到时要烧录到eMMC中。

首先我们要打开emmc设备

u-boot下输入:

>emmcopen1

eMMCOPENSuccess.!!

!!!Notice!!!

!YoumustcloseeMMCbootPartitionafterallimagewriting!

!eMMCbootpartitionhascontinuityatimagewritingtime.!

!So,Donotclosebootpartition,Before,allimagesiswritten.!

上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧录,烧录完成后可以关闭emmc.

10接下来我们要运行dnw

u-boot下面输入:

>dnw

OTGcableConnected!

Now,WaitingforDNWtotransmitdata

提示等待数据输入,这里就是等待我们从PC端通过DNW传送数据过来。

此时在PC端终端串口,cd到u-boot目录所在路径

user@~/u-boot/:

输入:dnwsd_fuse/tiny4412/E4412_N.bl1.bin

此时u-boot中断会提示传送校验完成,此时已经把bl1.bin通过USB传送到了memeory的0xc0000000起始地址,大小8KB.

接下来我们烧录bl1.bin到eMMC中,u-boot下继续输入:

>mmcwrite10xc000000000x10

会提示写入信息,说明已经写入成功。这个是把刚才从PC端通过dnw下载下来的bl1.bin固件下载到emmc中,起始0,16个block,一个block是512B,16*512=8*1024=8KB.这个是bl1.bin的存放位置。

以此类推,烧录bl2.bin.u-boot.bin,tzsw.bin

u-boot终端继续输入:

>dnw

PC端输入:(注意输入内容是以dnw开始的,前面是当前路径,便于理解)

user@~/u-boot/:dnwsd_fuse/tiny4412/bl2.bin

u-boot下继续输入:

>mmcwrite10xc00000000x100x1C

bl2.bin实际大小约14K,分配的空间是16K.其实是第16个block开始,写入28个block,28*512B=14*1024=14K

注意这个区域预分配是32个Block,所以下一个开始是32+16=48

u-boot终端继续输入:

>dnw

PC端输入:(注意输入内容是以dnw开始的,前面是当前路径,便于理解)

user@~/u-boot/:dnwu-boot.bin

u-boot下继续输入:

>mmcwrite10xc00000000x300x21D

u-boot.bin实际大小约270K,分配的空间是328K.其实是第48个block开始,写入541个block,541*512B=270.5*1024约270K

u-boot终端继续输入:

>dnw

PC端输入:(注意输入内容是以dnw开始的,前面是当前路径,便于理解)

user@~/u-boot/:dnwsd_fuse/tiny4412/E4412_tzsw.bin

u-boot下继续输入:

>mmcwrite10xc00000000x2c00xB8

tzsw.bin实际大小约92K,分配的空间是160K.其实是第704个block开始,写入184个block,184*512=92*1024=92K

启动分区到此全部写入完成,注意一定要关闭emmc,

u-boot下继续输入:

>emmcclose1

eMMCCLOSESuccess.!!

关闭emmc设备,提示关闭成功。此时我们已经把启动文件全部烧录到了eMMC中。

接下来我们可以把开发板的SW2拨动到NAND启动,同时u-boot中断输入reset,并在电脑键盘按下任意键,此时我们可以看到:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

U-Boot2023.12-00000-g3e284d5-dirty(Jul042023-17:40:58)forTINY4412

CPU:S5PC220[SamsungSOConSMPPlatformBaseonARMCortexA9]

APLL=1400MHz,MPLL=800MHz

Board:TINY4412

DRAM:1023MiB

vdd_arm:1.2

vdd_int:1.0

vdd_mif:1.1

BL1version:N/A(TrustZoneEnabledBSP)

CheckingBootMode...EMMC4.41

REVISION:1.1

MMCDevice0:3728MB

MMCDevice1:1876MB

MMCDevice2:N/A

Read...Bootmodereg0x00000000

GetBootmodereg0xf3ca4c36

ModeKeyCheck...runnormal_boot

Net:Noethernetfound.

Hitanykeytostopautoboot:0

TINY4412#

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

大功告成啊,我们的u-boot已经成功写入到了eMMC中,并可以成功启动。

还有一件非常重要的事情我们还有做,就是启动参数写入,我们bootargs写入到env分区,注意ENV分区在TZSW分区后面,内核分区之前。即TZSW|ENV|KERNEL

从eMMC启动u-boot后,在u-boot终端输入:

>setenvbootargsconsole=ttySAC0,115200n8androidboot.console=ttySAC0uhost0=nctp=2skipcali=yvmalloc=384mlcd=S70

>saveenv

设置并保存启动参数,此时再重启板子,进入U-boot。

u-boot下输入:

>printenv

查看刚才烧录的启动参数是否成功。

11烧写kernel,system,ramdisk

下面烧kernel,system,ramdisk和SD卡烧录一样。

u-boot继续输入

>fastboot

进入fastboot模式

PC端使用fastbootflashkernelzImag,fastbootflashsystemsystem.img,fastbootflashramdiskramdisk-u.i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论