b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Linux驱动程序编写的详细说明(入门)

电脑杂谈  发布时间:2020-05-09 04:18:34  来源:网络整理

linux 驱动_串口驱动linux_串口 驱动 linux

在我离开工作之前,工作内容几乎没有涉及驾驶知识. 我要做的是将客户端对设备的请求拆分为一个接口,并调用驱动程序设置进行配置. 当然,关于驱动程序的实现方式,取决于具体情况. 例如,某些驱动程序是由芯片制造商直接编写的. 假设芯片制造商为相应的平台提供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 驱动_串口驱动linux_串口 驱动 linux

话虽如此,您可能会问如何做好Linux驱动程序开发工作?对于我自己来说,这通常可以解决,

(01)找到两台计算机,一台计算机安装Windows系统,另一台计算机安装linux系统. 至于类型,没有限制;

(02)要检查linux系统的版本类型,请输入uname -r;

(03)根据获取的Linux内核版本,在其上搜索合适的内核版本,然后直接使用wget下载它;

串口 驱动 linux_linux 驱动_串口驱动linux

(04)使用tar解压缩内核版本,将启动时的配置文件复制到本地,输入make menuconfig并直接保存;

(05)输入make -j2和make modules_install&make install,系统重新启动;

(06)linux系统启动后,注意选择grub启动时刚编译的内核版本,以便可以在linux上开发内核驱动程序;

(07)在Windows平台上安装secureCRT工具并与linux连接;

串口驱动linux_串口 驱动 linux_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 

linux 驱动_串口驱动linux_串口 驱动 linux

(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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张文娟
        张文娟

        知道为什么中共对所谓的岛内运动不屑一顾吗

        • 王新
          王新

          #易烊千玺##易烊千玺献声小王子#千千

      热点图片
      拼命载入中...