uboot初体验-----趣谈nand设备发起的浅显理解
1 选择Uboot版本号
2 移植uboot至console正常work
3 制造uImage和使用uboot指南
4 写NFC驱动器
5 uboot从nand启动引导系统
1 选择Uboot版本号
正所谓“工欲善其事,必先利其器”。假设在整个过程中可以有一套友好的软硬件开发环境整个过程就比較顺利了。
戳中痛点……
对于选择Uboot的版本号。一般人都会选择最新版本号。可是新版本号必定会有些结构上的差异。因此在选择好版本号之后,一定要细致分析一下如今的uboot tree。然后选择合适的位置并合理规划文件的存放位置。详细情况见网上分析。或者自己分析。当然最重要的几个文件夹以下的文件还是一定要去看的。
a 根文件夹下的readme和Makefile这些文件会说明你须要进行的操作和自己主动化操作。
b include\configs\以下须要加入整个系统的头文件,当然能够參考三星的一些配置,并进行DIY。
c board,在这个文件夹下加入自己须要的board定义。
d arch文件夹下定义了一些跟架构相关的东西。
2 移植uboot到console可以正常work
对于移植uboot,主要是对上面的文件夹和文件进行改造。而且加入串口驱动,让系统可以正常进入控制台。
普通情况下串口仅仅要ok了,以下的各种命令也就都是可以正常work的。
3 制作uImage并使用uboot引导
制作uImage文件能够直接使用命令的方式也能够在kernel中使用make uImage命令完毕。
命令方式:
mkimage -A arm -O linux -T kernel -C gzip \
-a 0 -e 0 -n "Linux Kernel Image" \
-d linux.bin.gz uImage
注:mkimage存放在uboot\tools文件夹下。
使用make uImage的log信息为:
GEN usr/initramfs_data.cpio
AS usr/initramfs_data.o
LD usr/built-in.o
CC drivers/mtd/nand/nand_bbt.o
LD drivers/mtd/nand/nand.o
LD drivers/mtd/nand/built-in.o
LD drivers/mtd/built-in.o
LD drivers/built-in.o
LD vmlinux.o
MODPOSTvmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
KSYM .tmp_kallsyms1.S
AS .tmp_kallsyms1.o
LD .tmp_vmlinux2
KSYM .tmp_kallsyms2.S
AS .tmp_kallsyms2.o
LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
OBJCOPYarch/arm/boot/Image
Kernel:arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel:arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
ImageName: Linux-3.4.55-vimicro+
Created:
Fri Jun 6 09:15:222014
ImageType: ARM Linux Kernel Image(uncompressed)
DataSize:
3082344 Bytes = 3010.10 kB = 2.94 MB
LoadAddress: 0x80008000
EntryPoint: 0x80008000
Imagearch/arm/boot/uImage is ready
制作完毕uImage之后。须要使用移植好的uboot在命令行下进行測试。
測试方法能够使用ICE将文件download到指定内存处,使用bootm $address。
* kernel: cmdline image address = 0x80008000
beforecopy from dataflash img_addr = 0x80008000
beforecopy from dataflash img_addr = 0x80008000
##Booting kernel from Legacy Image at 80008000 ...
ImageName: Linux 3.5.15
ImageType: ARM Linux Kernel Image(uncompressed)
DataSize:
3082344 Bytes = 2.9 MiB
LoadAddress: 80008000
EntryPoint: 80008040
VerifyingChecksum ... OK
XIPKernel Image ... OK
FDTand ATAGS support not compiled in - hanging
###ERROR ### Please RESET the board ###
我擦,出错了。
只是还好顺藤摸瓜非常easy找到问题所在。FDTand ATAGS support not compiled in - hanging这个说明选择的參数传递方式就是“没选择”,那就选择吧。
选择ATAGS吧,由于RTFSC之后,发现这个比較简单。
之后就……启动成功了。
4 写NFC驱动
话不多说,动手就干。由于和kernel的架构基本同样。仅仅是须要时间进行debug。保证数据读写的正确性。
5 uboot从nand上引导系统启动
本人恰好也负责烧写工具的编写,因此比較自由的掌控整个空间规划一些结构体的定义。debug过程相对easy非常多。
时间仓促,没有赘述非常多。
希望近期可以尽快完好起来吧。
由于原创,所以进银行说跟别人有点不同。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
uboot初体验-----趣谈nand设备发起的浅显理解的更多相关文章
- BSP中uboot初体验
一. uboot源码获取 1.1. 从板级厂家获取开发板BSP级uboot(就是由开发板厂家提供的) 1.2. 从SOC厂家获取相同SOC的BSP级uboot 1.3. 从uboot官方下载 1.4. ...
- Linux内核驱动学习(三)字符型设备驱动之初体验
Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 ...
- 浅谈IT技术女转战微电商初体验
今天闲来无事,突然想翻看下之前写的技术博客,很是意外,居然那么多阅读量,于是想想做微商也有一段时间了,决定写写初入微商的初体验. 先自我介绍一下,本人是一名理工女,做IT行业的,这个行业也许有人了解, ...
- Node.js 网页瘸腿爬虫初体验
延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- Flume日志采集系统——初体验(Logstash对比版)
这两天看了一下Flume的开发文档,并且体验了下Flume的使用. 本文就从如下的几个方面讲述下我的使用心得: 初体验--与Logstash的对比 安装部署 启动教程 参数与实例分析 Flume初体验 ...
- iOS7初体验(3)——图像资源Images Assets
开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWor ...
随机推荐
- js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)
js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...
- D3D 点列练习
画四个点在窗体. #pragma once #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib& ...
- 关闭 You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
当我的MainActivity继承自v7包中的ActionBarActivity或者AppCompatActivity时,如果在style.xml文件中指定MainActivity所使用的样式如下: ...
- 基于GTID多源复制扩展
对一个运行很久的库做备份恢复建同步 不能使用xtrabackup 使用mysqldump导数据: mysqldump -S /data/mysql/3307/tmp/3307.sock --sin ...
- 【hdu 3863】No Gambling
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65568/32768 K (Java/Others) Total Submission(s) ...
- 关于使用Timer定时监测网络是否ping通
项目需要连接某台具体服务端,如果连不上则实时提示,开始使用Timer实时检测 void timer_Tick(object sender, EventArgs e) { Ping pingSender ...
- Opencv光流运动物体追踪
光流的概念是由一个叫Gibson的哥们在1950年提出来的.它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...
- Web自动化工具对比
首先说一下我对Web自动化测试与CS自动化测试的认识.从宏观对比都是通过脚本自动化完成功能的验证,区别不大.Web测试更为显著的浏览器兼容性.安全,以及与Web技术相关的表单测试.链接测试等,其实都是 ...
- Dictionary实现(收藏的)
源文献:https://www.cnblogs.com/InCerry/p/10325290.html 对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可 ...
- 使用Apache Tiles3.x构建界面布局
Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.Struts2对Tiles提供了支持,如今Til ...