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设备发起的浅显理解的更多相关文章

  1. BSP中uboot初体验

    一. uboot源码获取 1.1. 从板级厂家获取开发板BSP级uboot(就是由开发板厂家提供的) 1.2. 从SOC厂家获取相同SOC的BSP级uboot 1.3. 从uboot官方下载 1.4. ...

  2. Linux内核驱动学习(三)字符型设备驱动之初体验

    Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 ...

  3. 浅谈IT技术女转战微电商初体验

    今天闲来无事,突然想翻看下之前写的技术博客,很是意外,居然那么多阅读量,于是想想做微商也有一段时间了,决定写写初入微商的初体验. 先自我介绍一下,本人是一名理工女,做IT行业的,这个行业也许有人了解, ...

  4. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  7. Microsoft IoT Starter Kit 开发初体验

    1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...

  8. Flume日志采集系统——初体验(Logstash对比版)

    这两天看了一下Flume的开发文档,并且体验了下Flume的使用. 本文就从如下的几个方面讲述下我的使用心得: 初体验--与Logstash的对比 安装部署 启动教程 参数与实例分析 Flume初体验 ...

  9. iOS7初体验(3)——图像资源Images Assets

    开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWor ...

随机推荐

  1. thinkphp3.2.3 自动验证 正则验证

    <?php namespace Home1\Model; use Think\Model; class ShopYuyueInfoModel extends Model { // protect ...

  2. (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

    原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...

  3. TF-IDF模型

    TF-IDF模型 1. 理论基础 由于数据挖掘所有数据都要以数字形式存在,而文本是以字符串形式存在.所以进行文本挖掘时需要先对字符串进行数字化,从而能够进行计算.TF-IDF就是这样一种技术,能够将字 ...

  4. nginx源代码分析--ngx_http_optimize_servers()函数

    这个函数做了连部分工作:1)以port为入口点 将实用的信息存放到hash表内 2)调用ngx_http_init_listening()函数 对port进行监听 1. 在ngx_http_core_ ...

  5. Android Material Design 5.0 PickerDialog

    5.0系统下的时间选择器效果图: 该项目兼容到3.0下面所以用第三方开源项目:actionbarsherlock,动画效果兼容:nineoldandroids-2.4.0.jar,格式转换器:joda ...

  6. RESET MASTER 和RESET SLAVE 命令的使用方法 注意事项

    RESET MASTER 删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库,注意  rese ...

  7. android获取和展示音乐的频谱

    做了个音乐播放器 就一直想做个加一个音乐频谱的展示界面 觉的这是一个好玩的东西,可以将耳边动听的声音形象化,仿佛眼前可以看到声音一样. 但是我在文档的开发者指南里没有讲任何有关音乐频谱的东西,最后还是 ...

  8. DOM中Event 对象如何使用

    DOM中Event 对象如何使用 一.总结 一句话总结: 1.将event作为参数传递进来,然后就可以调用event对象的各种属性和方法了. <body onmousedown="wh ...

  9. [Ramda] Difference between R.converge and R.useWith

    So what is Point-free function. Take a look this example: const getUpdatedPerson = (person) => R. ...

  10. 呈现样式UIModalPresentation

    nModal   n在iPhone开发中 pModal是一种常见的切换控制器的方式 p默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 n n在iPad开发中 pModal的使用频率也是非常高的 ...