2416开发记录二:最简单的helloworld驱动

发布者:乡村乐园最新更新时间:2019-01-17 来源: eefocus关键字:helloworld驱动 手机看文章 扫描二维码
随时随地手机看文章

1. 编写helloworld驱动程序


驱动程序源码如下:


#include

#include


static int hello_init(void)

{

   printk(KERN_INFO "BBBlackHelloModule enter!\n");

   return 0;

}


static void hello_exit(void)

{

   printk(KERN_INFO "BBBlackHelloModule exit!\n");

}


module_init(hello_init);

module_exit(hello_exit);


MODULE_AUTHOR("Zhao Yidong

MODULE_LICENSE("Dual BSD/GPL");

MODULE_DESCRIPTION("A sample bbblack hello module");

MODULE_ALIAS("a sample module");

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21


2. 编写驱动的makefile


根据PC的hellomodule,修改makefile文件,编辑2416的makefile如下:


#Makefile for .c

ARCH=arm

CROSS_COMPILE=arm-linux-

ifneq ($(KERNELRELEASE),)

    obj-m := HelloModule2416.o

else

#bbblack kernel

KERNELDIR ?= /home/zyd/soft/s3c2416/20140409_HELPER2416/Helper2416/source/s3c-linux.jyx

PWD := $(shell pwd)

modules:

    make -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules

modules_install:

    make -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules_install

app: app.c

    $(CROSS_COMPILE)gcc -o app app.c

clean:

    $(MAKE) -C $(KDIR) M=$(PWD) clean

endif

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18


3. 编译


执行make modules时出现错误 ERROR: Kernel configuration is invalid. 

原来是需要先编译内核 

好吧,到内核目录/home/zyd/soft/s3c2416/20140409_HELPER2416/Helper2416/source/s3c-linux.jyx执行命令 

make ARCH=arm CROSS_COMPILE=arm-linux- zImage 

注意一定要指定目标和编译器。否则编译出来就是x86的了。 

编译完内核之后再编译hellomodule就可以了。 

但是将编译号的hellomodule.ko驱动文件下载到开发板上运行又出错了,貌似是内核又不一致。我草!!!!!!!!


怎么解决呢? 


从原因入手,提示的是开发板的内核和驱动编译的内核不一致导致的, 


开发板的内核使用 uname -r 命令查看如下 


[root@jyxtec /root]# uname -r 

3.2.50+


在开发板启动时有一下信息打印 

Linux version 3.2.50+ (d02cj@LinuxServer0) (gcc version 4.4.6 (crosstool-NG 1.14 

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177


查看驱动的信息如下 

modinfo HelloModule2416.kofilename: HelloModule2416.ko 

alias: a sample module 

description: A sample bbblack hello module 

license: Dual BSD/GPL 

author: Zhao Yidong zmurder@outlook.com 

depends: 

vermagic: 3.2.50 mod_unload ARMv5 p2v8


驱动的内核和开发板的内核是不一致。因为自己在编译驱动前编译了内核(为啥要先编译内核?不先编译内核不让编译驱动啊!!!)。编译出来的内核和开发板上的内核是不一致的!!!!(万恶的开发板商啊,提供的内核编译出来和实际使用的不一样!!) 


好吧,知道了原因就好解决了。 


使用FTP(前提是配置好FTP)将自己编译的内核zImage使用ftp下载到开发板中(参考君益兴开发板手册的3.3.4节,下载,擦出,烧写,指定加载。)


4. 安装卸载驱动


这时再使用insmod就可以了!!!哈哈哈哈!! 


但是问题又出来了,使用rmmod卸载驱动时提示(原因是busybox 不同于发行版 linux 安装,没有生成相应的目录) 

rmmod: chdir(3.2.50): No such file or directory 


好吧,解决方法如下: 

建立一个目录: mkdir -p /lib/modules/$(uname -r) 

将自己的驱动拷贝到这个目录下即可


至此,HelloModule已经完成了。。。。艰难啊!!


关键字:helloworld驱动 引用地址:2416开发记录二:最简单的helloworld驱动

上一篇:STM32:STM32库函数配置
下一篇:2416开发记录三:简单LED驱动及应用程序

推荐阅读最新更新时间:2024-03-16 16:22

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)
操作系统是用来管理系统硬件、软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件。根据不同的种类,又可分为实时操作系统、桌面操作系统、服务器操作系统等。对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求。笔者此处就uCOS-II的移植作一个简单的介绍。 1. 代码准备 uCOS-II V2.91源码,这个版本的源码是uCOS-II的最新版本,请读者自行从Micrium官网或其它网站下载这个版本的源码,当然,其它版本的uCOS-II也是一样方式移植的。Micrium官网也给出了一些cpu的移植范例,
[单片机]
[初级教程]samsung s3c2416x 的启动方式
1.背景知识 s3c2416x这款芯片,官网宣称是对s3c2440的完美替代,对比了这两块芯片,发现s3c2416只能说在手持PDA等方面确实比2440强,其他的部分,感觉都差不多。好了,话不多少,直接进入正题,今天要说的是改芯片的所支持的启动方式。 根据三星提供的s3c2416x的datasheet来看,确切说,提供了3版的datasheet,分别是2008年的3月,2008年的09月第二次修订版,2009年的04月第三次修订版,这三个版本中对s3c2416x的启动方式经历两次的修改,并最终提供了iROM的启动方式,那我们先来看看提供了哪几种启动方式先: Norflash启动的方式 Nandflash启动的方式 iROM
[单片机]
[初级教程]samsung s3c<font color='red'>2416</font>x 的启动方式
2416开发记录十一:按键驱动(platform/中断)
在前面几章的基础上编写了一个按键中断的驱动,并验证成功。 这里用到了字符设备驱动,platform驱动,并有资源的获取,算是比较全面的platform驱动了。 首先是设备模块代码 //my2416PlatformKeyDev.c #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved