linux移植(6)

usbmon: debugfs is not available
116x: driver isp116xhcd,
05 Aug 2005
s3c2410ohci
s3c2410ohci:
S3C24XX OHCI
s3c2410ohci
s3c2410ohci:
new USB bus registered, assigned bus number 1
s3c2410ohci
s3c2410ohci:
irq 42, io mem 0x49000000
usb usb1: Product: S3C24XX OHCI
usb usb1: Manufacturer: Linux 2.6.14.1 ohci_hcd
usb usb1: SerialNumber: s3c24xx
hub 10:
1.0: USB hub found
hub 10:
1.0: 2 ports detected
sl811: driver sl811hcd,
19 May 2005
usbcore: registered new driver cdc_acm
drivers/usb/class/cdcacm.
c: v0.23:USB Abstract Control Model driver for USB modems and ISDN
adaptesdrivers/usb/class/bluetty.c: USB Bluetooth support registered
usbcore: registered new driver bluetty
drivers/usb/class/bluetty.c: USB Bluetooth tty driver v0.13
usbcore: registered new driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
Initializing USB Mass Storage driver...
usbcore: registered new driver usbstorage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 256 (order: 2,
1024 bytes)
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Reading data from NAND FLASH without ECC is not recommended
VFS: Mounted root (cramfs filesystem) readonly.
Mounted devfs on /dev
Freeing init memory: 104K
Reading data from NAND FLASH without ECC is not recommended
mount /etc as ramfs
recreate
the /etc/mtab entries
mount
/dev/shm as tmpfs
mount
/proc as proc
mount
/sys as sysfs
init started: BusyBox v1.1.3 (2006.07.0303:
43+0000) multicall
binary
Starting pid 28, console /dev/tts/0: '/etc/init.d/rcS'
in /etc/init.d/rcS
/
sbin/ifconfig eth0 192.168.1.5
Please press Enter to activate this console.
#
1.5 Linux 下cs8900a的移植说明
1.5.1 为cs8900a建立编译菜单
1. 拷贝到文件
把cs8900a的压缩包拷贝到arm用户下的dev_home/localapps/
[arm@localhost localapps]$ tar xzvf
cs8900a.tar.gz
[arm@localhost localapps]$cd cs8900a
[arm@localhost cs8900a]$cp cs8900a.c $KERNEL/linux2.6.14.1/
drivers/net/
[arm@localhost cs8900a]$cp cs8900.h $KERNEL/linux2.6.14.1/
drivers/net/
2. 修改Kconfig文件
[arm@localhost cs8900a]$vi $KERNEL/linux2.6.14.1/
drivers/net/Kconfig
#加入如下内容
config CS8900a
tristate "CS8900a support"
depends on NET_ETHERNET && ARM && ARCH_SMDK2410
helpSupport
for CS8900A chipset based Ethernet cards. If you have a network (Ether
net) card of this type, say Y and read the EthernetHOWTO,
available from as
well as.
To compile this driver as a module, choose M here and read.
The module will be called cs8900.o.
3. 修改Makefile文件
[arm@localhost cs8900a]$vi $KERNEL/linux2.6.14.1/
drivers/net/Makefile
#加入如下内容
obj$(
CONFIG_CS8900a) += cs8900a.o
1.5.2 修改S3C2410相关信息
1. 加入CS8900A在内存中的起始位置
[arm@localhost cs8900a]$cp regcs8900.
h $KERNEL/linux2.6.14.1/
include/asmarm/
archs3c2410/
cs8900.h的内容如下:
#ifndef _INCLUDE_CS8900A_H_
#define _INCLUDE_CS8900A_H_
#include <linux/config.h>
#define pSMDK2410_ETH_IO 0x19000000 /* S3C2410_CS3 0x18000000 */
#define vSMDK2410_ETH_IO 0xE0000000
#define SMDK2410_ETH_IRQ IRQ_EINT9
#endif
2. 加入cs8900A的物理地址到虚拟地址的映射
[arm@localhost cs8900a]$vi $KERNEL/linux2.6.14.1/
arch/arm/machs3c2410/
machsmdk2410.
c
/* 加入如下内容 */
static struct map_desc smdk2410_iodesc[] __initdata = {
{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE} /* Add this line */
};
2 创建uImage
2.1 相关技术背景介绍
前面已经介绍了内核编译后,生成zImage的内核镜像文件。该镜像文件可以通过UBOOT
提供的go命令,
跳转执行,引导内核。同时在uboot1.1.4
的tools目录下,提供了生成uImage的工具mkimage命令,在生成
uboot
的二进制镜像文件的同时,mkimage命令会同时编译生成,无需另外编译。通过mkimage命令,在
zImage中加入头文件(镜像头长0x40,真正的内核入口向后偏移了0x40大小),生成uImage镜像文件,该文
件就是执行bootm所需的内核镜像文件。
2.2 在内核中创建uImage的方法
2.2.1 获取mkimage工具
2.6内核树的Makefile提供了创建uImage的方法,但需要我们提供相应的mkimage命令。
所以首先拷贝uboot
中tools目录下编译后生成的mkimage到/usr/bin/下,然后便可以在内核根目录下通过
make uImage
来创建uImage文件。该文件生成在arch/arm/boot/下。
2.2.2 修改内核的Makefile文件
[arm@localhost linux2.6.14.1]$
vi arch/arm/boot/Makefile
#MKIMAGE变量记录mkimage命令的路径mkuboot.sh脚本文件可以scripts目录中找到
MKIMAGE := $(srctree)/scripts/mkuboot.sh
#zreladdry
与params_physy
可以在arch/arm/machs3c2410/
Makefile.boot当中找到
ZRELADDR := $(zreladdry)
PARAMS_PHYS := $(params_physy)
INITRD_PHYS := $(initrd_physy)
#生成uImage的mkImage命令行,其中需要关注的就是a
与 e
参数。
#参数a:
指明uImage加载的SDRAM地址,内核默认指定加载地址为0x30008000。
# uboot
引导时,bootm命令跳到与上相同位置执行,检查完镜像头后,它会跳到内核真正的入口点开
始执行。
#参数e:
指明uImage中刨去镜像头后真正的内核入口地址。
# 镜像头为0x40长,故此处指定为0x30008040。
# uboot
引导时,go命令可以直接指定此位置。go命令不检查镜像头。
quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) A
arm O
linux T
kernel \
C
none a
$(ZRELADDR) e
0x30008040 \
n
'Linux$(
KERNELRELEASE)' d
$< $@
3追加实验记录
以同样方式移植其他2.6主线内核,出现问题如下:
3.1移植linux-2.6.15.7
编译通过,启动时显示:
VFS: Cannot open root device "mtdblock2" or unknownblock(
31,2)
Please append a correct "root=" boot option
Kernel panic not
syncing: VFS: Unable to mount root fs on unknownblock(
31,2)
3.2移植linux-2.6.16.21
编译通过,启动时显示:
VFS: Cannot open root device "mtdblock2" or unknownblock(
31,2)
Please append a correct "root=" boot option
Kernel panic not
syncing: VFS: Unable to mount root fs on unknownblock(
31,2)
3.3 移植linux-2.6.17
编译失败
4 参考资料
1. Porting kernel 2.6.11.7 to S3C2410
http://superlp.blogchina.com/1391393.html
非常感谢此篇文档的作者
2. devfs介绍
http://www128.
ibm.com/developerworks/cn/linux/filesystem/lfs4/
index.html#resources
3. <<BUILDING EMBEDDED LINUX SYSTEMS>>
中文名:<<构建嵌入式Linux系统>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值