驱动开发环境搭建与驱动开发流程

来源:互联网 发布:淘宝买汽枪怎么搜索 编辑:程序博客网 时间:2024/05/29 04:33

一,开发环境
1,硬件:2410开发板,h-jtag,PC虚拟机ubuntu

2,配置上位机
a,安装ufs
b,配置ufs
sudo vi/etc/exports
在下面添加文件系统所在的路径,如:/opt/filesystem*(subtree_check,rw,no_root_squash,async)
c,重启服务
sudo /etc/init.d/nfs-kernel-server restart
sudo exportfs -a

3,配置开发板
a,准备uboot
用jtag烧写与开发板匹配的uboot.bin到开发板。一般烧写到nand flash。uboot自带引导和网卡驱动,并提供基本的配置接口。
b,设置uboot
启动开发板。uboot提供串口配置界面。uboot的设置命令可自行搜索。
1)设置目标板设置目标板设置目标板ip
setenv ipaddr 192.168.1.xxx 
保存
saveenv
2)设置服务器ip
/*这个ip是上位机的ip地址*/
setenv serverip 192.168.1.xxx
saveenv
3)设置网关
      setenv gatewayip ip 192.168.1.1
      saveenv
4)设置启动命令
/*将PC机上的uImage(内核镜像)通过tftp协议下载到目标板的内存SDRAM的30800000的位置(注意:这个位置是可改变的)。"\;"表示两条命令同时分隔符,也可以只用一个";"号,后面的那条命令表示从目标板SDRAM的30800000的地方运行*/
      setenv bootcmd tftp 30800000 uImage\;bootcm 30800000 
      saveenv
      5)设置开发板自动加载的上位机的文件系统的路径
      setenv bootargs root=nfs nfsroot=<服务器IP>:<文件系统路径> console=ttySAC0,115200 ip=<开发板IP>
      saveenv
    4,安装交叉编译工具
    a,下载交叉编译工具,解压
    b,配置环境变量
    vim .bashrc
    在上面文件中加入export PATH=$PATH:/<交叉编译工具的bin路径>
    source .bashrc
   
二,编译内核成uImage
1,内核下载源码包,解压到上位机的某一目录如/home/linux_src
2,修改源码包的顶层makefile文件
vim Makefile
修改两行:
ARCH ?=arm
CROSS_COMPILE ?=arm-linux-gun- #注意与自己的交叉编译工具匹配
3,修改.config文件
cp arch/arm/configs/s3c2410_deconfig .config #选择相应的deconfig文件生成
4,剪裁内核
make menuconfig
进入图形化配置菜单进行配置。如需加载额外的驱动,则先将驱动文件.c和.h拷贝到相应的目录下
5,将mkimage放在ubuntu的/usr/bin目录下,注意修改权限。这是各用来生成uImage的工具。
6,编译uImage。
make uImage
生成的uImage在/arch/arm/boot目录下,将其拷贝到/tftpboot目录下
三,加载内核和文件系统
1,进入uboot
启动/复位开发板,进入uboot,输入print会打印之前在uboot里设置的相关信息
2,下载uImage
确定没问题后,输入res重启,uboot会通过tftp协议自动下载uImage
下载玩uImage内核后,会启动内核,挂载文件系统,进入命令提示符(用户名密码默认为root:123456)。
如内核不能启动,注意查看uboot里面文件系统和网卡驱动的相关配置


注意,先安装tftp服务和nfs服务。



四:驱动开发与加载测试
1,驱动的makefile文件格式
KERN_DIR =/home/matt/share/linux_src/linux-2.6.22.6all:make -C $(KERN_DIR) M=`pwd` modulescp led.ko /opt/filesystemclean:make -C $(KERN_DIR) M=`pwd` modules cleanobj-m +=led.o



2,编译驱动
make,以上的makefile文件会自动将编译生成的驱动拷入文件系统目录
3,在开发板上加载驱动
lsmod /dev
rmmod xxx
insmod xxx.ko
cat /proc/devices
ls -l /dev/xxx 查看主设备下的次设备

4,驱动测试或应用
编写驱动测试程序(或应用程序),用交叉工具编译之后,拷贝到文件系统,然后在目标板上运行,查看效果。