博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】U-BOOT之三:u-boot移植一
阅读量:4919 次
发布时间:2019-06-11

本文共 3405 字,大约阅读时间需要 11 分钟。

   主要讲述和总结了在学习嵌入式 linux 中的每个步骤。一为总结经验,二希望能作为记录在以后的学习工作中为自己的查询和巩固提供方便。

一、移植前言

      基于ARM的Linux嵌入式开发一直是自己希望从事的行业,但是在实际工作中相关的项目很少,只能自己根据兴趣爱好利用业余时间进行把玩和学习,希望经过自己的努力能有所成,希望在以后能进入该行业。Liunx嵌入式开发要求具有ARM硬件原理、C/C++和Linux系统开发等等的知识,所要学习的知识比较广。好在如今网络发达,能在网上找到各位大侠前辈们的学习总结,给我的学习提供了很大的帮助,在学习的记录中有很多内容是直接引用前辈们的,感谢!闲话少说,干正事了。

二、移植环境

      主 机:VMWare7--Ubuntu10.4
      开发板:Mini2440--128MB Nand
      编译器:arm-linux-gcc-4.3.2.tgz
      u-boot:u-boot-2009.08.tar.bz2

1. 了解 u-boot 主要的目录结构和启动流程,如下图。

U-boot主要目录说明
u-boot 的 stage1 代码通常放在 cpu/xxxx/start.S 文件中,他用汇编语言写成;
u-boot 的 stage2 代码通常放在 lib_xxxx/board.c 文件中,他用 C 语言写成。
各个部分的流程图如下:
U-BOOT启动流程图
2. 建立自己的开发板项目并测试编译。
         目前 u-boot 对很多 CPU 直接支持,可以查看 board 目录的一些子目录,如:board/samsung/目录下就是对三
星一些 ARM 处理器的支持,有 smdk2400、smdk2410 和 smdk6400,但没有 2440,所以我们就在这里建立自己
的开发板项目。
        1)因 2440 和 2410 的资源差不多,主频和外设有点差别,所以我们就在 board/samsung/下建立自己开发板的项
目,取名叫 mini2440
[plain]
  1. #tar -jxvf u-boot-2009.08.tar.bz2 //解压源码  
  2. #cd u-boot-2009.08/board/samsung/   //进入目录  
  3. #mkdir mini2440 //创建 mini2440 文件夹  
#tar -jxvf u-boot-2009.08.tar.bz2 //解压源码 #cd u-boot-2009.08/board/samsung/ //进入目录 #mkdir mini2440 //创建 mini2440 文件夹        2)因 2440 和 2410 的资源差不多,所以就以 2410 项目的代码作为模板,以后再修改
[html]
  1. #cp -rf smdk2410/* mini2440/ //将 2410 下所有的代码复制到 2440 下  
  2. #cd mini2440 //进入 mini2440 目录  
  3. #mv smdk2410.c mini2440.c  //将 mini2440 下的 smdk2410.c 改名为 mini2440.c  
  4. #cd http://www.cnblogs.com/../   //回到 u-boot 根目录  
  5. #cp include/configs/smdk2410.h include/configs/mini2440.h //建立 2440 头文件  
  6. #gedit board/samsung/my2440/Makefile //修改 mini2440 下 Makefile 的编译项,如下:  
  7. COBJS :mini2440.o flash.o   //因在 mini2440 下我们将 smdk2410.c 改名为 mini2440.c  
#cp -rf smdk2410/* mini2440/ //将 2410 下所有的代码复制到 2440 下 #cd mini2440 //进入 mini2440 目录 #mv smdk2410.c mini2440.c //将 mini2440 下的 smdk2410.c 改名为 mini2440.c #cd http://www.cnblogs.com/../ //回到 u-boot 根目录 #cp include/configs/smdk2410.h include/configs/mini2440.h //建立 2440 头文件 #gedit board/samsung/my2440/Makefile //修改 mini2440 下 Makefile 的编译项,如下: COBJS := mini2440.o flash.o //因在 mini2440 下我们将 smdk2410.c 改名为 mini2440.c
       3)修改 u-boot 跟目录下的 Makefile 文件。查找到 smdk2410_config 的地方,在他下面按照 smdk2410_config 的
格式建立 my2440_config 的编译选项,另外还要指定交叉编译器.
[plain]
  1. #gedit Makefile  
  2. CROSS_COMPILE ?= arm-linux-    //指定交叉编译器为 arm-linux-gcc  
  3. smdk2410_config  :  unconfig //2410 编译选项格式  
  4. @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0  
  5. mini2440_config :  unconfig   //2440 编译选项格式  
  6. @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 samsung s3c24x0  
#gedit Makefile CROSS_COMPILE ?= arm-linux- //指定交叉编译器为 arm-linux-gcc smdk2410_config : unconfig //2410 编译选项格式 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0 mini2440_config : unconfig //2440 编译选项格式 @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 samsung s3c24x0
说明:arm :
CPU 的架构(ARCH)
arm920t:CPU 的类型
mini2440:对应在 board 目录下建立新的开发板项目的目录
samsung: 新开发板项目目录的上级目录,如直接在 board 下建立新的开发板项目的目录,则这里就为 NULL
s3c24x0:CPU 型号
*注意:编译选项格式的第二行要用 Tab 键开始,否则编译会出错
      4)测试编译新建的 my2440 开发板项目
[plain]
  1. #make distclean    //清除以前编译生成的文件  
  2. #make mini2440_config //如果出现 Configuring for mini2440 board...则表示设置正确  
  3. #make //编译后在根目录下会出现 u-boot.bin 文件,则 u-boot 移植的第一步就算完成了  
#make distclean //清除以前编译生成的文件 #make mini2440_config //如果出现 Configuring for mini2440 board...则表示设置正确 #make //编译后在根目录下会出现 u-boot.bin 文件,则 u-boot 移植的第一步就算完成了
      到此为止,u-boot 对自己的 mini2440 开发板还没有任何用处,以上的移植只是搭建了一个 mini2440 开发板 u-boot
的框架,要使其功能实现,还要根据 mini2440 开发板的具体资源情况来对 u-boot 源码进行修改。
posted on
2012-02-03 10:55  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/Neddy/archive/2012/02/03/2336709.html

你可能感兴趣的文章
如何使用Log4j?
查看>>
sql 递归显示所有父节点
查看>>
hdu_1558_Segment set(并查集+计算几何)
查看>>
【洛谷2633】Count on a tree(树上主席树)
查看>>
简析平衡树(二)——Treap
查看>>
初学计算几何(一)——点与向量·叉积与点积
查看>>
668. Kth Smallest Number in Multiplication Table
查看>>
多线程——死锁
查看>>
清楚float浮动的四种方法
查看>>
解决Your content must have a ListView whose id attribute is 'android.R.id.list'
查看>>
bzoj5192: [Usaco2018 Feb]New Barns
查看>>
结对-航空购票系统-结对项目总结
查看>>
GitHub创建项目,保存代码。
查看>>
sed 小结
查看>>
LeetCode #3 Longest Substring Without Repeating Characters (M)
查看>>
Python 乱码问题解决办法
查看>>
单例模式易错分析
查看>>
【BZOJ4827】【HNOI2017】礼物
查看>>
Struts2
查看>>
编写高质量代码改善C#程序的157个建议——建议63:避免“吃掉”异常
查看>>