Bruceoxl
BruceOu,于2017年10月13日开始在CSDN上写博客,博客专注于嵌入式开发、人工智能等。欢迎各位朋友来访!
邮箱: ouxiaolong@bruceou.cn
展开
-
Linux驱动开发博文导航
Linux驱动开发我已经酝酿很久了,有网友催我尽快有更新,博主今天就把以前的博文整理一下,另外我也会不断更新,希望对感兴趣的朋友有所帮助,在此感谢CSDN这个平台给出了这个一个交流的机会,也感谢大家的支持。Linux相关的网站U-BootLinux内核busyboxLinux驱动开发第1章 驱动内核模块开发第2章 字符设备驱动结构第3章 字符设备驱动开发(A)第...原创 2019-09-19 16:49:45 · 1370 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第9章 进程上下文、中断上下文及原子上下文
谈论进程上下文 、中断上下文、原子上下文之前,有必要讨论下两个概念:a – 上下文上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境;具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。b – 原子原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作";9.1为什么会有上下文这种概念内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核原创 2020-09-06 23:20:03 · 457 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第8章 基于平台的GPIO驱动开发
开发环境:主机:Ubuntu14.04开发板:Exynos4412-4412内核:Linux 3.0.158.1 GPIO的初始化在内核源码目录下使用命令“ls drivers/gpio/*.o”,可以看到“gpioexynos4”被编译进了内核。 生成.o文件代表最终被编译进了内核; 除了menuconfig配置文件,还可以通过.o文件来判定该文件是否编译进了内核。打开gpio-exynos4.c文件:$vim drivers/gpio/gpio-exynos4.c在“gpio原创 2020-08-27 23:11:17 · 535 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第7章 杂项设备开发
开发环境:主机:Ubuntu14.04开发板:Exynos4412-44127.1杂项设备的编写杂项设备可以说是对一部分字符设备的封装,还有一部分不好归类驱动也归到杂项设备。为什么会引入杂项设备?第一、节省主设备号如果所有的驱动都是用字符设备,那么所有的设备号很快就用完了,总共就255个主设备号。第二、驱动写起来相对简单如果直接使用封装好的杂项设备,那么就可以减少一步注册主设备号的过程。杂项设备初始化文件杂项设备初始化部分源文件“drivers/char/misc.c”,这一部分原创 2020-08-25 22:27:51 · 437 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第1章 驱动内核模块开发
1.1内核模块机制基础1.1.1内核模块的概念1、模块概念 内核模块是一些可以让操作系统内核在需要时载入和执行的代码,同时在不需要的时候可以卸载。这是一个好的功能,扩展了操作系统的内核功能,却不需要重新启动系统,是一种动态加载的技术。 特点:动态加载,随时载入,随时卸载,扩展功能 2、内核模块的加载作用 内核模块只是向linux内核预先注册自己,以便于将来的请求使用;由目标代码...原创 2018-04-08 10:45:51 · 891 阅读 · 5 评论 -
《Linux操作系统 - 驱动开发》第2章 字符设备驱动结构
2.1 cdev 结构体、设备号相关知识解析2.1.1字符设备基础知识1、设备驱动分类linux系统将设备分为3类:字符设备、块设备、网络设备。图1字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意位置读取一定长度数据的设...原创 2019-08-28 22:10:21 · 529 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第3章 字符设备驱动开发(A)
各位看官,本文有点长,笔者一般都是发长文,感兴趣的就看,不感兴趣您慢走不送,写文不易,还请理解支持!3.1申请字符类设备号3.3.1静态申请字符类设备号字符设备函数在文件“include/linux/fs.h”中,内核提供了三个函数来注册一组字符设备编号,这三个函数: register_chrdev_region()是提前知道设备的主次设备号,再去申请设备号。 alloc_chrd...原创 2019-08-29 21:27:04 · 449 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第3章 字符设备驱动开发(B)
各位看官,本文有点长,笔者一般都是发长文,感兴趣的就看,不感兴趣您慢走不送,写文不易,还请理解支持!【注】开发环境主机:Ubuntu 12.04开发板:Exynos4412(A9)内核:Linux3.0.153.5 LED驱动及应用现在,我们来编写自己LED驱动,编写驱动分下面几步:a – 查看原理图、数据手册,了解设备的操作方法;b – 在内核中找到相近的驱动程序,以它为模板进行...原创 2019-09-02 22:35:49 · 518 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第4章 Linux文件系统与设备文件系统
4.1 udev 设备文件系统4.1.1什么是Linux设备文件系统首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎...原创 2019-09-03 20:45:28 · 627 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第5章 统一设备模型之平台设备
5.1 platform 设备驱动5.1.1 platform总线、设备与驱动在Linux 2.6 的设备驱动模型中,关心总线、设备和驱动3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、S...原创 2019-09-14 20:27:03 · 614 阅读 · 0 评论 -
《Linux操作系统 - 驱动开发》第6章 平台设备开发
我们在前一章讲解了平台设备的相关理论,我们现在总结下,先看下图。这就是平台设备注册的整体流程。图1注册流程图【注1】设备一般都需要先注册,才能注册驱动。现在越来越多的热拔插设备,反过来了。先注册驱动,设备来了再注册设备。查看总线的命令#ls /sys/bus/查看设备号的命令#cat /proc/devices【注2】设备都有主设备号和次设备号,否则255个设备号不够用查看杂项设备号...原创 2019-09-15 21:15:25 · 524 阅读 · 0 评论