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卡(容量4G32G之间)、串口线、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系统相关推荐

  1. tiny4412开发板Android篇_2基于tiny4412的Android系统的编译

    tiny4412开发板使用的android系统版本是android5.0.2,由友善之臂公司提供,下载网址: https://pan.baidu.com/s/1pnn6N8Wpsx8PISLmKT59 ...

  2. PYNQ-Z1开发板通过QSPI FALSH启动UBOOT

    PYNQ-Z1开发板通过QSPI FALSH启动UBOOT 前期准备工作 安装虚拟机和ubuntu 安装petalinux 安装vivado和SDK 下载PYNQ-Z1的board file文件 方法 ...

  3. tiny4412搭建linux开发环境,[Tiny4412] 移植 Linux4.4 到 Tiny4412 开发板上

    一. 前言 一直以来都是基于 Linux-2.6 内核学习嵌入式,但是工作之后发现,主流的 kernel 早已经不再使用 platform device 结构去描述设备信息了,而是换成了更为简洁的 d ...

  4. 开发板设置从nfs启动

    开发板设置从nfs启动 16年4月16日15:43:13 (一) 设置PC的ip地址: 我采用的方法是通过一根交叉网线连接开发板与PC机,这时候需要设置PC机的ip如下所示: 此时,电脑是没法上网的. ...

  5. 在Ubuntu中搭建nfs服务,使用X210开发板在uboot中用nfs加载系统测试

    1.注意事项 注意Winshared文件夹由于权限问题,不能作为服务器地址使用 2.安装相关应用 sudo apt-get install nfs-kernel-server,安装服务器 3.建立服务 ...

  6. tiny4412开发板LED灯驱动写法

    简介 led灯成本很低,操控简单,在嵌入式产品中不可或缺,可以作为调试标识,状态指示等等,高级用法还可以作为呼吸灯进一步增强其美观性.本章介绍只控制led灯的亮灭,tiny4412开发板有四个LED灯 ...

  7. tiny4412开发板时钟操作示例

    在上一节总我们介绍了<Exynos4412芯片的时钟管理单元>,有了上一节的基础知识我们就可以写程序操作CPU的时钟了.通过操作led来感受时钟速率的变化.本文总共有三个示例,第一个是写一 ...

  8. 【北京迅为】《iTOP-3568开发板快速测试手册》-第2章 Android11系统功能测试

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  9. 【北京迅为】《iTOP-3568开发板快速测试手册》第4章 Buildroot系统功能测试(3)

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

最新文章

  1. BZOJ1058 [ZJOI2007]报表统计 set
  2. java-第十一章-类的无参方法-计算器运算
  3. C++ Primer 5th笔记(chap 12 动态内存)weak_ptr
  4. web安全---XSS漏洞之标签使用2
  5. mysql mgr CONSuL_Mysql MGR + Consul + Consul-template + Haproxy 搭建mysql 高可用集群 (三)...
  6. Python实现计算机屏幕任意区域截图
  7. ueditor编辑器图片自定义存放目录及路径修改
  8. java构造方法,构造代码块,静态代码块的执行顺序
  9. Multidimensional Scaling (MDS)
  10. 16.2互联网媒体信息讽刺识别
  11. 高通的快充协议_高通发布QC5.0快充技术最高100W+功率!手机厂商私有协议更好...
  12. 人类能看懂的衍射光学(含基尔霍夫衍射,瑞利--索末菲衍射,夫琅禾费衍射,角谱衍射,菲涅尔衍射积分,菲涅尔衍射的S-FFT算法,T-FFT算法,D-FFT算法)
  13. 软件测试报告模板怎么写,这篇文章告诉你
  14. SPSS 检验后显著性识别
  15. 通过console线登录交换机
  16. Atitit 工程师程序员技术级别对应表与主要特征 P1--p6 说明 类别 职称 对应技术标志 P5 高级工程师 工程师类 一般四五年 P6 资深开发 工程师类 78年经历 P7 P7
  17. 四旋翼飞行器6——光流传感器简介
  18. 拼团商城是如何盈利的?
  19. Echarts实战案例代码(9):图表纹理填充的解决方案(柱图为例)
  20. RK3228H开发之Android开发

热门文章

  1. JQuery在IE中function ()报错函数未定义
  2. 入门电机系列之5编码器
  3. C51单片机基础之串口编程实战
  4. 你不必使用弱引用以避免内存泄漏
  5. 在Apple Watch上找不到“i”图标的解决方法
  6. 关于JeecgBoot 的项目理解、使用心得和改进建议
  7. opencv-python:读取视频,不改变视频分辨率修改视频帧率
  8. 一目了然的 Node.js Windows10 安装篇
  9. IBM最新洞察:我们所熟知的通信服务时代已经结束
  10. jsp有哪些动作作用分别是什么?