免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xxmv99
打印 上一主题 下一主题

请教关于uclinux驱动的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-07-13 17:41 |只看该作者
有mknod,
ls /dev
也有注册的东西,但在应用程序里fd1= open("/dev/led" , O_RDWR)后就跑不下去了~

论坛徽章:
0
12 [报告]
发表于 2009-07-13 17:42 |只看该作者
不对不对,过了10秒钟左右才跑下去,奇怪,我检查下我的代码。

论坛徽章:
0
13 [报告]
发表于 2009-07-13 17:44 |只看该作者
  1.  
  2.  PART A 修改驱动
  3. 1) 把led.h和led.c 丢到目录uClinux-dist/linux-2.4.x/drivers/char中
  4. 2) 修改文件
  5. ===============START==============
  6. uClinux-dist/linux-2.4.x/drivers/char/Makefile
  7. ----------------------------------------------
  8. obj-$(CONFIG_C5471_WDT) += wdt_c5471.o之后加
  9. obj-$(CONFIG_LED) += led.o
  10. ================END============
  11. 3) 修改文件
  12. =================START===========
  13. uClinux-dist/linux-2.4.x/drivers/char/Config.in
  14. -----------------------------------------
  15. if [ "$CONFIG_CPU_S3C44B0X" = "y" ]; then
  16.    bool 'Samsung S3C44B0X serial ports support' CONFIG_SERIAL_S3C44B0X之后加
  17.    bool 'Test LED Driver' CONFIG_LED
  18. ================END=================
  19. 4) 修改文件
  20. =================START=============
  21. uClinux-dist/linux-2.4.x/drivers/char/mem.c
  22. -----------------------------------------
  23. 开头的地方扎堆加
  24. #ifdef CONFIG_LED
  25. extern void led_init(void);
  26. #endif

  27. int __init chr_dev_init(void)之后加
  28. #ifdef CONFIG_LED
  29. led_init();
  30. #endif
  31. ================END==============
  32. 5) 继续修改文件
  33. =================START============
  34. uClinux-dist/vendors/Samakmsung/44B0/Makefile
  35. -----------------------------------------
  36. ttypc,c,3,12 ttypd,c,3,13 ttype,c,3,14 ttypf,c,3,15\之后加
  37. \
  38. led,c,231,0 \
  39. ================END==============
复制代码


看了这部分,发现你是编译内核时候编译进去的,你确信lsmod后能看到你的led么?

论坛徽章:
0
14 [报告]
发表于 2009-07-13 17:51 |只看该作者
嗯,我看到网上有比较多的这种方法,刚刚学。

不知道还有什么方法?这种编译内核速度慢,麻烦。

lsmod在目标机上没这个命令.

cat /proc/devices可以看到Character devices:有列出led及设备号

论坛徽章:
0
15 [报告]
发表于 2009-07-13 18:02 |只看该作者
应用程序没有问题,就是在打开设备的时候花了比较长的时候~

郁闷。。。

论坛徽章:
0
16 [报告]
发表于 2009-07-13 18:04 |只看该作者
难道uc不能编译内核模块么?不清楚。你可以在程序result = register_chrdev(231,"led", &LED_fops);下面调用mknod系统调用创建你的设备。

论坛徽章:
0
17 [报告]
发表于 2009-07-13 18:11 |只看该作者
搜搜看uc的内核模块编译方法,谢谢先。

试试你的mknod方法~

论坛徽章:
0
18 [报告]
发表于 2009-07-13 18:13 |只看该作者
shell命令不能用在C语言中啊。

论坛徽章:
0
19 [报告]
发表于 2009-07-13 18:15 |只看该作者

回复 #18 xxmv99 的帖子

论坛徽章:
0
20 [报告]
发表于 2009-07-13 22:25 |只看该作者
现看看register返回的是什么直?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP