struct mtd_partition
提示信息 data abort
略过Uboot
2.6.30.4 先能正常工作,然后其他版本 升级
内核移植,完全参考手册。
ftp服务器下载内核2.6.30.4
也可以参考:http://blog.csdn.net/huihui1988/article/details/5799500
1、下载 解压内核
从官网上下载linux-2.6.34的内核, http://www.cnblogs.com/ai616818/admin/ftp://ftp.kernel.org/pub/linux/kernel/v2.6/
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-
修改平台输入时钟: 平台 ——板卡 对应的文件是:
arch/arm/ 目录
mach-s3c2440/ 目录
clock.c irq.c mach-at2440evb.c mach-rx3715.c s3c2440.c
dma.c Kconfig mach-nexcoder.c mach-smdk2440.c
dsc.c mach-anubis.c mach-osiris.c Makefile
下的文件 mach-smdk2440.c mach 平台的 SMDK Samsung MCU Development Kit 三星开发板
Nand Flash: 仅仅是做修改
arch/arm
plat-s3c24xx/
common-smdk.c
目标:结构体
static struct mtd_partition smdk_default_nand_part[] =
添加内核配置选项:
drivers mtd nand Kconfig文件
yaffs2支持 打补丁即可
支持后,内核源码的 fs/ 有yaffs2/ 目录
同时fs/ 目录下的Makefile 和Kconfig 文件也添加了yaffs2 的配置
DNW 配置中download address 问题,需要改吗? SDRAM 的地址 ram(是内存)
天嵌:
设置0x3000 0000 是因为 sdram 的开始地址是这个值。
也就是说 这是 sdram 的地址
天嵌: 已经全部 固化下载到了0x3000 0000 DNW 中任意设置,都是可以的。
随意更改DNW 配置,信息都是下面的:
串口打印信息:
USB host is connected. Waiting a download.
Now, Downloading [ADDRESS:30000000h,TOTAL:1939526]
RECEIVED FILE SIZE: 1939526 (947KB/S, 2S)
NAND erase: device 0 offset 0x200000, size 0x200000
Erasing at 0x3fc000 -- 100% complete.
OK
NAND write: device 0 offset 0x200000, size 0x1d983c
Writing data at 0x3d9800 -- 100% complete.
1939516 bytes written: OK
运行kernel:
串口信息
Start Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM done,NOW, Booting Linux.....
关于0x30008000
grep -rn 0x30008000 ./
先是下载到 SDRAM 0x3000 0000
下载后烧写到 NAND FLASH 0x200000
然后是拷贝到 SDRAM (内存) 的0x30008000 运行地址?
8000 32k???1000 00 k
2^5=32 k
文件系统移植:
cramfs 文件系统没问题
移植 最新版本kernel 3.3.1 2012-4-10
step1 修改Makefile 添加 arm支持
step2 修改平台输入时钟 mach-s3c2440 mach-smdk2440.c
step3 配置菜单
step4 修改机器码
编译镜像。
step1 Nand Flash 进一步修改:
修改分区表
(修改drivers mtd nand Kconfig)
烧写 后 解压Image 后 提示data abort
Booting Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM done,NOW, Booting Linux......
data abort
原因:镜像文件太大,超过了分区设置的2M大小。
2.17M 去掉一些无用的内核选项后
可以,但是乱码! 2.6.32.59同样裁剪后仍正常。
移植2.6.32.59内核:同2.6.30.4 完好。
继续,android4.0 Linux3.0内核移植
http://wenku.baidu.com/view/658fc561783e0912a2162aae.html
除了修改了内核配置菜单中的 boot 选项,其它一样。 Linux 3.0 移植OK。
/ # uname -r
3.0.27