uClinux下驱动开发入门精华――修改后的《详解第二版》的驱动
时间:2019-12-23
大小:2.14KB
阅读数:176
查看他发布的资源
资料介绍
修改后的《详解第二版》的驱动作者:violetwave应网有要求把修改后的驱动和调试的过程、方式贴上来附件中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.cwriteled.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看到驱动的效果了……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或
联系我们 删除。