免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1152 | 回复: 0
打印 上一主题 下一主题

驱动编写流程(micro2440用户手册) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 01:19 |只看该作者 |倒序浏览

进入嵌入式Linux开发,根据micro2440用户手册第五章开始操作,这里提示一下注意的地方

1, vmwarefedora9虚拟机,照着手册来就好,提示格式化分区时就格式化,

2, 为减小不必要的麻烦使用root账户登录fedora

3, 安装vmware tolls,用root账户登录fedora,点击虚拟机VM---install vmware toll,将弹出一个cdrom,将压缩包拷贝出来,解压,进入压缩包,终端中执行./xxx.plg,不要改变安装路径,然后一路回车有一个地方需要选为no,最后选一下分辨率即可,安装成功。然后在图形界面下设置分辨率,注销后即可看到效果。安装成功:鼠标可以自由出入,分辨率可以自由调节

4, 在使用nfsftp服务时,fedora都是使用静态IP

要切换到静态IP

终端中输入:setup,选择network configuration

static ip 192.168.1.108 netmask255.255.255.0          Default gateway ip 192.168.1.1

保存退出,输入:/etc/init.d/network restart,用ifconfig验证一下

切换到动态ip

终端中输入:setup,选择network configurationuse dhcp选中即可

保存退出,输入:/etc/init.d/network restart,用ifconfig验证一下

5, a,开发板nfsfedora上的根文件系统,norflash启动,supervivi模式,粘贴:

param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/mini2440/root_qtopia ip=192.168.1.230:192.168.1.108:192.168.1.108:255.255.255.0:sbc2440.arm9.net:eth0:off"

其中:192.168.1.230是开发板内核固定的静态ip

b,开发板从nand中启动根文件系统后,也可以使用mount挂载fedora主机上的根文件系统,当然这    也需要先把网线接好,命令如下:

mount –t nfs –o nolock 192.168.1.108:/opt/FriendlyARM/mini2440/root_qtopia /mnt

这样cd /mnt 即可以操作fedora主机上的roo_qtopia

c,fedora主机使用ftp登录开发板,既可以在fedora主机上看到开发板根文件系统:

fedora主机终端下输入:

ftp 192.168.1.230   

用户名,密码都是plg                  (此时登录到了plg账户,处于plg目录下)    bin                            (传输模式为二进制文件)                                put fedora主机上当前目录下需要上传的文件 (成功后在开发板/home/plg目录下)

回到开发板终端,处理传上来的文件即可

by 或者 eixt (则退出ftp登录)

6, 厂家提供的内核包含了板子的设备驱动,网上下载的源码包就没有这些,应此需要做修改移植。厂家网上下载源码包,修改makefile等加入板子的设备驱动源码,这样在使用厂家提供的配置文件时,make menuconfig才会出现板子上所需的驱动选择,开发板上运行的内核已经将驱动程序编译进内核了,而不是内核模块,所以要移植内核,测试驱动的话,选用网上的源码包,Linux/arch/arm/mach-s3c2440/mach-mini2440.c文件中描述了板子所有的设备资源

将驱动编译为模块动态加载进内核来测试:

要把自己的驱动在内核目录树中显示,比如char型设备,在Linux/drivers/char/Kconfig文件中,添加:

config MINI2440_HELLO_MODULE

tristate "Mini2440 module sample"

depends on MACH_MINI2440

default m if MACH_MINI2440                              //选为M,意为编译为模块

help

  Mini2440 module sample.

还需要和源代码关联起来,在Linux/drivers/char/Makefile文件中,添加:

obj-$(CONFIG_MINI2440_HELLO_MODULE) += mini2440_hello_module.o

现在可以编译模块了:

回到Linux根目录执行:make modules 就可以生成内核模块文件了

Linux/drivers/char/mini2440_hello_module.ko

mini2440_hello_module.ko拷贝到开发板的/lib/modules/2.6.29.4-FriendlyARM目录

在该目录或者顶层目录执行加载模块:modprobe mini2440_hello_module,即可看到效果,lsmod也可以验证

在该目录或者顶层目录执行卸载模块:rmmod mini2440_hello_module,即可看到效果,lsmod也可以验证

mini2440_hello_module.c源码如下:

#include <linux/kernel.h>

#include <linux/module.h>

 

static int __init mini2440_hello_module_init(void)

{

    printk("Hello, Mini2440 module is installed !\n");

    return 0;

}

 

static void __exit mini2440_hello_module_cleanup(void)

{

    printk("Good-bye, Mini2440 module was removed!\n");

}

 

module_init(mini2440_hello_module_init);

module_exit(mini2440_hello_module_cleanup);

MODULE_LICENSE("GPL");

7应用程序(打开设备,读写控制)------
   /dev设备(设备类型/主次设备号)------
   /drivers驱动(设备类型/主次设备号/读写控制)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP