u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)

本次移植跟以往的不同之处是采用了spl来引导u-boot,参考了博客http://blog.csdn.net/fulinus/article/details/42738641

下载链接:http://pan.baidu.com/s/1bnlRKgn

使用方法:

1、 编译

  make tq2440_defconfig

  make

2、 然后会在u-boot根目录下生成u-boot.bin,在spl目录下会生成u-boot-spl.bin,目前的分区是:


u-boot-spl.bin

(1M)


u-boot.bin

(1M)


kernel

(3M)


rootfs

(剩余)

自己可以改动,在arch/arm/lib/crt0.S中:

  #if defined(CONFIG_SPL_BUILD)
      /* Read u-boot from Nandflash to SDRAM address $CONFIG_SYS_TEXT_BASE */
      ldr r0, =CONFIG_UBOOT_MTD_ADDR               /*u-boot镜像在NandFlash中存储地址*/
      ldr r1, =CONFIG_SYS_TEXT_BASE                /*u-boot在内存中的加载地址*/
      ldr r2, =CONFIG_UBOOT_LENGTH                 /*u-boot镜像的大小*/

  bl  copy_code_to_sdram

  ldr pc, =CONFIG_SYS_TEXT_BASE
  #else
      bl    board_init_f
  #endif

3、目前支持NandFlash和DM9000。

4、为什么要用spl来引导u-boot?

  对于tq2440,采用的是S3C2440,当从NandFlash启动时,上电时S3C2440内部固化的程序自动把NandFlash的前4KB程序拷贝到片内SRAM,然后执行IRAM中的程序,同时要保证这4KB中的程序是位置无关码,在这4KB程序完成了内存的初始化,栈的设置,NandFlash的初始化,将u-boot镜像从NandFlash中拷贝到内存中,将PC跳转到内存中执行。

  随着u-boot的更新,在u-boot的前4K已经无法完成上面这些事,在前4KB会执行位置相关码,导致u-boot无法正常运行。

  为了解决这个问题,u-boot提供了SPL,用spl来引导u-boot,spl的体积很小,只完成将u-boot从NandFlash中拷贝到内存中,然后跳转到内存。

5、可能存在的问题:

  由于从NandFlash启动的时候,IRAM被映射到了0地址处,现在是用spl引导u-boot,所以IRAM中是spl,如果有中断发生,PC执行的是spl中程序,而不是u-boot中的,可以考虑u-boot启动后,在将u-boot的前4KB拷贝到IRAM中。

完!

时间: 2024-09-30 08:27:43

u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)的相关文章

u-boot-2015.01在tq2440上的初步移植

作者: 彭东林 邮箱: [email protected] QQ:   405728433 开发板:     tq2440 工具:       Win7 + VMware + Debian6 U-boot版本: u-boot-2015.01 Linux版本:  天嵌自带的 linux-2.6.30.4 GCC版本:     gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)   之前由于移植过u-boot-2014.04到tq2440上,现在移植u-

黑马_13 Spring Boot:04.spring boot 配置文件

13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 SpringBoot基础 四.SpringBoot的配置文件 SpringBoot配置文件类型和作用 SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties 或者 application.yml (application.yaml)进行配置. app

Qt简介、安装及在Ubuntu14.04 32位上简单使用举例

Qt是一个跨平台的C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序.Qt是面向对象的框架,很容易扩展.Qt是一个C++工具包,它由几百个C++类构成,你在程序中可以使用这些类.Qt具有OOP的所有优点. 跨平台的Qt包含了大约15个模块,所有的模块都依赖于QtCore. Qt的编译工具包括:Configure.Qmake.Moc.Uic and Rcc. Qt开发工具包括:QT  Creator.Qt Designer.Qt Assistant.Qt Ling

Mosek.ApS.Mosek.v7.1 MOSEK数学优化软件包/线性分析HEEDS.MDO.2015.04.2

Mosek.ApS.Mosek.v7.1 MOSEK数学优化软件包Mosek.ApS.Mosek.v7.1.Win32_64 2CD Mosek.ApS.Mosek.v7.1.Linux32_64 2CD Mosek.ApS.Mosek.v7.1.MacOSX 1CDMosek Optimization Tools 是一款MOSEK优化软件包,是一款用来解决大规模级别数学优化问题的软件.MOSEK提供了特定解决线性编程.混 合整数编程以及其它非线性转换优化问题.+++++++++++++++++

Ubuntu 12.04(64位)上搭建android 开发环境 (ADT 、android-studio)

1. ubuntu 12.04  64位 2. 下载: 1) Oracel JDK :http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2) ADT bundle  :http://developer.android.com/sdk/index.html 3)android -studio : http://developer.android.com/sdk/installing

opencv在arm和x86上的移植

一.开发环境 操作系统:fedora14 Opencv版本:2.0 Qt版本:4.7 arm:mini6410 交叉编译工具:arm-linux-gcc-4.5.1 二.安装与配置 Linux系统的安装,交叉Qt-creator的安装还有交叉编译工具的安装,网上说的基本都没什么问题,测试后都可以用.这里安装Qt-Creator遇到了一点小问题,按照网上的和mini6410开发手册上的安装方法太复杂了,用QtSdk-offline-linux-x86-v1.2.1.run安装方便又准确. 这篇文章

怎样把UCos-ii_在STM32上的移植

下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它能够大大加速我们 开发 stm32. 首先从 st 公司的站点下载最新的 stm32 标准外设库,写本文时最新的版本号是 V3.5.0. 解压该 zip 文件.得到例如以下目录和文件 STM32F10x_StdPeriph_Lib_V3.5.0\ _htmresc Libraries Project Utilities Release_Notes.html stm32f10x_stdperiph_lib_um.chm 当

uboot在s3c2440上的移植(5)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 9)实现u-boot对yaffs/yaffs2文件系统下载的支持. 注意:此篇对Nand的操作是基于MTD架构方式,在“u-boot-2009.08在2440上的移植详解(三)”中讲到过. 通常一个Nnad Flash存储设备由若干

uboot在s3c2440上的移植(6)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 10)u-boot利用tftp服务下载内核和利用nfs服务挂载nfs文件系统. 知识点: tftp服务的安装与配置及测试: nfs服务的安装与配置及测试: u-boot到kernel的参数传递(重点). 我们知道使用tftp下载内核