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非常多。
时间仓促,没有赘述非常多。
希望近期可以尽快完好起来吧。
由于原创,所以进银行说跟别人有点不同。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
最新文章
- 3.基础点的移动web
- Nopcommerce 二次开发2 WEB
- C#----使用WindowsMediaPlayer 同时播放多个声音
- 关于ADDED_TO_STAGE事件
- shell exit 0 exit 1
- SharePoint 2013 开发——工作流架构
- BLP模型
- (转载)java基础:关于java流与文件操作
- hashCode花式卖萌
- 关于linux中的 秘钥认证 ,最清晰解读
- Linux下PHP扩展pdo_mysql
- Linux进程管理 (1)进程的诞生
- HTML&;javaSkcript&;CSS&;jQuery&;ajax(八)
- Real Time Rendering 2
- epoll 触发模式
- 在压缩话单中过滤指定IP的一个小脚本
- 搜索引擎(Solr-索引详解)
- javaweb笔记全套
- Solutions for common Android development problems with the Eclipse IDE- Tutorial
- c#pdf查看器
热门文章
- PHP中出现BOM字符\ufeff,PHP去掉诡异的BOM \ufeff
- apche commons项目简介 分类: B1_JAVA 2014-06-26 11:27 487人阅读 评论(0) 收藏
- Intent七在属性之一:ComponentName 分类: H1_ANDROID 2013-11-10 10:54 1184人阅读 评论(1) 收藏
- 菜单之一:Menu基础内容 分类: H1_ANDROID 2013-11-03 00:23 906人阅读 评论(0) 收藏
- Docker容器应用日志查看
- DisplayPageBoundaries 打开word后自动将页面间空白隐藏 (auto+定时器)
- 学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难
- html5和html的区别是什么(精问)
- KVM,QEMU核心分析
- CocoaPods详解之(三)----制作篇