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 ...
随机推荐
- ios开发核心动画五:图标抖动效果--CAKeyframeAnimation
#import "ViewController.h" #define angle2Rad(angle) ((angle) / 180.0 * M_PI) @interface Vi ...
- Hadoop配置文件 分类: A1_HADOOP 2014-08-19 12:48 1157人阅读 评论(1) 收藏
部分内容参考:http://www.linuxqq.net/archives/964.html http://slaytanic.blog.51cto.com/2057708/1100974/ ha ...
- thinkphp,onethink,thinkox验证码不显示
使用验证码的时候,一开始正常,后来不显示了 网上说是utf-8的编码问题,什么bom去掉,转化为无bom的格式 我都试了,没用 后来知道是在调用验证码的地方 写上 Public function v ...
- [转载]剥析surging的架构思想
1.前言 2.通信机制 2.1 简介 在单体应用中,模块之间的调用通信通过引用加载方法或者函数来实现,但是单体应用最终都会因为团队壮大,项目模块的扩展和部署等出现难以维护的问题.随着业务需求 ...
- iOS:通过URL构件UIImage
非常多时候我们仅仅能得到一个URL,然后须要构建一个UIImage. 通常情况下,我们一般都是通过SDWebImage来直接构建UIImageVIew的image,怎样用URL直接构建UIImage呢 ...
- xCode中怎样保存自己的代码块
在开发iOS的过程中.xCode肯定是用得最多的工具.没有之中的一个.由于苹果官方提供的就这一个平台,尽管没有竞争对手,但秉承苹果一贯的注重细节的原则,xCode还是一款相当不错的IDE. 作为一名i ...
- 【t094】区间运算
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 区间运算是数学的一个领域.在区间运算中,常量和变量并不表示为一个单独.精确的值,而是表示为一个有着上界 ...
- Oracle数据库零散知识05 -- 表创建,修改
1.表的创建 Create table student02(sno number); 2.表的删除 Drop table student02; 3.表的重命名 Rename student02 to ...
- 【codeforces 776C】Molly's Chemicals
[题目链接]:http://codeforces.com/contest/776/problem/C [题意] 让你找区间[i,j] 使得sum[i..j]=k^t,这里t=0,1,2,3.. -10 ...
- javascript中window对象 部分操作
<!--引用javascript外部脚本--> <script src="ss.js"></script> <script> //警 ...