公板SMDK2410(S3C2410,不支持NAND FLASH)----à

蓝板SBC2410(S3C2410,添加了对NANDFLASH支持)---à

MINI2440(S3C2440,针对S3C2410与S3C2440的差异进行更改)

一、准备工作:

1、  建立工作目录

mkdir /root/build_uboot

cd /root/build_uboot

2、  把下载的源码拷贝到该目录,解压

# tar -zxvf u-boot-201003.tar.gz

二、修改文件

1、修改顶层 Makefile

在sbc2410x_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm920tsbc2410x NULL s3c24x0

后添加:

mini2440_config: unconfig

@$(MKCONFIG) $(@:_config=) armarm920t mini2440 NULL s3c24x0  (注意:如果写作者名,则下面是board/作者名/mini2440)

2、(1)在/board子目录中建立自己的开发板board/mini2440目录

cp -r board/sbc2410x board/mini2440

(2) 将sbc2410.c更名为mini2440.c

(3). /mini2440/Makefile

COBJS       :=nand_read.o sbc2410.o 改为 flash.o COBJS  := nand_read.o mini2440.o flash.o

(4)在./mini2440/mini2440.c 中,把所有SBC2410X替换为 MINI2440

3、/include/configs/

(1)把sbc2410x.h复制一份为mini2440.h

(2)把下面:

#define CONFIG_S3C2410 1         /* specifically a SAMSUNG S3C2410 SoC   */

#define CONFIG_SBC2410X      1     /* on a friendly-arm SBC-2410X Board  */

#define CONFIG_SBC2410X_LED    1

#define  CONFIG_SYS_PROMPT            "[u-boot@SBC2410X]# "      /* Monitor Command Prompt       */

改为:

#define CONFIG_S3C2440 1     /* specifically a SAMSUNG S3C2410 SoC   */

#define CONFIG_MINI2440      1     /* on a friendly-arm SBC-2410X Board  */

#define CONFIG_MINI2440_LED    1

#define  CONFIG_SYS_PROMPT            "[u-boot@MINI2440]# "       /* Monitor Command Prompt       */

4、对start.s

(1)  #if defined(CONFIG_SBC2410X_LED)

改为:#if defined(CONFIG_MINI2440_LED)

(2)下面针对2410与2440的不同作修改。找到S3C2410的宏开关“CONFIG_SBC2410X_LED”,有3个,逐个对其内容修改:

((1)) # ifdefined(CONFIG_S3C2410)

ldr   r1,=0x7ff

ldr   r0, =INTSUBMSK

str   r1, [r0]

# endif

复制一份,并修改为:

#if defined(CONFIG_S3C2440)

ldr   r1, =0x7fff

ldr   r0, =INTSUBMSK

str   r1, [r0]

#endif

((2)) #ifdefined(CONFIG_S3C2410)

/* FCLK:HCLK:PCLK = 1:2:4 */

/* default FCLK is 120 MHz ! */

ldr   r0, =CLKDIVN

mov r1, #3

str   r1, [r0]

mrc p15, 0, r1, c1, c0, 0

orr   r1, r1, #0xc0000000

mcr p15, 0, r1, c1, c0, 0      /*write ctrl register tekkaman*/

mov r1, #CLK_CTL_BASE    /* tekkaman*/

mov r2, #MDIV_200

add  r2, r2, #PSDIV_200

str   r2, [r1, #0x04]

#endif

复制一份,并修改为:

#if defined(CONFIG_S3C2440)

/*FCLK:HCLK:PCLK = 1:4:8 */

ldr   r0, =CLKDIVN

mov r1, #5

str   r1, [r0]

mrc p15,0, r1, c1, c0, 0

orr   r1, r1, #0xc0000000

mcr p15, 0, r1, c1, c0, 0

mov r1, #CLK_CTL_BASE

mov r2, #MDIV_405

add  r2, r2, #PSDIV_405

str   r2, [r1, #0x04]              /* MPLLCON */

#endif

((3)) 把下面代码中宏CONFIG_S3C2410改为CONFIG_S3C2440

#ifdef CONFIG_S3C2410

/* Offset */

#define oNFCONF 0x00

#define oNFCONT 0x04

#define oNFCMD 0x08

#define oNFSTAT 0x20

。。。

5、/cpu/arm920t/u-boot.lds

把board/sbc2410x/lowlevel_init.o (.text)

board/sbc2410x/nand_read.o (.text)

改为: board/mini2440/lowlevel_init.o    (.text)

board/mini2440/nand_read.o  (.text)

6、/lib_arm/board.c

3个地方出现CONFIG_SBC2410X_LED,改为:CONFIG_MINI2440_LED

三、   编译源代码

#cd u-boot-2010.03

#make distclean     (清除源码树)

把编译器arm-linux-gcc-4.3.2.tgz放到/usr/local/arm/并解压。并确保解压后得到/use/local/arm/4.3.2目录。

#export PATH=/usr/local/arm/4.3.2/bin:$PATH  (也可以写进~/.bashrc  或者是/etc/profile文件中)

#make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-mini2440_config  配置

#make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-all   编译

四、   烧写FLASH

最终生成的u-boot.bin可以通过supervivi菜单项里的"[a] Absolute User Application"选项 + DNW工具下载到NAND Flash中。

#printenv

#setenv serverip192.169.41.203----tftp服务器的IP地址---PC WINDOWS的IP

#setenv ipaddr192.169.41.55

#saveenv

#ping 192.169.41.203

linux之u_boot移植相关推荐

  1. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  2. 利用Linux的强大移植性和兼容性将操作系统轻松安装到硬盘

    Linux的强大移植性和兼容性将操作系统轻松安装到硬盘先前在http://dgd2010.blog.51cto.com/1539422/392310写过一篇文章,<创新性试验:我的第一次实现Li ...

  3. Linux学习笔记---移植官方linux步骤(二)

    目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...

  4. Linux学习笔记---移植官方linux步骤(一)

    使用的开发板是正点原子IMX6U-MINI  EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...

  5. Linux学习笔记---移植官方uboot步骤(二)

    在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...

  6. Linux学习笔记---移植官方uboot步骤(一)

    目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...

  7. zybo上运行linux,Zybo开发板linux作业系统移植

    文章主要介紹zybo board上linux作业系统移植过程.分别介绍了开发环境搭建.U-boot编译.linux内核编译.busybox制作等流程及注意事项.文章使用的开发板是zynq 7000系列 ...

  8. imx6ull移植Linux系统第二篇——Linux内核的移植

    imx6ull移植Linux系统第二篇--Linux内核的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot.系统镜 ...

  9. 【Linux】嵌入式Linux系统的移植(上篇:交叉编译器、连接方式)

    嵌入式Linux系统移植 嵌入式Linux系统移植是进行Linux驱动开发的基础,如果连Linux系统移植都完成不了,那就更不用说驱动开发了.因此,Linux系统移植至关重要. 嵌入式Linux系统的 ...

最新文章

  1. Mysql Cluster节点类型
  2. java属于高级语言_以下哪种语言属于高级语言________________。A、JavaB、C++C、VisualBa...
  3. windows server 2008 picture
  4. Sleepy Kaguya
  5. LINQ中ForEach方法的使用
  6. MariaDB通过命令行的方式导出指定数据库和还原指定数据库
  7. linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性
  8. java泛型区间_JAVA 14(泛型)
  9. python qq 聊天记录词云制作
  10. 人体姿态估计:OpenPose、CPN
  11. java计算矩形_用Java实现计算矩形的面积与周长
  12. QML 全屏 输入法无法显示
  13. 加班申请 ----中间表--系统自动算出---可调休天数
  14. python 10进制转2进制
  15. TrustZone软硬件架构
  16. 如何防止数据篡改和数据库泄漏
  17. 计算机网络——最全基本概念与网络分层介绍
  18. [ STK ](九)改变 3D 视图的背景颜色,设置卫星轨道的颜色,导出 3D 视图
  19. python 搜索引擎 实验楼的源码_Python语言之简历有错别字被拒绝聘用?文档被领导说?Python实现永无错别字!...
  20. 火狐和selenium,以及geckodriver的版本匹配问题

热门文章

  1. linux shell编程 ppt,《LinuxSHELL编程》PPT课件.ppt
  2. dev和media和mnt的区别
  3. YYCache 源码解析(一):使用方法,架构与内存缓存的设计
  4. 读 YYCache 源码解析
  5. 航班信息的查询与检索Java,航班信息查询与检索
  6. Mybatis,#{}和${}取值符号
  7. 快捷指令获取url内容_iphone12相机水印快捷指令怎么添加-iphone12相机水印快捷指令添加教程...
  8. DIY一把属于自己的机械键盘(五)
  9. 冥想增加了大脑振荡活动的熵
  10. (17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程