初级驱动

一. 预备知识

  1. 修改Ubuntu的IP
sudo vi /etc/network/interface
  1. 重启网络
sudo /etc/init.d/networking restart
  1. 取消putty校验
 farsight@ubuntu:~$ sudo vi /etc/nsswitch.conf
 修改:
 11 #hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
 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 # set ethaddr 11:23:34:24:a0:2b
   FS210 # set serverip 192.168.60.3
   FS210 # set ipaddr 192.168.60.4
   FS210 # set gatewayip 192.168.60.1
   FS210 # set bootcmd tftp 0x40008000 zImage\;bootm 0x40008000
   FS210 # set bootargs root=/dev/nfs nfsroot=192.168.60.3:/opt/rootfs init=/linuxrc ip=192.168.60.4 console=ttySAC0,115200

四. 模块执行的命令

insmod xxx.ko  加载指定模块
rmmod xxx  卸载模块
lsmod xxx  查看当前有哪些模块被加载
modinfo xxx.ko  查看模块信息

五. 修改printk的打印级别

   [root@farsight /drv_module]# cat /proc/sys/kernel/printk
   [root@farsight /drv_module]# echo "8 4 1 7" > /proc/sys/kernel/printk







	  
	  

	  

	
	
	




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值