问题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. resharper激活

    1.解压后点击64位系统的IntelliJIDEALicenseServer_windows_amd64.exe      32位点击IntelliJIDEALicenseServer_windows ...

  2. jQuery基础知识点(上)

    jQuery是一个优秀的.轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),而jQuery2.0及后续版本将不再支 ...

  3. WCF的坎坷发布之路

    背景       发布WCF服务之后,总会遇到这样活着那样的错误.再加上对IIS中的一些程序应用不太熟悉,所以解决起来比较困难.网上的解决方案特别多,但都只给出了个别一种原因.经过一个下午和一个上午的 ...

  4. 运维必须掌握的Linux面试题

    1.解释下什么是GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得.修改.重新发布自由软件的权力. GNU:(革奴计划):目标是创建一套完全自由.开放的的操作系统. 自由 ...

  5. deeplearning4j——卷积神经网络对验证码进行识别

    一.前言 计算机视觉长久以来没有大的突破,卷积神经网络的出现,给这一领域带来了突破,本篇博客,将通过具体的实例来看看卷积神经网络在图像识别上的应用. 导读 1.问题描述 2.解决问题的思路 3.用DL ...

  6. [poj] 3041 Asteroids || 最小点覆盖=最大二分图匹配

    原题 本题为最小点覆盖,而最小点覆盖=最大二分图匹配 //最小点覆盖:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联. #include<cstdio> #include&l ...

  7. (转)Ant使用例子

    文章来自:http://www.blogjava.net/feng0801/archive/2014/07/29/416297.html Ant是一个Apache基金会下的跨平台的构件工具,它可以实现 ...

  8. OpenNI2安装

    1.Openni2:从官网下载linux用zip压缩包,解压再解压2.终端转到解压目录下,找到install.sh文件,执行$sudo ./install.sh 3.执行后,生成OpenNIDevEn ...

  9. python tornado对接权限中心的sdk封装

    # -*- coding: utf-8 -*- import json import requests import logging as logger from python.akskapp.scr ...

  10. linu触摸屏幕

    一..前提知识 1.Linux输入子系统(Input Subsystem): 在Linux中,输入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入子系统事件处理层(Eve ...