u-boot-2010.3移植到Tiny6410问题总结
问题1:
u-boot-2010.3中nand_spl文件夹的作用:实现从Nandflash启动在编译是会建立几个链接文件,用这几个链接文件生成u-boot-spl-16k.bin
nand_spl/board/samsung/smdk6400文件下有config.mk,Makefile和u-boot.lds三个文件,看看这三个文件再加上uboot根目录下的makefile文件就可以大概明白nand_spl这种方式是如何实现的了:
在uboot根目录下的makefile中有:
$(obj)u-boot-nand.bin:nand_spl $(obj)u-boot.bin
cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
是将两个bin档用这种方式合并成一个bin档!!!
更具体点说,就是在nand_spl目录下的u-boot-spl.bin做了以下事情:
1.设置cpu为svc模式
2.关闭开门狗和中断
3.初始化系统时钟
4.禁用MMU和Cache
5.初始化sdram控制器
6.设置sp,跳到刚才提到的nand_boot.c里面的nand_boot函数,这个函数初始化nand的控制器,并将4K之后的u- boot.bin image从nand中load到sdram中,然后跳转到u-boot.bin image的开始处继续后续的工作。
具体说明见:http://blog.csdn.net/dndxhej/article/details/8227565
问题2:
bootm函数只能引导uImage内核,不能引导zImage内核,可以用uboot的mkimage工具将zImage转换为uImage,其实uImage只不过是在zImage的基础上添加了64字节的头部,里面包含一些内核的信息,bootm函数需要读取这些信息!当然我们自己也可以直接在bootm中加几行代码是它支持Zimage的启动!
问题3:
uboot启动后出现 raise: Signal # 8 caught 原因是因为程序中有些地方的被除数值为0导致的。
大多数情况下是因为调用do_div这个宏引起的问题,我出现这个问题是因为timer_init这个函数设置错误,导致其他地方调用延时程序的时候出现 raise: Signal # 8 caught问题。
问题4:
当Uboot启动后出现无限重启状态并打印出一下信息:
data abort
pc : [<57e141a8>] lr : [<57e09964>]
sp : 57ffff9c ip : 00000015 fp : fe8f73ac
r10: 7f4af2dd r9 : 075afcd2 r8 : 25ff46db
r7 : 63a7bb97 r6 : dbcb1ef5 r5 : 57e33e80 r4 : 00001298
r3 : 57e34158 r2 : 57e30230 r1 : 00000064 r0 : ffffffff
Flags: NzCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
这是因为程序调用到了一个没有程序的内存位置:pc的值是cpu当前执行指令的内存地址(也就是程序出错的地方)
lr的值是调用程序的内存地址
通过这两个值我们可以地位到当前程序执行的位置以及是哪个调用程序使pc值为当前值。
问题5:
arm处理器的函数参数传递机制:r1存储函数的第一个参数,r2存储函数的第二个参数,以此类推;
知道这个机制,我们可以在汇编程序中调用C语言函数并传递参数给调用函数,当然在调用前先要设置好栈。
问题6:
uboot设置环境变量问题:出现问题*** Warning - bad CRC, using default environment
看env_ini()函数前面的注释就能明白个大概,注释中说,这段代码将在nand_init()之前调用,所以在这段 函数中是无法从nand里面读取到存储到的环境变量的,这里先假设环境变量是可用的,设置gd—>env_valid =1;然后在env_relocate ()会进行真正的判断。这也说明在拜读别人的代码的时候,仔细阅读下别人的注释也是多么的重要啊!
问题7:
在进行Uboot的移植时我们需要多次重复下载Uboot到Nandflash中去观察现象。如果用SD卡下载的话会非常的麻烦,友善之臂提供的MiniTools工具在win7下经常无响应根本就不能好使用,幸亏他提供了一个在Linux下的MiniTools工具,而且在Linux下的Minitools非常稳定,下面介绍一下怎样使用MiniTools下载Uboot到Nandflash:
(注意:较老版本的superboot好像不支持USB模式,换一个新的superboot烧写到SD卡就行)
1、设置在images/FriendlyARM.ini的文件中加入:USB-Mode = yes
2、将开发板设置为SD卡启动,此时MiniTools和开发板就链接上了
3、在下载选项中选择Linux选项,可以看到有一个下载Uboot的选项,
我们每次只需要选择那一个选项然后设置好文件路径就行
问题8:
uboot-2010.3尽然不支持烧写文件系统到Nandflash,导致我以后制作根文件后竟然不能烧写到Nandflash进行测试!搞得我又想移植uboot-2012.4了!
u-boot-2010.3移植到Tiny6410问题总结的更多相关文章
- u-boot移植为tiny6410步骤
1. 修改顶层Makefile文件 2. 修改arch/arm/cpu/arm1176/s3c64xx/cpu_init.S 3. 修改arch/arm/cpu/arm1176/s3c64xx/Mak ...
- 移植SDL运行库到Tiny6410 上
在移植游戏之前, 我们首先需要将 SDL/SDL_mixer/SDL_ttf/SDL_image 这四个库移植到 Tiny6410 上, 另外还需要 iconv 库. libiconv-1.13.1. ...
- 移植u-boot-2012.4到Tiny6410_1G_Nandflash
Uboot-2012.4的启动流程: 自从Uboot-2010后的Uboot在文件结构和启动流程方面都有非常大的改变,所以移植Uboot-2012.4的时候还是费了我不少时间, 首先在编译Uboot的 ...
- DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)
春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...
- linux常用的BootLoader U-boot的前世今生
U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目.U-Boot的作用是系统引导. U-Boot从FADSROM.8xxROM.PPCBOOT逐步发展演化而 ...
- 向tiny6410中移植中移植linux-4.5.1内核(最新)
下载linux-4.5.1.tar.gz 解压在任意目录下.我解压在/home/tiny6410/ # tar xvzf linux-4.5.1.tar.gz # cd linux-4.5.1/ 修改 ...
- 向tiny6410移植tslib(tslib-1.4)
环境:RedHat 已安装交叉编译器 tslib版本:1.4 首先在redhat文件系统的/usr/local/tslib 创建目录 拷贝源代码tslib-1.4.tar.gz到/usr/local/ ...
- linux(TINY6410)下移植boa服务器
今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包 我这里用的是 boa-0.94.13.tar. ...
- X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来
<<<<<<<<<<<<<<<<<<<<<<<<< ...
随机推荐
- CSU-1986 玄学
题目链接 http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1986 题目 Description 阴阳师子浩君,最近从<初等数论 ...
- 搭建springmvc项目404,没扫描到包
搭建简单项目完成之后,曾经出现过一个问题 跳转报了404,控制台忘了没留啊... 反正意思就是说我配置有问题,导致没有扫描到注释的类 <context:component-scan base-p ...
- codeforces school mark(贪心)
///太渣,看了题解才知道怎么做,自己想感觉想不清楚 ///题解:首先在给出的序列里判断小于median的个数,若大于(n-1)/2,则不满足,否则看另一个条件 ///这样我们可以把中位数左边还要添加 ...
- JS设置、获取DOM自定义属性
jQuery方式 // 获取 $('#test').attr('mydata'); // 设置 $('#test').attr('mydata','data-content'); // 移除 $('# ...
- Apache2.4启动时报AH00526错误(Invalid command 'Order')
在WIN XP下手动配置PHP环境,安装Apache2.4+fastcgi后,重启Apache服务,出现如下提示: AH00526: Syntax error on line 293 of D:/ph ...
- XML格式化及解析
XML格式化工具:notepad++ 下载地址 http://rj.baidu.com/soft/detail/13478.html?ald 一个教程地址:http://jingyan.ba ...
- python和shell对比
python和shell都是我们经常使用的脚本语言,平时python主要用来写一些小型的任务,shell则在使用liunx系统部署任务的时候用的比较多,由于两者有一些相似之处,时间长了容易混掉,所以这 ...
- go环境安装
选择想要安装的版本: http://golangtc.com/download tar -zxf go1.8.linux-amd64.tar.gz cp -R go/ /usr/local/ vi / ...
- 高级全局API钩取 - IE连接控制
@author: dlive @date: 2017/02/14 0x01 调试IE进程 常见网络连接库:ws2_32.dll(套接字),wininet.dll,winhttp.dll 使用Proce ...
- 【转】Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
原文链接:http://dblab.xmu.edu.cn/blog/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单, ...