tiny4412开发板实现uboot引导启动android 5.0.2系统
来源:互联网 发布:Mac任务管理器 编辑:程序博客网 时间:2024/06/05 21:50
1目的
实现uboot引导启动android 5.0.2系统。
2 现有环境
友善之臂tiny 4412开发板,superboot引导启动android5.0.2系统,内核版本为linux3.0.8。
3 搭建方案
3.1 技术上两种主流方案
1. 利用uboot生成bin文件,连同系统镜像文件烧写到SD卡,通过SD卡来引导开发板启动uboot,再启动android环境。
2. 利用uboot生成bin文件,烧写至SD卡,引导开发板uboot,用OTG数据线连接PC和开发板,再通过DNW程序,将镜像文件烧写到开发板的emmc 中,实现android环境启动。
3.2 方案比较
方案一对SD卡要求比较高(质量和速度),且中间过程出错后得重头开始,深刻教训!方案二循序渐进,不足之处是操作繁琐,但是比较稳定可靠,中间出错可及时修正。
经过了多次操作,我个人建议选择方案二。
4 实施步骤
本文档选择以方案二来介绍。
4.1 前提准备
4.1.1 linux环境准备
1.arm-linux-gcc-4.5.1 交叉编译器
2. linux-3.0.8-tiny4412 linux内核 → 编译出zImage镜像
3. android 5.0.2源码 编译android镜像文件
4. uboot源码 生成启动引导文件
5. 安装minicom 串口程序
6. 安装dnw 数据传输程序
7. 安装fastboot
8. SD卡(容量4G至32G之间)、串口线、OTG线
4.1.2 几点说明
1. gcc环境变量设置,极易出错,两种方式:(1)终端命令export PATH=$PATH:xxxxxxxxxxxxxxxxxxxxxxxx;(2)修改bashrc文件。
2. uboot 源码不能用友善之臂光盘里的源码,比较旧了,生成的bin文件不能引导新生产出来的开发板启动。
3. 生成linux内核镜像和android镜像,编译特别耗时间,尤其是android镜像,对环境要求极高,务必提前准备好环境!
4.2 生成4个bin文件
一共是4个bin文件,E4412_N.bl1.bin、 bl2.bin、uboot.bin和E4412_tzsw.bin。
1.解压 uboot_tiny4412.tgz 并进入相应的目录
tar xzfuboot_tiny4412-20130729.tgz
2. 配置 uboot 并编译
cduboot_tiny4412
maketiny4412_config
make
3. 编译用于生成bl2 的工具
make -Csd_fuse
执行完就可以生成这4个bin文件。
4.3 制作SD启动卡
1. 用fat32的文件格式来格式化SD卡
2. 将bin文件烧写到SD卡上
cdsd_fuse/tiny4412
./sd_fusing.sh /dev/sdc
需要注意的是:若SD卡已被PC Linux识别为/dev/sdc1、/dev/sdc2等时,烧写的命令里还是用 sdc,万万不可用sdc1。
4.4 启动开发板
1.开发板设置为SD卡启动(参照用户手册拨动S2开关),放入SD卡。
2. 连接串口线,配置minicom。
minicom -s
┌─────[configuration]──────┐
│ Filenames and paths
│ File transferprotocols
│ Serial port setup <== 选择这一项
│ Modem and dialing
│ Screen and keyboard
│ Save setup as dfl
│ Save setup as..
│ Exit
│ Exit from Minicom
└─────────────────┘
enter进入,按下面所示配置修改保存。
┌───────────────────────────┐
│ A - Serial Device : /dev/ttyUSB0
│ B - Lockfile Location : /var/lock
│ C - Callin Program :
│ D - Callout Program :
│ E - Bps/Par/Bits : 115200 8N1
│ F - Hardware Flow Control :No
│ G - Software Flow Control :No
│
│ Change which setting?
└───────────────────────────┘
Save setup as dfl 保存成默认,然后Exit退出minicom。
3. 开发板加电,若开发板正常引导uboot, 按任意键启动uboot命令行模式
4.5 格式化emmc
1. 对emmc进行分区
可以通过fdisk -p 0 和fdisk -p 1两条命令来查看SD卡和emmc分区信息,由于当前是从SD卡启动,所以0代表SD卡,1代表emmc,后期如果S2开关拨回nand启动,则0表示emmc。
fdisk -c 1 820 1557520
emmc一共4G容量,这里的数值表示system 820M,userdata 1557M,cache 520M
说明:1. emmc分区的空间(4个区),其中system的空间大致控制在system.img容量的2倍左右;2. uboot中,对tiny4412.h文件修改,传输块的transfer_buffer_size设置应该比system.img(550M左右)容量稍大,我设置的是0x28000000,约640M(uboot初始值为0x18000000)。
2. 分区格式化
执行后会返回分区信息,继续格式话分区1,2,3,4
fatformat mmc1:1
对mmc 1设备的第一分区格式作fat格式化,接下来依次格式化2、3、4分区(扩展分区)作ext3格式化。
ext3format mmc1:2
ext3format mmc1:3
ext3format mmc1:4
4.6 烧写emmc
4.6.1. 将bin文件写入emmc
本操作要使用dnw程序,依次将E4412_N.bl1.bin、bl2.bin、 uboot.bin和E4412_tzsw.bin这4个文件写入。
1. 首先要打开emmc设备,在u-boot下输入:
emmc open 1
minicom会提示如下信息:
eMMC OPENSuccess.!!
!!!Notice!!!
!You mustclose eMMC boot Partition after all image writing!
!eMMC bootpartition has continuity at image writing time.!
!So, Do notclose boot partition, Before, all images is written.!
2. 上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧写,烧写完成后可以关闭emmc,一共要经过4轮烧写。
轮次
uboot端
PC端
1
dnw
dnw sd_fuse/tiny4412/E4412_N.bl1.bin
mmc write 1 0xc0000000 0 0x10
起始0, 16个block, 一个block是512B, 16*512=8*1024=8KB. 这个是bl1.bin的存放位置
2
dnw
dnw sd_fuse/tiny4412/bl2.bin
mmc write 1 0xc0000000 0x10 0x1C
bl2.bin实际大小约14K,分配的空间是16K. 其实是第16个block开始,写入28个block, 28*512B=14*1024=14K,这个区域预分配是32个Block,所以下一个开始是32+16=48
3
dnw
dnw u-boot.bin
mmc write 1 0xc0000000 0x30 0x21D
u-boot.bin实际大小约270K,分配的空间是328K. 其实是第48个block开始,写入541个block, 541*512B=270.5*1024 约270K
4
dnw
dnw sd_fuse/tiny4412/E4412_tzsw.bin
mmc write 1 0xc0000000 0x2c0 0xB8
tzsw.bin实际大小约92K,分配的空间是160K. 其实是第704个block开始,写入184个block, 184*512=92*1024=92K
3. 最后要关闭emmc
emmc close 1
这时,可以退出SD卡,并将S2开关拨到nand启动,重启开发板,就可以从emmc启动uboot了,也就表示uboot已经成功刷入emmc了。
4.6.2 将镜像文件烧写入emmc
安装fastboot,通过fastboot将zImage、system.img、ramdisk-u.img三个镜像分别烧写至emmc的不同分区。
1. 连接好OTG数据线,uboot命令行模式下输入fastboot,等待pc端传输数据
2. PC 端分别使用如下命令:
fastboot flashkernel zImage
fastboot flashsystem system.img
fastboot flashramdisk ramdisk-u.img
即可把剩下全部的镜像烧写至tiny4412开发板的emmc中。
3. 设置环境变量,关系到开发板的正常启动
在uboot上设置kernel命令行参数:
setenv bootargs console=ttySAC0,115200n8androidboot.console=ttySAC0 lcd=S702
saveenv
4. 重启开发板,就可以启动开发板上的android系统了。
- tiny4412开发板实现uboot引导启动android 5.0.2系统
- Android驱动(二)串口操作之tiny4412开发板实现串口通讯的两种方法
- 【Tiny4412--2】Uboot移植
- android开发板实现关机功能
- Tiny4412 Android 启动流程
- tiny4412 uboot分析(2)
- MSP430F149小系统开发板实现RS232串口通信
- MSP430F149小系统开发板实现USART数据接收中断
- Uboot的启动流程--以友善之臂tiny4412开发板为例
- Tiny4412 Android 5.0 编译系统学习笔记
- tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)
- Tiny4412 uboot
- 友善之臂tiny4412使用SD卡烧录uboot,并使开发板从SD卡启动进入uboot过程记录。
- 手把手移植tiny4412开发板uboot
- 6410 uboot启动引导分析
- 手把手教你深度定制tiny4412安卓5.0系统(一)---开发板如何预置文件到android系统
- 手把手教你深度定制tiny4412安卓5.0系统(一)---开发板如何预置文件到android系统
- tiny4412平台linux系统内核启动问题
- Android常用混淆
- CocoaPods 的使用
- 《机器学习实战》学习笔记(二、k-近邻算法)
- Android设置强制书评
- Python分组内排序
- tiny4412开发板实现uboot引导启动android 5.0.2系统
- 数组函数
- Java Web开发Session超时设置
- [Ext JS 6 By Example 翻译] 第1章 – 入门指南
- 《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制
- Genymotion安装及使用教程详解
- Spring+Mybatis 多数据源配置
- [LeetCode]92. Reverse Linked List II
- word常用技巧