当前位置:首页 > 嵌入式培训 > IT培训问题库 > 嵌入式linux驱动如何学?小白入门必看

嵌入式linux驱动如何学?小白入门必看 时间:2018-07-19      来源:未知

嵌入式发展这么快,很多人都跻身在嵌入式行业,对于新手小白来说,学习嵌入式还是会遇到一些问题,就比如说嵌入式linux驱动, 驱动程序开发是嵌入式Linux项目中工作量大的一部分内容,开发出高质量的驱动程序是项目成功的关键,那么嵌入式linux驱动如何学呢?那我就来谈谈学习嵌入式linux驱动的小窍门,这可是珍藏版哦。

首先嵌入式linux驱动你要了解,驱动和linux是两码事,就拿一个lcd来说,我们可以在windows ce上编写驱动,也可以利用linux framebuffer编写驱动,当然如果是做通信的朋友,也可以利用vxworks来做驱动。驱动没有限制,但是它也要和具体的操作系统平台联系起来,这样才有意义。当然又有朋友说了,非要操作系统不可吗?其实不要操作系统也可以,做一个简单的while(1)前后台系统系统也可以,只不过这样开发的效率不高,而且可扩展性不好。既然linux已经为我们把框架都搭好了,我们为什么不可以把它直接拿来进行利用处理呢?这样又方便又简单。

嵌入式linux驱动

接下来就是嵌入式linux驱动必备的一些技能:

1、 编写Linux设备驱动要求工程师有非常好的硬件基础,懂得SRAM、Flash、SDRAM、磁盘的读写方式,UART、I2C、USB等设

备的接口以及轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。

2、编写Linux设备驱动要求工程师有非常好的C语言基础,能灵活地运用C语言的结构体、指针、函数指针及内存动态申请和

释放等。

3、编写Linux设备驱动要求工程师有一定的Linux内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明

白驱动与内核的接口。尤其是对于块设备、网络设备、Flash设备、串口设备等复杂设备,内核定义的驱动体系架构本身就非

常复杂。

4、编写Linux设备驱动要求工程师有非常好的多任务并发控制和同步的基础,因为在驱动中会大量使用自旋锁、互斥、信号

量、等待队列等并发与同步机制。

掌握了嵌入式linux驱动的知识点,那接下来就是重要的了,实践,嵌入式linux驱动如何实践,看看我是怎么做的吧:

(01)找两台电脑,一台电脑安装windows系统,另外一台电脑安装linux系统,至于类型没有限制;

(02)查看linux系统的版本类型,输入uname -r即可;

(03)根据获取的linux kernel版本,在www.kernel.org上面寻找合适的kernel版本,直接用wget下载即可;

(04)用tar解压内核版本,将boot下config文件拷贝到本地,输入make menuconfig,直接保存即可;

(05)输入make -j2 & make modules_install & make install即可,系统重启;

(06)在linux系统起来后,注意在grub启动的时候选择刚刚编译的内核版本,这样就可以在linux上开发kernel驱动了;

(07)在windows 平台安装secureCRT工具,和linux取得连接;

(08)输入下面的代码,分别是hello.c和Makefile,其中hello.c内容如下

[cpp] view plain copy

1. #include

2. #include

3. #include

4.

5. MODULE_LICENSE("GPL");

6. MODULE_AUTHOR("feixiaoxing");

7. MODULE_DEION("This is just a hello module!n");

8.

9. static int __init hello_init(void)

10. {

11. printk(KERN_EMERG "hello, initn");

12. return 0;

13. }

14.

15. static void __exit hello_exit(void)

16. {

17. printk(KERN_EMERG "hello, exitn");

18. }

19.

20. module_init(hello_init);

21. module_exit(hello_exit);

Makefile的内容如下所示

[cpp] view plain copy

1. ifneq ($(KERNELRELEASE),)

2. obj-m := hello.o

3.

4. else

5. PWD := $(shell pwd)

6. KVER := $(shell uname -r)

7. KDIR := /lib/modules/$(KVER)/build

8. all:

9. $(MAKE) -C $(KDIR) M=$(PWD) modules

10. clean:

11. rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

12. endif

(09)编译的时候,直接make即可,当然前提是这两个文件必须在一个目录下;

(10)编译后生成hello.ko文件,大家可以把它想象成一个普通的执行文件;

(11)如果需要安装,直接insmod hello.ko即可,输入dmesg | tail 可以看到打印的内容,输入lsmod | grep hello也可以看一下模块是否已经安装;

(12)如果删除模块,直接输入rmmod hello即可,当然添加和删除的操作都需要在root模式下进行操作。这是我在学习的时候的一些详细步骤,你get到了吗

嵌入式linux驱动的学习就是这么简单,不要觉得他很难,掌握了这些,它就会是so easy!

上一篇:如何学习arm嵌入式,资深程序员教会你

下一篇:硬件工程师都没人干了?那你还不知道这些吧

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部