问题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的启动!

  附带:uboot的工具mkimage使用方法

问题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问题总结的更多相关文章

  1. u-boot移植为tiny6410步骤

    1. 修改顶层Makefile文件 2. 修改arch/arm/cpu/arm1176/s3c64xx/cpu_init.S 3. 修改arch/arm/cpu/arm1176/s3c64xx/Mak ...

  2. 移植SDL运行库到Tiny6410 上

    在移植游戏之前, 我们首先需要将 SDL/SDL_mixer/SDL_ttf/SDL_image 这四个库移植到 Tiny6410 上, 另外还需要 iconv 库. libiconv-1.13.1. ...

  3. 移植u-boot-2012.4到Tiny6410_1G_Nandflash

    Uboot-2012.4的启动流程: 自从Uboot-2010后的Uboot在文件结构和启动流程方面都有非常大的改变,所以移植Uboot-2012.4的时候还是费了我不少时间, 首先在编译Uboot的 ...

  4. DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)

    春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...

  5. linux常用的BootLoader U-boot的前世今生

    U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目.U-Boot的作用是系统引导. U-Boot从FADSROM.8xxROM.PPCBOOT逐步发展演化而 ...

  6. 向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/ 修改 ...

  7. 向tiny6410移植tslib(tslib-1.4)

    环境:RedHat 已安装交叉编译器 tslib版本:1.4 首先在redhat文件系统的/usr/local/tslib 创建目录 拷贝源代码tslib-1.4.tar.gz到/usr/local/ ...

  8. linux(TINY6410)下移植boa服务器

    今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包  我这里用的是 boa-0.94.13.tar. ...

  9. X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

随机推荐

  1. packstack测试环境安装heat

    虚机all in one环境测试安装heat [root@armstrong ~]# tmux at -t mysql MariaDB [(none)]> CREATE DATABASE hea ...

  2. sublime3 Package Control和 中文安装

    sublime3中文版需要使用PackageControl,所以首先需要安装PackageControl 一.PackageControl安装: 1.点击Preferences > Browse ...

  3. java中从实体类中取值会忽略的的问题

    在我们java Map中通过get来取值时会忽略的问题是:如果取得一个空值null时,那么.toString()时就会出错,而且不知道是什么原因. 现在我给的具体方法是用条件表达式先判断一下. 例: ...

  4. hdu 1195 Open the Lock (BFS)

    Open the Lock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. glibc内存泄露以及TCmalloc 简单分析

    最近开发一个私人程序时碰到了严重的内存问题,具体表现为:进程占用的内存会随着访问高峰不断上升,直到发生OOM被kill为止.我们使用valgrind等工具进行检查发现程序并无内存泄露,经过仔细调查我们 ...

  6. GCC 中 -L、-rpath和-rpath-link的区别

    GCC 中 -L.-rpath和-rpath-link的区别 来源 http://blog.csdn.net/q1302182594/article/details/42102961 关于这3个参数的 ...

  7. [NC189A]数字权重

    题目大意:有一个$n$位的数,设第$i$位为$a_i$(最高位为$a_1$).问满足$(\sum\limits_{i=2}^n(a_i-a_{i-1}))==k$的数的个数(不含前导零) 题解:发现$ ...

  8. 洛谷 P4139 上帝与集合的正确用法 解题报告

    P4139 上帝与集合的正确用法 题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新 ...

  9. 《R语言实战》读书笔记--第三章 图形初阶(二)

    3.4添加文本.自定义坐标轴和图例 很多作图函数可以设置坐标轴和文本标注.比如标题.副标题.坐标轴标签.坐标轴范围等.需要注意的是并不是所有的绘图函数都有上述的参数,需要进行验证.可以将一些默认的参数 ...

  10. 《c程序设计语言》读书笔记-4.12-递归整数转字符串

    #include <stdio.h> #include <math.h> #include <stdlib.h> void itoa_num(int n, char ...