哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/02/14/6184884.aspx
宿主机:ubuntu9.10
目标机:s3c2440
交叉编译器:arm-linux-gcc-4.3.2
交叉编译器路径:/usr/local/arm/4.3.2
要移植的内核版本:linux-2.6.30.4
文件系统类型: yaffs2
步骤包括:
1)给linux内核打上yaffs2补丁
2)修改机器码
3)修改目标板的arch和编译器路径,
4)增加devfs文件管理器支持
5)修改晶振频率
6)修改MTD分区
7)关闭ECC校验
8)修改nandflash驱动
9)配置内核
首先,从官网上下载linux-2.6.30.4的内核。
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/可以找到。
新建目录mkdir /home/haker,将内核源码包解压到hacker/目录下
tar –zxvf linux-2.6.30.4.tar.gz
1)给内核打jaffs2补丁
下载最新的驱动http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar
解压到/home/hacker/下
tar –zxvf yaffs2.tar.gz
进入目录
cd yaffs2
给内核打补丁
./patch-ker.sh c /home/hacker/linux-2.6.30.4
加上c 他会自动解压到后面的目录中
成功后会打印信息:
Updating /home/hacker/linux-2.6.30.4/fs/Kconfig
Updating /home/hacker/linux-2.6.30.4/fs/Makefile
2)修改机器码
暂时我使用的是飞凌的boot,自己的boot还没有完全做好,飞凌boot的默认机器码是193,修改arch/arm/tools/mach-types,将
s3c2410 ARCH_S3C2410 S3C2410 193 删掉
然后将
s3c2440 ARCH_S3C2440 S3C2440 362
修改为
s3c2440 ARCH_S3C2440 S3C2440 193
3)修改目标板的arch和编译器路径
修改linux/2.6.30.4下的Makefile将
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改成
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux-
4)增加devfs文件管理器支持
修改fs/Kconfig,找到
menu “Pseudo filesystems”
添加
config DEVFS_FS
bool “/dev file system support (OBSOLETE)”
default y
config DEVFS_MOUNT
bool “Automatially mount at bool”
default
depends on DEVFS_FS
5)修改晶振频率
arch/arm/mach-s3c2440/mach-smdk2440.c
/*s3c24xx_init_clocks(16934400);*/ s3c24xx_init_clocks(12000000);
6)修改MTD分区,由于自己的uboot还没有完全做好,暂时用飞凌的boot的分区,
修改文件arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Boot",
.size = 0x00100000,
.offset = 0
},
[1] = {
.name = "MyApp",
.size = 0x003c0000,
.offset = 0x00140000,
},
[2] = {
.name = "Kernel",
.size = 0x00300000,
.offset = 0x00500000,
},
[3] = {
.name = "fs_yaffs",
.size = 0x03c00000, //60M
.offset = 0x00800000,
},
[4] = {
.name = "WINCE",
.size = 0x03c00000,
.offset = 0x04400000,
}
};
7)关闭ECC校验
文件drivers/mtd/nand/s3c2410.c
函数:s3c2410_nand_init_chip
/*chip->ecc.mode = NAND_ECC_SOFT; */ chip->ecc.mode = NAND_ECC_NONE;
这个有两个 软件校验和硬件校验都要关掉
8)修改nandflash驱动,修改drivers/mtd/nand下面的nand_bbt.c文件:
static struct nand_bbt_descr largepage_memorybased = {
.options = 0,
.offs = 0,
.len = 1, // 原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash
.pattern = scan_ff_pattern
};
static struct nand_bbt_descr largepage_flashbased = {
.options = NAND_BBT_SCAN2NDPAGE,
.offs = 0,
.len = 1, //原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash
.pattern = scan_ff_pattern
};
9)配置内核
make menuconfig
首先加载s3c24xx系列的通用配置,然后在此基础上修改
配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件
交叉编译内核
make zImage
如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件zImage即是。
分享到:
相关推荐
本文的目的为基于linux2.6.30.4 framebuffer移植LCD驱动到FL2440开发板。本文内容大致分为以下几个部分: 1、 LCD硬件及显示原理介绍; 2、 s3c2440 LCD控制器介绍; 3、 内核LCD驱动机制framebuffer(帧缓冲技术)...
可以移植到arm开发板。操作系统
主 机:ubuntu10.04 开发板:Mini2440--256MB Nand, Kernel:2.6.36.1 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2010.03.tar.gz
天嵌科技出品--基于TQ2440开发板的Linux-2.6.30.4的网络摄像机的实现 很好的学习例子
1. linux 内核: linux-2.6.32.24_20240320_work.gz, 支出mini2440 开发板 2. LCD 屏幕为: P43 3. 支持板卡上的全部驱动
LED驱动:GEC6818开发板上的灯驱动 各种版本的mplaye: 音视频播放器,使用命令即可播放,支持win10和开发板,应用于各种场合,特别是语音识别技术,很多毕设都是用这个做的。 gcc编译工具:arm+linux-gnueabi-5.4.0....
linux-2.6.29.1在utu2440开发板上的移植(含LCD驱动移植)
TQ2440开发板上,还将移植步骤记录下来,成为完整的移植手册。比之前2.6.25的移植手册更完善。 教 您如何移植Linux系统。 不但给您以镜像跟源码的开放,更教给您一种方法。是新手入门及开发者的明智选择。在产品...
这是一篇在TQ2440上实现网络摄像机的文章,该文章给出了实现网络摄像机所需要的软硬件,以及移植所做的具体的步骤。
嵌入式linux在arm开发板上的移植.rar嵌入式linux在arm开发板上的移植.rar
本手册全面介绍了嵌入式 Linux 系统的开发过程中,各种驱动的源码获取、源码修改、配置和移植,驱动测试程序的编写,根文件系统的构造(包括移植 busybox 、 glibc 、制作映像文件等), DIY 自己的驱 动程序和测试...
基于s3c2410开发板的2.6.26.5内核移植文档 文档中详细介绍了移植的编译设置,内核移植及文件系统制作
3800元震撼推出全球最低三星ARM+Cortex-A8++S5PC100+开发板.pdf
目的:在ubuntu下编译 在arm开发板上运行 第一步:将arm-linux-gcc-4.3.2.bz2拷贝到虚拟机的任意目录 第二步:查看当前系统是否支持arm-linux-gcc 如果不存在 则继续如下步骤: 第三步:在/usr/local创建一个文件夹...
资料我已经移植成功, 欢迎尝试. 开发板是友善之臂2410, 环境是vmware+ubuntu
TQ2440的内核程序通过make zImage可以直接生成内核文件可直接下载到开发板实现文件系统,非常适合新手学习。
这是我移植的用于mini2440开发板的linux2.6.27.9和u-boot2008.10。支持lcd,触摸屏,yaffs烧写等功能。这里提供是映像文件,需要源码的朋友可以和我联系。我的email:nanjinrat@sohu.com或加我QQ:945685172
linux_2.6.28.6下Qt wifi通信,包含源码和编译生成的程序,ARM11开发板已测试通过
每一个新版本Linux内核都会带来许多新的变化,这些变化在不同层次上对开发人员有很大的影响。本文概括了在2.6内核下硬件驱动程序的变化及模 块搭建过程的变化。然而,如果用户正在手工维护现有的硬件驱动程序或开发...
主机+虚拟机+开发板互相ping通.docx 主机+虚拟机+开发板互相ping通.docx