主题 : Tiny6410将LED编译为模块为什么不能加载 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 75189
精华: 0
发帖: 32
金钱: 160 两
威望: 32 点
综合积分: 64 分
注册时间: 2012-08-03
最后登录: 2012-11-04
楼主  发表于: 2012-10-29 19:44

 Tiny6410将LED编译为模块为什么不能加载

使用手册只有hello的使用详细说明,但hello设计不到硬件操作,不能算是真正意义上的驱动开发。在讲到LED的时候只是在手册里列写出了驱动程序而已,没有说怎么去验证它。应该是Linux\examples目录下的led.c就是验证的程序吧。我遇到的问题如下。望大侠尽快给出解决办法。
1:在linux内核源码目录下运行make menuconfig,配置LED编译为模块
        ->Device Drivers
          ->Character devices
           <M>LED Support for Mini6410 GPIO LEDs   注:led模块
           <M>Mini6410 module sample               注:hello模块
2:char/Makefile  关于hello和led的如下未作修改
    obj-$(CONFIG_MINI6410_LEDS)    += mini6410_leds.o
    obj-$(CONFIG_MINI6410_HELLO_MODULE)    += mini6410_hello_module.o
3: 回到源代码目录
    make zImage
    make modules
  在char目录下出现mini6410_leds.ko和mini6410_hello_module.ko
4:将mini6410_leds.ko和mini6410_hello_module.ko拷贝到SD卡中。在目标板预装的linux+qt中复制到/lib/modules/2.6.38-FriendlyARM目录
奇怪的现象出现了
   4.1(正常)
       modprobe mini6410_hello_module
         串口打印 Hello, Mini6410 module is installed!
       rmmod mini6410_hello_module
         串口打印 Good-bye, Mini6410 module was removed!
   4.2(不正常)
       modprobe mini6410_leds
         串口打印 modprobe:module 'mini6410_leds' not found

另外:在Linux\examples目录下的leds应该是配套的测试led模块的代码吧。在这个目录下执行make也不行。
      超级终端打印 make:Nothing to be done for 'all'.
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2012-10-31 11:11
1)  在文件系统增加新的.ko模块后,必须运行depmod ,否则modprobe 可能异常;
2)  led缺省是编译到内核,改成模式方式后,必须更新内核,否则将加载出错;
3) make clean后再 make 就正常了
级别: 新手上路
UID: 76843
精华: 0
发帖: 25
金钱: 130 两
威望: 26 点
综合积分: 50 分
注册时间: 2012-08-30
最后登录: 2013-02-21
2楼  发表于: 2012-11-05 23:02
我的是tiny210开发版,在编译内核时,将主板上的4个LED流水灯改为模块编译,没有载入内核,系统加载后,在终端将mini210_leds.ko 用insmod加载,显示安装成功,用lsmod 也能看到安装好的驱动,但是这4个LED依然是灭的,请问这个加载流程有问题吗,还需要做什么操作?谢谢指点!
级别: 新手上路
UID: 76843
精华: 0
发帖: 25
金钱: 130 两
威望: 26 点
综合积分: 50 分
注册时间: 2012-08-30
最后登录: 2013-02-21
3楼  发表于: 2012-11-05 23:03

 回 1楼(911gt3) 的帖子

我的是tiny210开发版,在编译内核时,将主板上的4个LED流水灯改为模块编译,没有载入内核,系统运行后,在终端将mini210_leds.ko 用insmod加载,显示安装成功,用lsmod 也能看到安装好的驱动,但是这4个LED依然是灭的,请问这个加载流程有问题吗,还需要做什么操作?谢谢指点!