
在我离开工作之前,工作内容几乎没有涉及驾驶知识. 我要做的是将客户端对设备的请求拆分为一个接口,并调用驱动程序设置进行配置. 当然,关于驱动程序的实现方式,取决于具体情况. 例如,某些驱动程序是由芯片制造商直接编写的. 假设芯片制造商为相应的平台提供SDK功能,那么驱动程序的工作就是封装这些SDK功能. 另一种是为特定平台编写驱动程序. 接口. 例如,现在您需要编写串行端口,i2c,i2s,FLASH,网卡,LCD,触摸屏,USB驱动程序. 目前,您手中只有一堆芯片手册. 是否可以成功调试取决于您自己. 当然,在正常情况下,特定平台上会有很多相同类型的演示代码. 您可以根据葫芦图纸对其进行修改. 除了中断,地址,读和写等外,大多数逻辑没有太大不同. 至于修改的速度,取决于您.
我们今天谈论的是linux驱动程序的编写. 现在linux驱动程序越来越流行,主要有以下几个原因: 1)linux平台是免费的,许多芯片制造商希望linux平台支持其产品; 2)最近,android平台非常热,这有助于linux帮助隐形,从事Linux驱动程序的人数也有所增加; 3)有收入. 根据当前的基本市场,驱动程序的收入高于普通开发工程师的收入. 可以从招聘网站上获得. 答案如此之多,所以很多朋友也很高兴去这条线. 因此,此时,许多朋友可能会有疑问. 您真的需要了解Linux的芯片驱动程序设计吗?
实际上,驱动程序和linux是两个不同的东西. 以LCD为例,我们可以在Windows ce上编写驱动程序,或者使用linux framebuffer编写驱动程序. 当然,如果您是交流的朋友,也可以使用vxworks作为驱动程序. 驱动程序没有限制,但必须将其链接到特定的操作系统平台才有意义. 一位朋友说,当然有必要安装操作系统吗?实际上,您不需要操作系统. 您可以做一个简单的while(1)前端系统,但是此开发的效率不高,并且可伸缩性也不好. 既然Linux已经为我们构建了框架,为什么我们不能直接将其用于处理?
熟悉Linux平台的朋友都知道. 在Linux上,所有设备都可以视为文件. 我们在设备上的所有操作都可以简化为打开,关闭,读取,写入和io控制. 至于这些操作的功能,我们需要自己实施. 现在,Linux驱动程序的开发过程已经非常成熟,除了大量的演示代码,书籍外,互联网上还有很多视频可供学习. 其中,我个人更喜欢宋宝华和魏东山的书. 前者倾向于更具理论性,而后者的书则更加注重实践部分的内容.

话虽如此,您可能会问如何做好Linux驱动程序开发工作?对于我自己来说,这通常可以解决,
(01)找到两台计算机,一台计算机安装Windows系统,另一台计算机安装linux系统. 至于类型,没有限制;
(02)要检查linux系统的版本类型,请输入uname -r;
(03)根据获取的Linux内核版本,在其上搜索合适的内核版本,然后直接使用wget下载它;

(04)使用tar解压缩内核版本,将启动时的配置文件复制到本地,输入make menuconfig并直接保存;
(05)输入make -j2和make modules_install&make install,系统重新启动;
(06)linux系统启动后,注意选择grub启动时刚编译的内核版本,以便可以在linux上开发内核驱动程序;
(07)在Windows平台上安装secureCRT工具并与linux连接;

(08)输入以下代码,分别是hello.c和Makefile,其中hello.c如下所示
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("feixiaoxing");
MODULE_DESCRIPTION("This is just a hello module!\n");
static int __init hello_init(void)
{
printk(KERN_EMERG "hello, init\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_EMERG "hello, exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile的内容如下
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif

(09)当然linux 驱动,编译时直接进行,前提是这两个文件必须在目录中;
(10)编译后生成hello.ko文件,可以认为它是普通的执行文件;
(11)如果需要安装linux 驱动,只需insmod hello.ko,输入dmesg |. 尾部查看打印的内容,输入lsmod | grep hello,看看是否已经安装了模块;
(12)如果要删除模块,只需输入rmmod hello,当然,添加和删除操作需要在root模式下进行.
因此,这些是针对Linux驱动程序的简单开发步骤.
以上是本文的全部内容,希望对大家的学习有所帮助,并希望每个人都支持此脚本.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-203722-1.html
#易烊千玺##易烊千玺献声小王子#千千
知道为什么中共对所谓的岛内运动不屑一顾吗