fl2440内核移植
2017-03-19 14:12
260 查看
可以参考这个博客http://blog.csdn.net/u010944778/article/details/42007063
我是结合郭工的视频还有文档进行的内核移植
首先从官网下载内核,https://www.kernel.org/,我用的是linux-3,0
解压tar -xjf linux-3.0.tar.bz2
cd linux-3.0
修改Makefile vim Makefile
- ARCH ?= $(SUBARCH)
- CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+ARCH ?= arm
+CROSS_COMPILE?= /opt/buildroot-2012.08.packet/buildroot-2012.08/arm920t/usr/bin/arm-linux-(交叉编译器自己制作,我是之前已经做好了,注意路径)
# This allow a user to issue only 'make' to build a kernel including modules
# Defaults to vmlinux, but the arch makefile usually adds further targets
all: vmlinux
+ cp arch/arm/boot/zImage . -f
+ mkimage -A arm -O linux -T kernel -C none -a 30008040 -n "Linux Kernel" -d zImage \ linuxrom-s3c2440.bin
+ rm -f zImage
(注意在这里不能用空格代替tab)
@@ -1201,6 +1204,7 @@
-o -name '.*.rej' -o -size 0 \
-o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
-type f -print | xargs rm -f
+ @rm -f linuxrom-s3c2440.bin
修改晶振频率
-- s3c24xx_init_clocks(16934400);
+ s3c24xx_init_clocks(12000000);
修改驱动:
-- #define S3C24XX_SERIAL_NAME "ttySAC"
+ #define S3C24XX_SERIAL_NAME "ttyS0"
Make menuconfig
在这里可以执行export TERM=vt100,使界面更好看,还可以显示一些隐藏的选项
![](https://img-blog.csdn.net/20170319142545621?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm1sMTk5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
.修改MACHINE ID设备编号
vim arch/arm/tools/mach-types
![](https://img-blog.csdn.net/20170319142720903?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm1sMTk5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
make
进行分区
vim arch/arm/plat-s3c24xx/common-smdk.c
根据自己的需要进行分区:
分区很关键,关系到Linux根文件系统的移植,还有u-boot里环境变量的设置
我现在遇到的问题就很头痛
这是我的分区:
![](https://img-blog.csdn.net/20170319144220993?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm1sMTk5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
MTDPART_SIZE_FULL自动设置地址
因为总共只有256M,不要超过了
make
Ok 内核做完了!
问题总结:
make 提示Makefile:560: *** missing separator. Stop.
我用空格代替了tab键 再makefile里命令行前面只能用tab键,否则会误认为空格也是命令。
cp arch/arm/boot/zImage . -f
mkimage -A arm -0 linux -T kernel -C none -a 30008000 -e 30008040 -n "Linux kernel" -d zImage linuxrom-s3c2440.bin
/bin/sh: mkimage: command not found
make: *** [all] Error 127
没有mkimage包,在u-boot/tools下将它cp到usr/bin
DRAM: 64 MiB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x100000, size 0x800000
8388608 bytes read: OK
## Booting kernel from Legacy Image at 30008000 ...
Image Name: Linux kernel
Created: 2017-03-12 14:03:43 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2332436 Bytes = 2.2 MiB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
输入命令 set bkr 'tftp 30008000 linuxrom-s3c2440.bin;nand erase 100000 800000;nand
write 30008000 100000 800000'
没有加 ‘
0x000000000000-0x000000100000 : "bootloader"
ftl_cs: FTL header not found.
0x000000100000-0x000001000000 : "linux"
ftl_cs: FTL header not found.
0x000001000000-0x000003800000 : "rootfs"
ftl_cs: FTL header not found.
0x000003800000-0x000009c00000 : "apps"
ftl_cs: FTL header not found.
0x000000000000-0x000010000000 : "data"
ftl_cs: FTL header not found.
重新配置内核,取消下面三个选项(红色部分)。
在Make menuconfig时:
Device Drivers ->
Memory Technology Devices (MTD) ->
不要选择下面这三个选项
<>FTL (Flash Translation Layer) support
<> NFTL (NAND Flash Translation Layer) support
<>INFTL (Inverse NAND Flash Translation Layer) support
参考:http://blog.csdn.net/u012611092/article/details/41349721
我是结合郭工的视频还有文档进行的内核移植
首先从官网下载内核,https://www.kernel.org/,我用的是linux-3,0
解压tar -xjf linux-3.0.tar.bz2
cd linux-3.0
修改Makefile vim Makefile
- ARCH ?= $(SUBARCH)
- CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+ARCH ?= arm
+CROSS_COMPILE?= /opt/buildroot-2012.08.packet/buildroot-2012.08/arm920t/usr/bin/arm-linux-(交叉编译器自己制作,我是之前已经做好了,注意路径)
# This allow a user to issue only 'make' to build a kernel including modules
# Defaults to vmlinux, but the arch makefile usually adds further targets
all: vmlinux
+ cp arch/arm/boot/zImage . -f
+ mkimage -A arm -O linux -T kernel -C none -a 30008040 -n "Linux Kernel" -d zImage \ linuxrom-s3c2440.bin
+ rm -f zImage
(注意在这里不能用空格代替tab)
@@ -1201,6 +1204,7 @@
-o -name '.*.rej' -o -size 0 \
-o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
-type f -print | xargs rm -f
+ @rm -f linuxrom-s3c2440.bin
修改晶振频率
-- s3c24xx_init_clocks(16934400);
+ s3c24xx_init_clocks(12000000);
修改驱动:
-- #define S3C24XX_SERIAL_NAME "ttySAC"
+ #define S3C24XX_SERIAL_NAME "ttyS0"
Make menuconfig
在这里可以执行export TERM=vt100,使界面更好看,还可以显示一些隐藏的选项
.修改MACHINE ID设备编号
vim arch/arm/tools/mach-types
make
进行分区
vim arch/arm/plat-s3c24xx/common-smdk.c
根据自己的需要进行分区:
分区很关键,关系到Linux根文件系统的移植,还有u-boot里环境变量的设置
我现在遇到的问题就很头痛
这是我的分区:
MTDPART_SIZE_FULL自动设置地址
因为总共只有256M,不要超过了
make
Ok 内核做完了!
问题总结:
make 提示Makefile:560: *** missing separator. Stop.
我用空格代替了tab键 再makefile里命令行前面只能用tab键,否则会误认为空格也是命令。
cp arch/arm/boot/zImage . -f
mkimage -A arm -0 linux -T kernel -C none -a 30008000 -e 30008040 -n "Linux kernel" -d zImage linuxrom-s3c2440.bin
/bin/sh: mkimage: command not found
make: *** [all] Error 127
没有mkimage包,在u-boot/tools下将它cp到usr/bin
DRAM: 64 MiB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x100000, size 0x800000
8388608 bytes read: OK
## Booting kernel from Legacy Image at 30008000 ...
Image Name: Linux kernel
Created: 2017-03-12 14:03:43 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2332436 Bytes = 2.2 MiB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
输入命令 set bkr 'tftp 30008000 linuxrom-s3c2440.bin;nand erase 100000 800000;nand
write 30008000 100000 800000'
没有加 ‘
0x000000000000-0x000000100000 : "bootloader"
ftl_cs: FTL header not found.
0x000000100000-0x000001000000 : "linux"
ftl_cs: FTL header not found.
0x000001000000-0x000003800000 : "rootfs"
ftl_cs: FTL header not found.
0x000003800000-0x000009c00000 : "apps"
ftl_cs: FTL header not found.
0x000000000000-0x000010000000 : "data"
ftl_cs: FTL header not found.
重新配置内核,取消下面三个选项(红色部分)。
在Make menuconfig时:
Device Drivers ->
Memory Technology Devices (MTD) ->
不要选择下面这三个选项
<>FTL (Flash Translation Layer) support
<> NFTL (NAND Flash Translation Layer) support
<>INFTL (Inverse NAND Flash Translation Layer) support
参考:http://blog.csdn.net/u012611092/article/details/41349721
相关文章推荐
- fl2440内核移植(四)——DM9000移植
- 内核linux-3.0移植到fl2440-----添加DM9000网卡驱动
- fl2440 内核移植
- fl2440内核自带按键驱动移植及hexdump命令
- fl2440内核移植(五)——USB驱动移植
- FL2440内核移植---亲自移植的
- fl2440内核移植(一)——最小系统
- fl2440内核移植(二)——RTC移植
- fl2440——移植USB驱动、内核添加USB支持、U盘挂载
- FL2440 Linux-3.0内核最小系统移植
- fl2440 移植u-boot-2010.09全纪录4---------u-boot支持从nandflash启动
- 2440的内核移植
- 内核移植到2440问题(包括nand分区表设置问题。。)
- TQ2440之内核3.15.6移植
- TQ2440之内核3.15.6-DM9000移植
- Linux3.2.81内核移植(2440)
- 嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之内核
- fl2440 uboot 成功引导linux2.6.28.7内核启动
- FL2440移植LINUX-3.4.2(五)-- 添加DM9000的支持
- [转]u-boot-2010.12移植到2440(五,支持内核引导)