一. 预备知识
修改Ubuntu的IP
sudo vi /etc/network/interface
重启网络
sudo /etc/init.d/networking restart
取消putty校验
farsight@ubuntu:~$ sudo vi /etc/nsswitch.conf
修改:
11
12 hosts: files dns[ NOTFOUND= return]
二. 移植Linux内核
准备工作:
1> linux-3.0.8.tar.bz2拷贝到/home/farsight/fs210,解压
farsight@ubuntu:~/fs210$ tar -xvf linux-3.0.8.tar.bz2
2> rootfs_fs210.tgz拷贝到/opt
farsight@ubuntu:/opt$ sudo tar -xvf rootfs_fs210.tgz
3> toolchain-4.5.1-farsight.tar.bz2(交叉编译工具链)拷贝到/opt下面
farsight@ubuntu:/opt$ sudo tar -xvf toolchain-4.5.1-farsight.tar.bz2
1. 配置Linux内核
1> 配置交叉编译工具
farsight@ubuntu:~/fs210/linux-3.0.8$ vi Makefile
修改:
195 ARCH ?= arm
196 CROSS_COMPILE ?= arm-none-linux-gnueabi-
或者修改环境变量:
farsight@ubuntu:~$ sudo vi ~/.bashrc //只对当前用户有效
//farsight@ubuntu:~$ sudo vi /etc/environment -- 对所有用户有效
//farsight@ubuntu:~$ sudo vi /etc/profile -- 对所有用户有效
108 export PATH= $PATH :/opt/toolchain-4.5.1-farsight/bin
2> 配置内核
farsight@ubuntu:~/fs210/linux-3.0.8$ make s5pv210_defconfig
farsight@ubuntu:~/fs210/linux-3.0.8$ make menuconfig //出错,apt-get install libncurses5-dev
General setup --->
[ *] Configure standard kernel features ( expert users) --->
System Type --->
( 0) S3C UART to use for low-level messages
Kernel Features --->
Memory split ( 3G/1G user/kernel split) --->
[ *] Networking support --->
Networking options --->
< *> Packet socket
< *> Unix domain sockets
[ *] TCP/IP networking
[ *] IP: kernel level autoconfiguration
[ *] IP: BOOTP support
Device Drivers --->
[ *] Network device support --->
[ *] Ethernet ( 10 or 100Mbit) --->
< *> DM9000 support
File systems --->
[ *] Network File Systems ( NEW) --->
< *> NFS client support
[ *] NFS client support for NFS version 3
[ *] NFS client support for the NFSv3 ACL protocol extension
[ *] Root file system on NFS
3> 移植Linux内核(网卡驱动)
vi arch/arm/mach-s5pv210/mach-smdkv210.c
1) 修改网卡的mac地址:
static struct dm9000_plat_data smdkv210_dm9000_platdata = {
.flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
.dev_addr = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0xee } , // 设置为座位号码
} ;
2) 修改结构体数组smdkv210_dm9000_resources为:
static struct resource smdkv210_dm9000_resources[ ] = {
[ 0] = {
.start = 0x88000000, //地址端口
.end = 0x88000000 + 0x3,
.flags = IORESOURCE_MEM,
} ,
[ 1] = {
.start = 0x88000000 + 0x4, //数据端口
.end = 0x88000000 + 0x4 + 0x3,
.flags = IORESOURCE_MEM,
} ,
[ 2] = {
.start = IRQ_EINT( 10) , //中断号
.end = IRQ_EINT( 10) ,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
} ,
} ;
3) 修改函数smdkv210_dm9000_init为:
static void __init smdkv210_dm9000_init( void)
{
/*时序配置:需要技术支持*/
unsigned int tmp;
gpio_request( S5PV210_MP01( 1) , "nCS1" ) ;
s3c_gpio_cfgpin( S5PV210_MP01( 1) , S3C_GPIO_SFN( 2)) ;
gpio_free( S5PV210_MP01( 1)) ;
tmp = ( 5 << S5P_SROM_BCX__TACC__SHIFT) ;
__raw_writel( tmp, S5P_SROM_BC1) ;
tmp = __raw_readl( S5P_SROM_BW) ;
tmp & = ( S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS1__SHIFT) ;
tmp | = ( 1 << S5P_SROM_BW__NCS1__SHIFT) ;
__raw_writel( tmp, S5P_SROM_BW) ;
}
2. 编译Linux内核
farsight@ubuntu:~/fs210/linux-3.0.8$ make -j2 zImage
3. 拷贝zImage到/tftpboot目录下
farsight@ubuntu:~/fs210/linux-3.0.8$ cp -raf arch/arm/boot/zImage /tftpboot/
三. 构建嵌入式Linux运行环境
1. 配置NFS文件系统
farsight@ubuntu:~/fs210/linux-3.0.8$ sudo vi /etc/exports
13 /opt/rootfs *( subtree_check,rw,no_root_squash,async)
farsight@ubuntu:~/fs210/linux-3.0.8$ sudo exportfs -a
farsight@ubuntu:~/fs210/linux-3.0.8$ sudo /etc/init.d/nfs-kernel-server restart
2. 配置开发板
FS210
FS210
FS210
FS210
FS210
FS210
四. 模块执行的命令
insmod xxx.ko 加载指定模块
rmmod xxx 卸载模块
lsmod xxx 查看当前有哪些模块被加载
modinfo xxx.ko 查看模块信息
五. 修改printk的打印级别
[ root@farsight /drv_module]
[ root@farsight /drv_module]