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

 

 

posted on 2012-03-31 09:59  肯定;爱  阅读(307)  评论(0编辑  收藏  举报