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 ...
随机推荐
- 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml 分类: H4_SOLR/LUCENCE 2014-07-23 21:30 1959人阅读 评论(0) 收藏
1.关于默认搜索域 If you are using the Lucene query parser, queries that don't specify a field name will use ...
- php实现字符串的排列(交换)(递归考虑所有情况)
php实现字符串的排列(交换)(递归考虑所有情况) 一.总结 交换: 当有abc的时候,分别拿第一位和其它位交换,第一位固定,余下的位做递归,这样有考虑到所有情况,因为第一位只可能是所有的字母,那第一 ...
- 【u110】灾后重建
Time Limit: 1 second Memory Limit: 128 MB [问题描述] B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前, ...
- spring mvc redirect 重定向 跳转并传递参数
在项目中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,具体跳转方式有以下几种方式: 公用代码: @RequestMapping(value=" ...
- Qt 无标题无边框程序的拖动和改变大小
最近做项目遇到的问题,总结下. 有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的标题栏以及最大化.最小化.关闭,菜单按钮,我们就需要 setWindowFlags(Qt::FramelessWi ...
- 安装 Visual Studio,连接中国区 Azure
中国数据中心 目前,中国区 Azure 有两个数据中心,在位置字段中显示为“中国北部”和“中国东部”. 在 Azure 上创建应用程序的区别 在中国区 Azure 上开发应用程序与在境外 Azure ...
- 【dotnet跨平台】Asp.net 正在经历的变革
[dotnet跨平台]Asp.net 正在经历的变革 Asp.net 正在经历一场变革.从官网:https://get.asp.net/ 我们能够看到多个版本号的字眼例如以下: ASP.NET ...
- 【u119】中位数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], ...
- CocoaPods详解之(三)----制作篇
CocoaPods详解之----制作篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/20067595 转载请注明出处 ...
- XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)
XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.c ...