linux内核移植
来源:互联网 发布:exe软件封装教程 编辑:程序博客网 时间:2024/06/13 02:44
一、基本的内核移植
1、解压内核文件,进入内核问价夹
2、修改Makefile文件,修改成如下所示:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
3. 配置文件并编译内核
make smdkv210_android_defconfig
4、编译内核(编译没有产生uImage,请将编译过的u-boot源码下tools里面的mkimage拷贝到/usr/bin (这是一个命令的路径,可以通过环境变量配置),如果没有这个文件,则编译后并没有产生uImage文件) 然后进行编译make uImage
二、内核配置
1、make menuconfig(如果不成功,则安装 apt-get install libncurses5-dev)
修改底层消息和调试串行端口
System Type --->
(0) S3C UART to use for low-level messages
Kernel hacking --->
(0) S3C UART to use for low-level debug
检测系统注册外部时钟源
vim arch/arm/mach-s5pv210/mach-smdkv210.c
在94行s3c24xx_init_clocks(24000000);
2. 确定机器码
vim arch/arm/tools/mach-types
在2443行可以看出,SMDKV210评估板的机器码是2456(16进制是0x998):
2443 smdkv210 MACH_SMDKV210 SMDKV210 2456
3. 确定内核的加载地址和参数地址
vim arch/arm/mach-s5pv210/Makefile.boot
可以看出,内核的加载地址和参数地址分别为0x20008000和0x20000100,bootloader启动内核前应该将内核拷贝到0x20008000,并将参数放到0x20000100。
zreladdr-y := 0x20008000
params_phys-y := 0x20000100
4、编译内核
make uImage(最后在arch/arm/boot下生成uImage文件)
然后把这个文件拷贝到tftp 服务器目录下
三、设置u-boot的环境变量
1、setenv bootargs 'console=ttySAC0,115200 root=/dev/mtdblock4 rootfstype=yaffs rw'
2、setenv bootcmd tftp 40000000 uImage\; bootm\;
3、saveenv
4、下载内核:tftp 0x40000000 uImage
5、引导内核:bootm 0x40000000
四、如果引导不成功再进行内核配置
make menuconfig
Device Drivers --->
[*] Multifunction device drivers --->
[ ] Maxim Semiconductor MAX8698 PMIC Support
[*] Voltage and Current Regulator Support --->
< > Maxim 8698 voltage regulator (这一项没有找到,可以不管)
重新编译内核:
make uImage
五、修改nand flash分区
1、vim drivers/mtd/nand/s3c_nand.c
struct mtd_partition s3c_partition_info[] = {
{
.name = "uboot",
.offset = 0, /* for bootloader */
.size = (1*SZ_1M),
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "recovery",
.offset = MTDPART_OFS_APPEND,
.size = (5*SZ_1M),
},
{
.name = "kernel",
.offset = MTDPART_OFS_APPEND,
.size = (5*SZ_1M),
},
{
.name = "ramdisk",
.offset = MTDPART_OFS_APPEND,
.size = (3*SZ_1M),
},
{
.name = "root",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
},
};
2、nand erase 0xe00000 0xF200000
3、tftp 0x40000000 rootfs.img
4、Bytes transferred = 99090816 (0x655200)
nand write.yaffs 0x40000000 0xe00000 0x655200(要把最后一个数字改为传输的字节数!)
步骤总结:
1、解压压缩包,修改Makefile,和配置部分内核,然后进行编译,完成基本的内核移植。
2、进行内核的配置、确定机器码、内核的加载地址和参数地址等参数是否正确。然后make uImage进行编译,生成uImage镜像
3、去掉max8698电源管理芯片的驱动
4、修改NAND Flash分区
5、设置u-boot的环境变量
6、擦除root分区
7、下载根文件系统
8、烧写yaffs映像
9、下载内核,tftp 0x40000000 uImage
10、进行引导内核bootm 0x40000000
- 嵌入式Linux内核移植
- linux内核移植 s3c2440
- linux内核移植详解
- Linux内核移植问题
- linux内核移植手记
- LINUX/MIPS内核移植
- 1、linux内核移植
- linux内核的移植
- linux内核移植
- linux 内核移植 c6x
- Linux内核移植简记
- linux内核移植
- Linux内核移植
- linux内核移植
- linux内核移植简述
- S5PV210 LINUX内核移植
- linux内核移植简述
- linux--mini2440内核移植
- Ubuntu下的wxWidgets事件驱动
- 设置MPLAB
- oracle字符串求和
- FushionCharts 使用案例
- coder-strike 2014 C Kicker
- linux内核移植
- [课程地图-jsp网站]产品规格说明书
- ps常用命令举例
- TIM3的编码器模式
- tcpdump工具使用
- hello world
- ( 回溯 )uva 301 - Transportation
- Linux下DIR,dirent,stat等结构体详解
- 一步一步教你做ios推送