lensens

  IT博客 :: 首页 :: 联系 :: 聚合  :: 管理
  7 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
这是学习之路上的一个突破。
对于uclinux来说,调试驱动和应用程序是一个复杂的过程,如果每做一次修改,就要编译一次内核,其工作量是相当巨大的,所以找到一种简单方便的调试方法非常重要,而静态加载驱动和应用程序是工程的最终形式。
记下建立步骤用来备忘和以飨像我这样的小菜虫们,呵呵   (uclinux源码版本为20060311)
1、配置内核:
   功能包括 nfs客户服务端 + 可加载模块功能
   在内核配置界面 :
   Loadble module support ---> [*] Enable loadable moudule support 
                                 [*] Kernel moudule loader(NEW)
   Flie systems ---> Network File Systems ---> <*> NFS file system support
                                               [*] Provide NFSv3 client support
   Networking options ---> [*] IP: fast network address translation
   用户配置界面:
   Network Applications ---> [*] portmap
   BusyBox ---> [*] insmod
                [*] lsmod
                [*] rmmod
2、make dep
   make clean
   make lib_only
   make user_only
   make romfs
   make linux
   make
   下载uclinux_rom.bin到开发板
3、建立开发板与VMlinux的NFS连接 (见 随笔 《uclinux 驱动开发配置》)
4、编写驱动程序
5、编写应用程序
6、在vmware_linux(fedora 10)打开minicom终端   (见 随笔 《uclinux 驱动开发配置》)
7、启动开发板 输入命令:
   >/cd var
   >var/ mkdir mnt
   >var/portmap &   (打开NFS客户端)
   >var/ifconfig eth0 192.168.1.155 (vmware_linux IP 为 192.168.1.107)
   >var/mount -t nfs -o nolock 192.168.1.107:/home/armwork/mnt /var/mnt
8、将编译好的驱动程序.o文件(例 gpio.o) 和 驱动应用程序(例 led  beep) 传到 /var/mnt中
9、输入命令:
   >var/mnt/ insmod gpio.o
   >var/mnt/ lsmod   (查看有没有加载进)
   >var/mnt/ ./led   
   >var/mnt/ ./beep
10、执行不成功,只需修改.c 源码,再编译后,传到/var/mnt中执行调试,很方便。
11、调试成功后,将驱动程序和驱动应用程序加载到内核,编译内核载入就OK了。(见 随笔 《内核添加应用程序》 、 《内核添加驱动程序》)
12、over
posted on 2009-06-18 22:40 lensens 阅读(797) 评论(1)  编辑 收藏 引用

Feedback

# re: uclinux驱动程序简单方便的调试方法——动态加载调试方式 2010-03-05 23:23 jimmyhuang
这种动态加载我遇到了一个问题:加载已经成功了,因为用lsmod命令可以查看到加载的设备了。但是应用程序却无法打开设备,打开/dev文件夹也找不到加载的设备,然后用mknod命令也无法创建节点,这是怎么回事呢?据我所知这是一个很常见的问题  回复  更多评论
  

只有注册用户登录后才能发表评论。