首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > uClinux下驱动开发入门精华―修改后的《详解第二版》的驱动

uClinux下驱动开发入门精华―修改后的《详解第二版》的驱动

资料介绍

uClinux下驱动开发入门精华――修改后的《详解第二版》的驱动

附件中leddrv.c是驱动源程序,writeled.c 是应用程序


板子:4510b 2M flsah 16Msdram gpio4~7接发光二极管


一、nfs的建立,风之子有详细的过程,我的过程稍有不同,总结如下:


主机:(NFS服务器及其设置)



查看/etc/rc.d/init.d 目录下有没有nfs ,有则说明主机已安装nfs服务,继续向下做,
(1)修改配置文件etc/exports,加一行



/nfs/rootfs172.22.3.130(rw,sync,no_root_squash)



/nfs/rootfs为创建的根文件系统在主机上的目录,172.22.3.130是目标机的IP,rw表示允许下位机读写该目录,no_root_squash允许下位机以主机root用户身份挂载根文件系统,sync表示资料同步写入存储器中


(2)配置其为所有用户可读,chmod 644 /etc/exports



(3)用exportfs命令使改动立即生效,在/etc目录下执行 exportfs-rv 此命令要求全部重新输出一次,修改了exports文件后应执行此命令一次,


(4)启动NFS服务输入/etc/rc.d/init.d/nfsstart


(5)用/usr/sbin/rpcinfo Cp检查是否启动了正常NFS服务器,若启动了则至少应该看到nfs, mountd 和 portmapper



(6)在linux终端下运行setup,进入system services去掉下面的服务



[ ]ip6tables [ ]ipchains[ ]iptables[ ]dhcpd



目标板:



(1)内核需要支持NFS



make menuconfig 选中[*]customize kernel settings


[*]customize vendor/user settings 退出保存



进入linux kernel v2.4.20-uc0 configuration 界面
File Systems -->



Network File Systems -->



[*] NFS file system support



[*]Provide NFSv3 client support退出保存


进入uClinux-v1.3.4 configuration界面


Network Application--------------->


[*]portmap 退出


busybox-------------------->


[*]mount


[*]mount :support NFS mounts



配置完后,重新编译内核 烧写flash



(2)目标板启动后,要能ping通主机



根目录下:/>portmap 后台运行


/> mount Ct nfs 172.22.3.131:/nfs/rootfs /var/tmp


等到/>出现,说明mount 成功了,若主机/nfs/rootfs下有文件,目标板/var/tmp中应能看到



172.22.3.131为主机IP,/nfs/rootfs为主机服务器开放给目标板的目录


二、配置内核为可动态加载模式的


make menuconfig 选中[*]customize kernel settings


[*]customize vendor/user settings 退出保存


进入linux kernel v2.4.20-uc0 configuration 界面

Loadable module support --->


[*] Enable loadable module support


[] Set version information on all module symbols (NEW)


[*] Kernel module loader (NEW) 退出保存
进入uClinux-v1.3.4 configuration界面


busybox---------------->


[*]insmod


[*]rmmod


[*]lsmod
----------other feathers


[*] Post 2.1 kernel modules


[*]model version checks 退出保存


重新编译内核 即可


leddrv.c编译方式:


arm-elf-gcc -D__KERNEL__ -I你的uClinux目录/linux-2.4.x/include-Wall -Wstrict-prototypes -Wno-trigraphs -O2-fno-strict-aliasing -fno-common -fno-common -pipe -fno-builtin -D__linux__ -DNO_MM -mapcs-32 -march=armv4 -mtune=arm7tdmi -mshort-load-bytes -msoft-float -DMODULE -c -o leddrv.o leddrv.c


writeled.c编译方式;arm-elf-gcc -Wall -O2 -Wl,-elf2flt -o writeled writeled.c


编译完后将leddrv.o和writeled拷贝到主机/nfs/rootfs下 就可调试了


由于uClinux是用romfs,所以/dev目录是只读,所以设备节点必须在制作romfs时制作进去,修改vendors/Samsung/4510B/Makefile


在DEVICES = \


最后加上leddrv,c,254,0 重新编译内核,在目标板上/dev下应该出现leddrv设备了


目标板上nfs连接成功后就可用/var/tmp>insmod leddrv.o和/var/tmp>./writeled看到驱动的效果了

标签:嵌入式单片机MCU
uClinux下驱动开发入门精华―修改后的《详解第二版》的驱动
本地下载

评论