查看: 1283|回复: 0

[培训] 嵌入式驱动开发培训必备的技能是什么?粤嵌来点评

[复制链接]
发表于 2019-4-10 16:07:17 | 显示全部楼层 |阅读模式
  驱动程序开发是嵌入式Linux项目中工作量大的一部分内容,开发出高质量的驱动程序是项目成功的关键,那么嵌入式驱动开发培训必备的技能是什么?西安嵌入式培训介绍一下,记得要看下去哦。
  首先嵌入式驱动开发你要了解,驱动和linux是两码事,就拿一个lcd来说,我们可以在windows ce上编写驱动,也可以利用linux framebuffer编写驱动,当然如果是做通信的朋友,也可以利用vxworks来做驱动。驱动没有限制,但是它也要和具体的操作系统平台联系起来,这样才有意义。当然又有朋友说了,非要操作系统不可吗?其实不要操作系统也可以,做一个简单的while(1)前后台系统系统也可以,只不过这样开发的效率不高,而且可扩展性不好。既然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培训可以让学员学会操作系统的编程方法,这门软件技术可以让学员从事软件开发工作,粤嵌开设的嵌入式培训班有专门的讲师到班级面授嵌入式开发技术,课后有课程助理讲师进行跟班辅导,保证学员有问题可以及时解决。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表