u-boot移植---准备工作

游戏进行中 游戏进行中     2022-09-02     631

关键词:

一、工具链的制作

1.1 工具

  软件工具:crosstool-ng

  下载地址:git clone https://github.com/crosstool-ng/crosstool-ng

  crosstool-ng的环境需要libncurse5-dev 

  sudo apt-get install libncurse5-dev

  安装autoconf:  sudo apt-get install autoconf

  进入crosstool-ng目录,执行./bootstrap,生成 configure 执行文件

  检查安装环境,报什么错,就安装什么软件:./configure --prefix=`pwd`/crosstool 

  需要的软件有:

  sudo apt-get install gperf bison flex texinfo help2man gawk

  执行命令 make执行命令:

  make install

  export PATH="${PATH}:`pwd`/crosstool/bin"

1.2 开始制作

1.2.1 建立目标文件夹

  根目录下建立三个文件夹:

  mkdir src x-tools crosstool

  

1.2.2 环境

  进入crosstool目录:cd ~/.crosstool

  执行:ct-ng list-samples

  

  选择arm-unknown-linux-gnueabi 作为交差编译工具链的模版

  执行命令:ct-ng show-arm-unknown-linux-gnueabi,查看编译交差编译工具链所需要的配置

  

  下载gcc 6.3.0:wget http://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz

  

  执行命令:ct-ng arm-unknown-linux-gnueabi

  

  执行命令:ct-ng menuconfig

  

  

  选择 Target options

             *** Target optimisations ***
           (armv4t) Architecture level :指令集架构,exynos4412为armv7-a架构,-march=name
           (arm920t) Emit assembly for CPU  :CPU核心类型,  -mcpu=name
           () Tune for CPU:对CPU的优化,具体可以查看芯片手册,-mtune=name

  

  最新版本的crosstool-ng只需要选择第一二项目就好了。

  选择 toolchain options:

  

  u-boot 2016.01 不支持GCC6,因此 要把 GCC的版本改成GCC5.0版本--GCC6.0版本之间。

  保存退出。

1.2.3 编译

  执行命令:ct-ng build

  

  编译成功:

  

  建立环境变量:

  vim .bashrc,加入下面一行

  PATH=~/x-tools/arm-s3c2440a-linux-gnueabihf/bin:$PATH/

  执行 source .bashrc

   执行 arm-s3c2440a-linux-gnueabi-gcc -v

  

  u-boot 2016.01 不支持GCC6,因此 要把 GCC的版本改成GCC5.0版本--GCC6.0版本之间。

二、u-boot 工作目录建立

  下载u-boot_2016.01版本,解压u-boot。

  

2.1 board目录修改

2.1.1 创建jz2440板

  查看 ../board/samsung/ 目录下的文件:

  

  此版本中,2440已经被遗弃。所以选定smdk2410为模版创建2440的u-boot。

  

2.1.2 jz2440文件名修改

  修改文件名:

  

2.1.3 Kconfig修改

  修改Kconfig和Makefile文件,将里面的smdk2410修改为jz2440,如下:

  Kconfig文件:

  

 

2.1.4 Makefile修改

  

2.2 修改头文件

  

  头文件中增加内容:

  

  添加对S3C2440的支持

  找到包含smdk2410.h这个头文件的文件:

  

  没有需要修改的地方

2.3 修改配置文件 

  当前新版的u-boot与linux源码一样,都执行make menuconfig 进行配置,所以在configs目录下要有jz2440的配置。

  config目录下配置:

  

  

2.5 修改arch/arm下的配置文件

  arch/arm/Kconfig,里面添加对jz2440的支持

  

  

2.6 修改rch/arm/include/asm/mach-types.h

  

  

三、配置.config及编译u-boot

3.1 配置.config

  执行命令:make jz2440_defconfig

  

  执行命令:make menuconfig

  

  在ARM architecture中选择target_select项,然手选择jz2440:

  

  配置 u-boot的命令行提示符:

  

  

  保存退出配置。

3.2 编译

  

  编译成功:

  

四、编译错误

4.1 Not enough room for program headers

  arm-2440-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try linking with -N
  arm-2440-linux-gnueabi-ld.bfd: final link failed: Bad value
  make: *** [Makefile:1193: u-boot] Error 1

   解决方法:https://www.mail-archive.com/u-boot@lists.denx.de/msg235861.html

  在根目录的Makefile中加上如下几行:

  

 

u-boot移植---代码修改---支持dm9000网卡

一、准备工作1.1原理图    CONFIG_DM9000_BASE  片选信号是接在nGCS4引脚,若要确定网卡的基地址,则要根据片选信号的接口去确定。  在三星2440的DATASHEET中memorycontrol这一章的Figure5-1.S3C2440AMemoryMapafterReset已经说明了片选4的... 查看详情

u-boot移植---修改前工作:代码流程分析2

一、vectors.S1.1代码地址  vectors.S(archarmlib) 1.2流程跳转      跳转符号B为start.S中的reset执行代码,暂且先不看,先看看vector.S中的执行。1.3代码分析  ldr{条件}目的寄存器<存储器地址>1_start:23#ifdefCONFIG_SYS_DV_NOR_B... 查看详情

u-boot移植---修改前工作:代码流程分析3---代码重定位

...链接时候的地址就会生成,然后存储在段里面,如下段(u-boot.lds):     查看详情

uboot在s3c2440上的移植

...板:Mini2440--64MBNand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.08.tar.bz2二、移植步骤5)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上NandFlash的支持)。目前u-boot中还没有对2440上Nan 查看详情

u-boot-2016.07移植(第一篇)初步分析

U-BOOT-2016.07移植 (第一篇) 初步分析目录U-BOOT-201607移植 第一篇 初步分析目录编译和移植环境更新交叉编译工具1下载arm-linux-gcc4432安装arm-linux-gcc443安装环境Ubuntu910下载u-boot-201607并解压分析顶层Makefile1找出目标依赖关系2总结... 查看详情

linux系统移植:u-boot工程创建(代码片段)

文章目录Linux系统移植:U-Boot工程创建一、U-Boot文件目录二、U-Boot目录解析2.1arch文件夹2.2board文件夹2.3config文件夹2.4.u-boot.xxx_cmd文件2.5顶层Makefile文件2.6u-boot.xxx文件2.7.config文件2.8README文件三、U-Boot过程创建3.1打开工程文件夹3... 查看详情

uboot移植:移植前的准备工作

一:uboot的来源    uboot的获取途径一般有三种,一种是uboot官方提供的这uboot,这里面是针对多种开发板和芯片的uboot代码,是全球各地上传,然后由uboot官方提供的,因为它里面包含了很多种开发板的uboot,所以文... 查看详情

uboot在s3c2440上的移植

...板:Mini2440--64MBNand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.08.tar.bz2二、移植步骤4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上NorFlash的支持)。通常,在嵌入式bootloader中,有两种 查看详情

linux系统移植:正点原子u-boot移植(代码片段)

文章目录Linux系统移植:正点原子U-Boot移植一、What‘sU-Boot?1.1U-Boot简介1.2U-Boot选择二、正点原子U-Boot编译2.1编译环境2.2编译脚本三、U-Boot烧写与启动Linux系统移植:正点原子U-Boot移植一、What‘sU-Boot?1.1U-Boot简介Linux系统启... 查看详情

linux系统移植:u-boot常用指令(上)(代码片段)

文章目录Linux系统移植:U-Boot常用指令(上)一、U-Boot命令行二、U-Boot常用命令(上)2.1help帮助命令2.2信息查询命令2.3环境变量修改命令2.4内存操作命令2.5网络操作命令Linux系统移植:U-Boot常用指令(... 查看详情

移植u-boot-2012.04.01到jz2440

开发环境:Ubuntu12.04开发板:JZ2440 256MNandFlash 64MSDRAM交叉编译器:arm-linux-gcc-4.3.2u-boot:u-boot-2012.04.01            最近在学习BootLoader,移植u-boot-2012. 查看详情

tiny210(s5pv210)移植u-boot(基于2014.4版本号)——移植u-boot.bin(打印串口控制台)

...信息打印。在上节。我们看到调用relocate_code重定位。在u-boot的帮助文档doc/README.arm-relocation中对重定位有说明。u-boot为了生成位置无关码,在链接时指定了-pie选项,这个选项在u-boot-2014.04/arch/arm/config.mk中指定: 查看详情

u-boot-2014.10移植(代码片段)

1/***************************************************23*u-boot版本:u-boot-2014.1045*gcc版本:/home/flinn/tools/4.4.3/bin/arm-none-linux-gnueabi-67*89*服务器:ubuntu14.051011*1213*编译命令:makesmdk2440_config;make1 查看详情

04.移植u-boot

1.读readme获取信息   1.1由BuildingtheSoftware可知,需修改顶层makefile,指定架构和编译器   ifeq($(HOSTARCH),$(ARCH))   CROSS_COMPILE?=arm-linux-   endif   查看详情

u-boot移植

上一章节我们详细的分析了uboot的启动流程,对uboot有了一个初步的了解。前两章我们都是使用的正点原子提供的uboot,本章我们就来学习如何将NXP官方的uboot移植到正点原子的I.MX6ULL开发板上,学习如何在uboot中添加我... 查看详情

linux系统移植博文导航

...个一个交流的机会,也感谢大家的支持。Linux相关的网站U-BootLinux内核busyboxLinux系统移植Linux系统移植-前言第1章环境搭建(Exynos4412+U-boot2013.1)第1章环境搭建(imx283)第2章u-boot烧写与使用(Exynos4412+U-boot2013.1)第3章U-boot移植A(Ex... 查看详情

linux系统移植:u-boot链接脚本(代码片段)

文章目录Linux系统移植:U-Boot链接脚本一、u-boot.lds介绍二、u-boot.lds分析Linux系统移植:U-Boot链接脚本一、u-boot.lds介绍前面提到的U-Boot的本质就是一个大的裸机程序,执行的时候需要先找到程序入口,而程序的链接... 查看详情

u-boot-2016.01移植

1、了解uboot: 阅读uboot源码顶层目录下的README.TXT可以提取如下信息:    madetosupportbootingofLinuximages.  //引导内核程序    make<board_name>_defconfig:seeboards.cfgfo 查看详情