init_post();
return 0;
}
kernel_init先调用了prepare_namespace();然后调用了init_post函数
在prepare_namespace()函数里 调用mount_root()函数,挂载根文件系统;
三、移植linux3.4.2到JZ2440
1、解压tar xjf linux-3.4.2.tar.bz2
2、进入解压后的文件目录,修改顶层Makefile
vim Makefile
修改架构为 ARM 以及编译器
ARCH=arm
CROSS_COMPILE=arm-linux-
3、选择默认配置
find -name'*defconfig'
4、在解压后文件目录下,配置,生成.config文件
make s3c2410_defconfig
5、查看支持的单板
vim .config
6、编译
make uImage
7、u-boot2012里默认的是193机器ID,设置机器ID为362使用SMDK2440,在uboot中设置机器ID
set machid 16a
save
8、在uboot中设置启动行参数并修改smdk2440单板的晶振信息12M
bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.112:/opt/filesystem ip=192.168.1.130:192.168.1.112:192.168.1.1:255,255,255,0::eth0:off init=/linuxrc console=ttySAC0,115200
修改文件mach-smdk2440.c的晶振信息12M
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
四、修改分区
我们经常用的内核打印分区信息如下
Creating 4 MTD partitions on 'NAND':
0x000000000000-0x000000040000 : 'bootloader'
0x000000040000-0x000000060000 : 'params'
0x000000060000-0x000000460000 : 'kernel'
0x000000460000-0x000010000000 : 'rootfs'
这些分区是通过在文件linux-2.6.22.6archarmplat-s3c24xx/Common-smdk.c设置的
/* NAND parititon from 2.4.18-swl5 */
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = 'bootloader',
.size = SZ_256K,
.offset = 0,
},
[1] = {
.name = 'params',
.offset = MTDPART_OFS_APPEND,
.size = SZ_128K,
},
[2] = {
.name = 'kernel',
.offset = MTDPART_OFS_APPEND,
.size = SZ_4M,
},
[3] = {
.name = 'rootfs',
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
},
};
五、添加网卡驱动
修改arch/arm/mach-s3c24xx/mach-smdk2440.c
1 添加头文件#include 2 网卡基地址 3 添加资源和设备 /* DM9000AEP 10/100 ethernet controller */ static struct resource smdk2440_dm9k_resource[] = { static struct platform_device smdk2440_device_eth = { 综上,make uImage 完成Linux3.4.2的移植,并添加了网卡驱动。
#define MACH_SMDK2440_DM9K_BASE (S3C2410_CS4 + 0x300)
[0] = {
.start = MACH_SMDK2440_DM9K_BASE,
.end = MACH_SMDK2440_DM9K_BASE + 3,
.flags = IORESOURCE_MEM
},
[1] = {
.start = MACH_SMDK2440_DM9K_BASE + 4,
.end = MACH_SMDK2440_DM9K_BASE + 7,
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
}
};
/*
* The DM9000 has no eeprom, and it's MAC address is set by
* the bootloader before starting the kernel.
*/
static struct dm9000_plat_data smdk2440_dm9k_pdata = {
.flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};
.name = 'dm9000',
.id = -1,
.num_resources = ARRAY_SIZE(smdk2440_dm9k_resource),
.resource = smdk2440_dm9k_resource,
.dev = {
.platform_data = &smdk2440_dm9k_pdata,
},
};
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&smdk2440_device_eth,
};
上一篇:移植u-boot-2010.12.tar.bz2版本到s3c2440过程
下一篇:移植u-boot-2012.04.01到JZ2440
推荐阅读最新更新时间:2024-11-13 23:23
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LTC1515 的参考设计
- LTC2611IDD 14 位轨至轨 DAC 在 10 引脚 DFN 中的典型应用
- 使用 MAP9000 高压交流 LED 驱动器实现无闪烁的典型应用电路
- FEBFAN7688SJXA_CP14U306,基于 FAN7688SJX 306W、12V PC 应用和 12 Vsb 模块的评估板
- 具有关断功能的 ADR391ART-REEL 精密低漂移 2.500 V 负参考电压的典型应用
- 带电荷泵的STP4CMP低压4通道恒流LED驱动器典型应用电路
- TPS5430稳压模块
- 第三代双、反相开关稳压控制器
- 用于便携式的 12 位 8 通道 DAC
- 使用 ams AG 的 AS1329A-BWLT 的参考设计