设为首页 加入收藏

TOP

Linux 2.6.32 在Arm9(s3c2440)平台的移植(一)
2014-11-24 03:03:28 来源: 作者: 【 】 浏览:3
Tags:Linux 2.6.32 Arm9 s3c2440 平台 移植

板子用的友善的mini2440, 并且光盘提供了手册, 照猫画虎,,,,,,,,,但是遇到各种问题, 很多未解决.....原因是还没理解每层目录的Makefile和Kconfig的关系, 以及在Kernel Configure菜单树中对应的选项, so~


1


内核代码/uboot代码中中机器码的定义位置,在/root/linux-2.6.32/arch/arm/tools/mach-types 和 uboot/include/asm-arm/mach_type.h, 启动时bootloader向内核传递机器码. 如果bootloader传递给内核的机器码不匹配, 则,,,,,


2


(1)在/linux-2.6.32/arch/arm/mach-s3c2440/mach-smdk2440.c中的__init smdk2440_map_io函数中修改晶震频率:


s3c24xx_init_clocks(12000000);
s3c24xx_init_clocks(12000000);


(2) MACHINE_STAR宏(修改机器码); ///重写_machine_init(),


MACHINE_START(MINI2440, "Mini2440 Test")//第一个参数对应1中mach-types文件中的定义机器码
MACHINE_START(MINI2440, "Mini2440 Test")//第一个参数对应1中mach-types文件中的定义机器码


(3)这个mach-smdk2440.c文件对应make menuconfig中的那个选项


找到该目录的Makefile: obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o 找到该目录的Kconfig: config ARCH_S3C2440 bool "SMDK2440" #这是在configure中显示的字符 select CPU_S3C2440 select S3C2440_XTAL_16934400 select MACH_SMDK select S3C_DEV_USB_HOST select S3C_DEV_NAND help


在Configure菜单中按/查找, mach-smdk2440.o的连接条件在 System Type ->S3C2440 Machines->SMDK2440, 如果想让刚才修改的mach-smdk2440.c部分代码被编译进image, 则必须选上这个选项,


移植过程中的代码都是联动的, 改了某个.c文件的代码并想让这部分改动被编译进image, 则还要改动对应的makefile, 及kconfig文件, 最后还要在configure的菜单树中选择此选项.


3


配置选项: 执行make s3c2410_defconfig, 以及make menuconfig,


(1) make s3c2410_defconfig命令会在arch/%处理器平台%/configs/下找名为s3c2410_defconfig的文件 然后将其复制到顶层目录并改名为.config, make s3c2410_defconfig命令会遍历arch/下的所有子目录吗 不会, 因为在顶层的makefile中,


ARCH = arm #指定在arch下的子目录


CROSS_COMPILE = arm-linux- #指定调用的编译器


(2) 随后执行的 make menuconfig 会读取linux-2.6.32/.config的内容,并显示出来. 以下是更多编译命令的说明:


make mrproper --- 清理全部文件,包括.config和一些备份文件


make clean --- 清理生成文件,但会保留.config和一些模块文件


make config --- 基于文本的最为传统的配置界面,不推荐使用


make menuconfig --- 基于文本选单的配置界面,字符终端下推荐使用


make xconfig --- 基于图形窗口模式的配置界面,Xwindow下推荐使用


4


主要涉及以下几个结构体:


struct mtd_partition default_nand_part[] 单片flash对分区的定义


struct s3c2440_nand_set 板子上所有flash的sets集



struct platform_set


struct platform_device



struct s3c2410_platform_nand



(1) 更改板载nand flash的分区, 涉及文件: arch/arm/plat-s3c24xx/common-smdk.c , 修改为如下:


static struct mtd_partition friendly_arm_default_nand_part[] = {
[0] = {
.name = "supervivi",
.size = 0x00040000,
.offset = 0,
},
[1] = {
.name = "param",
.offset = 0x00040000,
.size = 0x00020000,
},
[2] = {
.name = "Kernel",
.offset = 0x00060000,
.size = 0x00500000,
},
[3] = {
.name = "root",
.offset = 0x00560000,
.size = 1024 * 1024 * 1024, //
},
[4] = {
.name = "nand",
.offset = 0x00000000,
.size = 1024 * 1024 * 1024, //
}
};
static struct mtd_partition friendly_arm_default_nand_part[] = {
[0] = {
.name = "supervivi",
.size = 0x00040000,
.offset = 0,
},
[1] = {
.name = "param",
.offset = 0x000400

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux平台下对JMagick的一个简单.. 下一篇Linux下一个检查跑批是否成功的Sh..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)