linux-3.0内核移植

1.新建kernel文件夹,用于存放内核文件

[[email protected] ~]$ mkdir kernel

2.进入kernel,上传压并解压压缩文件

[[email protected] ~]$cd kernel

[[email protected] kernel]$ tar -xjf linux-3.0.tar.bz2

3.进入linux-3.0

cd linux-3.0

4.修改makefile,配置CPU类型和交叉编译器(195,196行)

ARCH ?=arm
 CROSS_COMPILE ?=/opt/buildroot-2012.08/arm926t/usr/bin/arm-linux-

交叉编译器路径每个人不太一样,大家把路径都换成自己的,另外在配置交叉编译器路径的时候,不要多加多余的空格,否则编译器不会被找到。

在同一文件下添加zImage头制作(559行后面)

cp arch/arm/boot/zImage . -f
 ../u-boot-2010.09.bak/tools/mkimage -A arm -O linux -T kernel -C none -a 30008000
-e 30008040 -n "Linux Kernel" -d zImage linux-s3c2440-kernel.bin
 rm -f zImage

(-A 指定CPU的体系结构

-O 指定操作系统类型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos

-T 指定映象类型,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、script、filesystem

-C 指定映象压缩方式

-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载

-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)

-n 指定映象名

-d 指定制作映象的源文件

该段是在linux编译的内核的前面,加上一个64字节的头,让u-boot能够引导内核启动

5.我们以s3c2410为模板制作s3c2440的内核。

拷贝 arch/arm/configs/s3c2410_defconfig作为.config的模板

[[email protected] linux-3.0]$ sudo cp arch/arm/configs/s3c2410_defconfig .

注意"."是拷贝到当前目录下

6.make menuconfig

(如果make menuconfig后乱码或者不能删除路径以进行修改,那么是你在执行make menuconfig前没有执行export TERM=vt100)

Linux/arm 3.0.0 Kernel Configuration

General setup  --->

所有的  M-> n  (*代表编译进内核,M表示编译成模块,n表示不选)

[*] Enable loadable module support  --->

-*- Enable the block layer  --->

[ ]   Support for large (2TB+) block devices and files

System Type  --->

[*] MMU-based Paged Memory Management Support 
          ARM system type (Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C

(X) Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442

S3C2440 and S3C2442 Machines  --->

[*] SMDK2440

[*] SMDK2440 with S3C2440 CPU module (NEW)

Kernel Features  --->

[*] Use the ARM EABI to compile the kernel

Boot options  --->

()  Default kernel command string

consel=ttySAC0,115200,init=/init

Userspace binary formats  --->

[*] Kernel support for ELF binaries

-*- Networking support  --->

M -> n

Device Drivers  --->

< > Parallel port support  --->

[*] Block devices  --->

<*>   Network block device support

(1024) Default number of RAM disks 
           (204800) Default RAM disk size (kbytes)

其他的,M->n

SCSI device support  --->

M->n

[*] Network device support  --->

[*]   Ethernet (10 or 100Mbit)  --->

<*>   DM9000 support

[]wireless LAN无线网卡 先不选

Input device support  --->

input device  support](包括鼠标键盘触摸屏(event interface)) *-->n(先都不支持只留下串口)

Character devices  --->

Serial drivers  --->

<*> Samsung SoC serial support

[*] Support for console on Samsung SoC serial port

<*> Samsung S3C2440/S3C2442/S3C2416 Serial port support (NEW)

< > Hardware Random Number Generator Core support

< > Hardware Monitoring support  --->

<*> Sound card support  --->

< >   Advanced Linux Sound Architecture  --->

[ ] Multifunction device drivers  --->

[ ] HID Devices  --->

[*] USB support  --->

<*>   USB Mass Storage support

<*>   USB Serial Converter support  --->

<*>   USB FTDI Single Port Serial Driver           USB转串口驱动程序

<*>   USB Prolific 2303 Single Port Serial Driver    PL2303驱动

<*>   USB Winchiphead CH341 Single Port Serial Driver

<*> MMC/SD/SDIO card support  --->

<*>   Secure Digital Host Controller Interface support

File systems  --->

前4种系统一般都不会用到n

CD-ROM/DVD Filesystems  --->

< > ISO 9660 CDROM file system support

M-->n

DOS/FAT/NT Filesystems  --->

<M> MSDOS fs support 
               <*> VFAT (Windows-95) fs support 
               (437) Default codepage for FAT 
               (ascii) Default iocharset for FAT 
               <*> NTFS file system support 
               [ ] NTFS debugging support (NEW) 
               [*] NTFS write support

Pseudo filesystems  --->伪文件系统

[*][Tmpfs POSIX Access Control Lists]将内存的一段拿出来做文件系统(掉电丢失),必须要

[*] Miscellaneous filesystems  --->

<*>   Journalling Flash File System v2 (JFFS2) support

[*] Network File Systems  --->

<*>   NFS client support

[kernel hacking] 都不选     n

[cryptographic API]加密相关不选      n

[library routines] 动态库不选

7.修改时钟和串口

将arch/arm/mach-s3c2440/mach-smdk2440.c中的__init smdk2440_map_io()函数中对时钟的初始化修改为12MHz:

s3c24xx_init_clocks(12000000);

8.将drivers/tty/serial/samsung.c中设置如下:

#define S3C24XX_SERIAL_NAME  "ttyS"

将uart_driver s3c24xx_uart_drv结构体中的.driver_name设置为如下

.driver_name    = "ttyS",

8.修改arch/arm/tools/mach-types,将machine_ID配置为如下

s3c2440         ARCH_S3C2440        S3C2440         1999

mini2440        MACH_MINI2440       MINI2440        362

9.开始编译:make

编译好了之后,把linxurom-s3c2440.bin 下载到开发板的30008000地址下,启动

时间: 2024-10-14 00:22:14

linux-3.0内核移植的相关文章

《Linux设备驱动开发具体解释(第3版)》(即《Linux设备驱动开发具体解释:基于最新的Linux 4.0内核》)网购链接

<Linux设备驱动开发具体解释:基于最新的Linux 4.0内核> china-pub   spm=a1z10.3-b.w4011-10017777404.30.kvceXB&id=521111707813&rn=4cf013961288ab7c4dfd2016aeb21fa8&abbucket=5">天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月异,产业斗转星移,滚滚红尘,消逝的事物太多,新事物的诞

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》china-pub预售

<Linux设备驱动开发详解:基于最新的Linux 4.0内核>china-pub今日上线进入预售阶段: http://product.china-pub.com/4733972 推荐序一 技术日新月异,产业斗转星移,滚滚红尘,消逝的事物太多,新事物的诞生也更迅猛.众多新生事物如灿烂烟花,转瞬即逝.当我们仰望星空时,在浩如烟海的专业名词中寻找,赫然发现,Linux的生命力之旺盛顽强,斗志之昂扬雄壮,令人称奇.它正以摧枯拉朽之势迅速占领包括服务器.云计算.消费电子.工业控制.仪器仪表.导航娱乐等

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》china-pub 预售

<Linux设备驱动开发详解:基于最新的Linux 4.0内核>china-pub今日上线进入预售阶段: http://product.china-pub.com/4733972 推荐序一 技术日新月异,产业斗转星移,滚滚红尘,消逝的事物太多,新事物的诞生也更迅猛.众多新生事物如灿烂烟花,转瞬即逝.当我们仰望星空时,在浩如烟海的专业名词中寻找,赫然发现,Linux的生命力之旺盛顽强,斗志之昂扬雄壮,令人称奇.它正以摧枯拉朽之势迅速占领包括服务器.云计算.消费电子.工业控制.仪器仪表.导航娱乐等

【FL2400】Linux3.0 内核移植 一

接触arm + Linux已经将近两年了,之前都是站在大神的肩膀上来移植linux内核,对很对要求移植的东西都不是很懂!为了进一步深入对内核的了解,我决定重新从头开始对linux内核进行移植.这次移植完全是从一个新手的角度进行移植,包括可能出现的问题,以及出现的问题如何解决. 环境: 操作系统: CentOS 6.2 编译环境:gcc version 4.3.6 (Buildroot 2011.11) 开发板    : 飞凌2440(s3c2440)(arm920t) u-boot    :u-

Linux 4.0+内核对硬件交换模块的支持(HW Switch Offload)

Linux内核最近跃进到了4.x时代,初看没啥大的动作,但是对于我而言,最令人兴奋的还是它对硬交换模块的支持.这也是为全面迎合SDN做好准备的第一步. Linux上的路由与交换 Linux诞生于网络,天生对网络拥有全面且强大的支持,即便再复杂的协议,再封闭的技术,几乎都可以找到对应的Linux实现.然而这并不是说Linux网络就天下无敌了,它存在很多不合理的地方.       Linux拥有对路由的强大支持,在数据平面,你可以很轻松地实现一种路由查找算法,在控制平面,你也可以在用户态实现任何已有

Ubuntu 19.04(Disco Dingo)将采用Linux 5.0内核

Canonical决定将即将发布Ubuntu19.04(disco dingo)操作系统与新的内核系列(即最近发布的Linux5.0内核).Ubuntu19.04研发代号"disco dingo",是Canonical开发的基于Linux的下一个操作系统主要版本,它承诺引入一些增强功能和新功能,包括一个全新的Linux5.0内核,最终的Ubuntu19.04版本将由Linux 5.0内核驱动. 上周末发布的Linux5.0内核在AMDGPU开放源码图形驱动程序中添加了FreeSync支

基于FL2440的3.6.6内核移植出现Uncompressing Linux... done, booting the kernel.

具体问题 参考解决方案 解决思路 深入解决 1.具体问题: 在移植3.6.6的内核后,下载启动卡死,具体是串口打印信息停留在"Uncompressing Linux- done, booting the kernel." 2. 参考解决方案: 依据网上的说法要确保如下情况: 2.1 内核的时钟频率正确 2.2 boot和kerel 配置一致的MACH_TYPE,即板子MACHINE ID 2.3 串口驱动配置正常 在内核配置device drivers->character de

【转】 linux内核移植和驱动添加(三)

原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED驱动的添加 1, 将led.c驱动文件拷贝到linux-3.1.4/drivers/char/目录下 [email protected]# pwd /change/linux-3.1.4/drivers/char [email protected]#  cp /mnt/hgfs/fh/driver/

【转】 linux内核移植和网卡驱动(二)

原文网址:http://blog.chinaunix.net/uid-29589379-id-4708911.html 一,内核移植步骤: 1, 修改顶层目录下的Makefile ARCH            ?= $(SUBARCH) CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%) 修改为: ARCH :=arm CROSS_COMPILE :=/usr/local/arm/4.4.3/bin/arm-linux- 2, 拷贝配置文