本文主要介绍了如何在Mini2440开发板上配置和移植Linux系统的bootloader U-Boot。这个过程涉及到对U-Boot源代码的修改,包括配置文件、驱动程序以及相关头文件的更新。 在移植U-Boot到Mini2440开发板时,首先需要使用的是uboot-1.1.6版本。这个版本的U-Boot适用于ARM架构的3.4.5内核。移植的第一步是通过Makefile进行配置,这里执行了smdk2410_config和mini2440_config命令来创建或更新配置文件。这两个配置文件定义了目标平台的硬件设置,比如CPU类型、内存大小等。同时,将board/smdk2410目录下的内容复制到board/mini2440目录下,因为Mini2440和SMDK2410在硬件上有一定的相似性。 接着,修改board/mini2440目录下的Makefile,将smdk2410.c重命名为mini2440.c,这是为了适配新的开发板。在Makefile中找到与smdk2410相关的行并替换为mini2440,确保编译时能正确处理Mini2440的特定代码。 在源代码层面,需要对board/mini2440/lowlevel_init.S文件进行调整。例如,修改第126行的定义,可能涉及到寄存器的初始化或计数器设置。此外,board/mini2440/mini2440.c文件的77行至84行是关于时钟频率配置的代码,其中定义了S3C2440_MPLL_400MHz和S3C2440_UPLL_48MHz常量,并使用汇编指令设置时钟分频器和MPLL控制寄存器,以达到所需的工作频率。 移植过程中还需要更新设备树。例如,修改113行,确保gd->bd->bi_arch_number设置为MACH_TYPE_S3C2440,以标识该设备使用的是S3C2440处理器。同时,可能需要将sysbuild/speed.c替换为cpu/arm920t/s3c24x0/speed.c,以适应新的处理器和SoC家族。 最后,针对Mini2440的特性,在include/configs/mini2440.h中添加或修改宏定义,如在81行添加CFG_CMD_NAND表示支持NAND闪存操作,同时在180行定义最大NAND设备数量。 总结起来,移植U-Boot到Mini2440开发板的过程主要包括:配置Makefile,修改源代码以适应Mini2440的硬件,更新设备树,以及根据需要修改或添加头文件中的宏定义。这个过程需要对U-Boot的结构、Linux内核以及Mini2440的硬件特性有深入理解。
第一步:
交叉编译器安装3.4.5
uboot源代码解压
第二步:修改配置文件
1)在主目录Makefile中仿照smdk2410_config添加两行:
mini2440_config:unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0
2) cp -a ./board/smdk2410 ./board/mini2440
cp ./include/configs/smdk2410.h ./include/configs/mini2440.h
3) cd ./board/mini2440/
mv smdk2410.c mini2440.c
vim Makefile
修改第28行 将smdk2410.o 改为mini2440.o
第三步:修改源文件,配置内存,时钟,串口波特率
1) 修改board/mini2440/lowlevel_init.S 第126行
#define REFCNT 1268
2) 修改board/mini2440/mini2440.c 77行:
77 #define S3C2440_MPLL_400MHz ((0x5c<<12)|(0x01<<4)|(0x01))
78 #define S3C2440_UPLL_48MHz ((0x38<<12)|(0x02<<4)|(0x02))
79 #define S3C2440_CLKDIVN 0x05
80 clk_power->CLKDIVN = S3C2440_CLKDIVN;
81 __asm__("mrc p15,0,r1,c1,c0,0\n"
82 "orr r1,r1,#0xc0000000\n"
83 "mcr p15,0,r1,c1,c0,0\n"
87 clk_power->MPLLCON = S3C2440_MPLL_400MHz;
3)修改113行
113 gd->bd->bi_arch_number = MACH_TYPE_S3C2440;
4)修改串口波特率
直接用sysbuild/speed.c 覆盖cpu/arm920t/s3c24x0/speed.c
5)在include/s3c24x0.h S3C24X0_CLOCK_POWER结构体最后添加:
S3C24X0_REG32 CAMDIVN;
第四步:让uboot支持从nandflash启动
1)去掉include/configs/mini2440.h 第81行注释
81 CFG_CMD_NAND | \
编译
2)在倒数第二行添加:
180 #define CFG_MAX_NAND_DEVICE 1
181 #define NAND_MAX_CHIPS 1
182 #define CFG_NAND_SE 0
编译
3)拷贝sysbuild/nand_flash.c到 cpu/arm920t/s3c24x0中
4) 在include/s3c24x0.h 中参照S3C2410_NAND添加结构体:
168 typedef struct {
剩余5页未读,继续阅读
- 粉丝: 24
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展