
嵌入式Linux驱动入门
本专栏旨在通过qemu实现嵌入式Linux的驱动开发学习,即无需Linux开发板即可实现驱动开发的入门!
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
ReCclay
优快云认证博客专家、优快云万粉博主、优快云嵌入式领域优质创作者、优快云-2020博客之星年度总评选Top25。自入站以来,凭借坚持与热爱,以博文的方式分享所学,累计博文数量达1千余篇,受益人次达300w+次,涉及领域包括但不限于前/后端软件开发、嵌入式软件开发、Linux驱动开发、自动驾驶算法研究、视觉SLAM算法研究、ROS机器人开发、FPGA开发、IC设计与验证等。欢迎您的关注,我们一起进步!
展开
-
【嵌入式Linux驱动开发】C语言知识(汇总版)
staticstatic全局变量与普通的全局变量区别:static全局变量作用域仅仅是本文件,而全局变量可以在其他源文件通过extern引用!static局部变量和普通局部变量区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数区别:static函数作用域仅仅是本文件,而不带static函数可以在其他源文件通过extern引用!...原创 2020-03-19 22:17:09 · 999 阅读 · 0 评论 -
【嵌入式Linux驱动开发】学习笔记(汇总版)
gcc预处理、编译、汇编、链接gcc -c .s 包括汇编gcc -c .c包括预处理、编译、汇编gcc -o hello hello.c包括预处理、编译、汇编、链接原创 2020-03-15 13:16:50 · 1042 阅读 · 0 评论 -
【NXP出品PINS-TOOL-IMX】IMX6ULL引脚配置工具PINS-TOOL-IMX介绍
概述面向i.MX应用处理器的引脚工具是面向i.MX处理器的Processor Expert®软件的后续产品。这款全新的引脚工具具有直观易用的用户界面,能够帮助您更加轻松快速地配置引脚,然后生成可用于任何C和C++应用的C语言代码。该引脚工具通过多路复用引脚的电器属性来配置引脚信号,并创建器件树片段包含(.dtsi)文件和CSV格式的报告。面向i.MX应用处理器的引脚工具是基于桌面的工具,需要...原创 2020-03-25 17:30:05 · 3624 阅读 · 0 评论 -
【嵌入式Linux驱动开发】番外一、ioctl 系统调用详细解析
劳劳车马未离鞍,临事方知一死难。 三百年来伤国步,八千里外吊民残。 秋风宝剑孤臣泪,落日旌旗大将坛。 海外尘氛犹未息,请君莫作等闲看。 —李鸿章口占七律一、ioctl系统调用 ioctl 系统调用主要用于增加系统调用的硬件控制能力,它可以构建自己的命令,也能接受参数。通过 ioctl 控制硬件 I/O,必须在驱动中为 ioctl()系统调...原创 2020-04-04 23:13:56 · 1060 阅读 · 0 评论 -
【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试
人的前程关于眼界、关乎格局。 志之所趋,无远弗届,穷山复海不能限也; 志之所向,无坚不入,锐兵精甲不能御也。一、I2C驱动框架简介 Linux内核将 I2C 驱动分为两部分:①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。1....原创 2020-04-09 13:51:51 · 780 阅读 · 0 评论 -
【嵌入式Linux驱动开发】二十三、Linux RTC 驱动
待机而举是良谋,成竹在胸方可求。 默默无闻积实力,时成奋起定春秋。 夕楚庄王初登位,三载不发号令休。 不鸣则已鸣即震,一举伐齐胜徐州。文章目录一、Linux 内核 RTC 驱动简介二、RTC 时间查看与设置2.1、查看RTC时间2.2、设置RTC时间一、Linux 内核 RTC 驱动简介 STM32 内部有一个 RTC 外设模块,这个模块需要一个32.768KHz 的晶振...原创 2020-04-09 12:05:29 · 669 阅读 · 0 评论 -
【嵌入式Linux驱动开发】二十一、Linux内核自带的KEY驱动探索
君子应知进退方,时机不到且隐藏。 妆未梳成未见客,势弱稍时敛锋芒。 腹隐良谋待机至,东山再起斗志昂。 遥想曹刘煮酒事,高明刘备扮愚郎。文章目录一、 Linux 内核自带 KEY 驱动使能二、Linux内核自带KEY驱动分析三、设备树节点编写一、 Linux 内核自带 KEY 驱动使能 进入Linux内核源码根目录下,输入make menuconfig打开图形配置界面,按照...原创 2020-04-08 22:36:44 · 670 阅读 · 0 评论 -
【嵌入式Linux驱动开发】二十、一文快速上手 Linux INPUT 子系统,按键驱动的第三种姿势
交友亦有善恶分,竹兰相投是真君。 桃投李抱各进益,兰金之友换真心。 最忌贼友与昵友,大祸临头各自奔。 诤友知己从来少,人生百岁逢几人。文章目录一、INPUT子系统简介一、INPUT子系统简介 按键、鼠标、键盘、触摸屏等都属于输入(input)设备, Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了...原创 2020-04-08 22:01:52 · 553 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十九、Linux MISC 杂项驱动
人生从来少坦途,无过之人自古无。 与其顿足深奥恼,不若取训思克服。 达明观事向前看,积极乐观烦恼除。 他人之议何足论,自得其乐真幸福。文章目录一、Linux MISC 杂项驱动介绍二、编写程序2.1、驱动程序2.2、应用程序三、运行程序一、Linux MISC 杂项驱动介绍 所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。随着 Linux字符...原创 2020-04-08 11:25:16 · 667 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十八、Linux内核自带的LED驱动探索
人生短短如电光,虚度光阴使人伤。但凡成才之伟器,莫不单日当一双。兼程而进倍努力,勇往直前向前方。用好分秒余时隙,方可粒米积成仓。原创 2020-04-08 10:48:52 · 1316 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十七、深入学习异步通知,了解按键驱动的另一种方式
败而不馁胜不娇,傲骨凛凛硬似刀。 富贵不能淫正气,贫贱不能移志高。 威武不能屈气节,八面寒风不折腰。 人中白鹤百世敬,竹节清清入云宵。文章目录一、异步通知深入1.1、异步通知简介1.2、驱动中的信号处理函数1.2.1、fasync_struct 结构体1.2.2、fasync 函数1.2.3、 kill_fasync 函数1.3、应用程序对异步通知的处理1.3.1、注册信号处理函...原创 2020-04-07 22:18:47 · 518 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十六、Linux中的阻塞IO与非阻塞IO
阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式这里的 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作。应用程序对设备驱动进行操作的时候,如果不能获取到设备资源时:那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止阻塞访问最大的好处就是当设备文件不可操作的时候进程可以进入休眠态,这样可...原创 2020-04-07 18:20:01 · 553 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十五、实操Linux开发中的中断,编写第一个按键驱动程序
慷慨歌燕市,从容作楚囚。引刀成一快,不负少年头。这一节来对第十二节【一文带你了解Linux开发中的中断】进行实际操作,编写第一个按键驱动程序!原创 2020-04-05 23:55:14 · 777 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十四、了解Linux内核定时器使用流程,实现LED闪烁
致敬英雄!一、Linux内核定时器初探1、图形界面配置系统节拍率 中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate),单位是 Hz。系统节拍率是可以设置的,在编译 Linux 内核的时候可以通过图形化界面设置系统节拍率。进入Linux内核源码目录,终端输入make menuconfig,依次选择Kernel Features -> Timer frequ...原创 2020-04-04 22:46:43 · 1697 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十三、GPIO按键中断驱动程序编写
我认为,每个人都有一个觉醒期,但觉醒的早晚决定个人的命运。一、按键驱动框架1.1 LED驱动回顾 对于 LED, APP 调用 open 函数导致驱动程序的 led_open 函数被调用。在里面,把 GPIO配置为输出引脚。安装驱动程序后并不意味着会使用对应的硬件,而 APP 要使用对应的硬件,必须先调用 open 函数。所以建议在驱动程序的 open 函数中去设置引脚。 AP...原创 2020-05-03 14:37:03 · 1265 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十二、一文带你了解Linux开发中的中断
一个能思想的人,才真是一个力量无边的人。这一节主要介绍了Cortex-A系列的中断类型,进而了解Linux开发中的中断概念,为后续开发做铺垫!原创 2020-04-01 13:47:50 · 952 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十一、Linux并发与竞争 - 原子操作、自旋锁、信号量、互斥体
一、原子操作原子整形操作API函数描述ATOMIC_INIT(int i)定义原子变量的时候对其初始化。int atomic_read(atomic_t *v)读取 v 的值,并且返回。void atomic_set(atomic_t *v, int i)向 v 写入 i 值。void atomic_add(int i, atomic_t *v)给...原创 2020-03-27 23:29:34 · 732 阅读 · 0 评论 -
【嵌入式Linux驱动开发】十、总结按键读取方法,初探异步通知概念
生活不能等待别人来安排,要自己去争取和奋斗;而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。通过本节可以了解到如下知识:① 驱动的基本技能:中断、休眠、唤醒、 poll 等机制。② APP开发的基本技能:阻塞 、非阻塞、休眠、 poll、异步通知。原创 2020-03-25 12:44:19 · 590 阅读 · 0 评论 -
【嵌入式Linux驱动开发】九、了解重要的Pinctrl和GPIO子系统使用,点亮一盏真的LED
爱,就能使一个人到如此的地步。一次邂逅,一次目光的交融,就是永远的合二为一,就是与上帝的契约;纵使风暴雷电,也无法分解这种心灵的粘合。 前面的几节,直接使用操作寄存器的方法编写驱动。这只是为了更好掌握驱动程序的本质,这一节我们便来看看实际开发中的流程,当然这一次就要真的点亮LED了!原创 2020-03-25 20:15:16 · 1569 阅读 · 5 评论 -
【嵌入式Linux驱动开发】八、LED驱动尽善尽美 - 设备树点亮一盏假的LED
一、回顾编写驱动的三种方法1、资源和驱动在同一个文件里2、资源用Platform_device指定,驱动在Platform_driver实现3、资源用设备树指定,驱动在Platform_driver实现核心永远是 file_operations 结构体。上述三种方法,只是指定“硬件资源”的方式不一样。从上图可以知道, platform_device/platform_dri...原创 2020-03-24 11:37:54 · 641 阅读 · 0 评论 -
【嵌入式Linux驱动开发】七、驱动开发的利器 - 设备树的闪亮登场
受身无间者永远不死,寿长乃无间地狱中之大劫。上一节在介绍总线设备驱动模型时,提到platform平台当修改引脚时,设备端的代码需要重新编译生成platform_device结构体,同时过多的设备对应的.c文件也会造成过多的冗余代码。而本节将迎来设备树,继续解决这一难题!原创 2020-03-24 10:12:15 · 1625 阅读 · 0 评论 -
【嵌入式Linux驱动开发】六、platform 平台驱动模型之总线 - 设备 - 驱动
优雅是永不褪色的美。 这一篇将介绍入门Platform思想及编程方法,为下一篇真正的好戏设备树做准备!原创 2020-03-23 19:36:41 · 708 阅读 · 0 评论 -
【嵌入式Linux驱动开发】五、LED驱动完善 - 面向对象·上下分层·左右分离
除了知情权以外,人也应该拥有不知情权,后者的价值要大得多。它意味着高尚的灵魂不必被那些废话和空谈充斥。过度的信息对一个过着充实生活的人来说,是一种不必要的负担。 这一节我们来了解一下面向对象·上下分层·左右分离思想。原创 2020-03-22 15:34:59 · 2441 阅读 · 0 评论 -
【嵌入式Linux驱动开发】四、LED驱动完善 - 加入iounmap释放虚拟地址
考虑一千次,不如去做一次;犹豫一万次,不如实践一次。华丽的跌倒,胜过无谓的徘徊,迈出第一步,你就成功了一半。在上一节,做IO地址映射时,为求代码精简易于理解,没有加入取消映射,这一节就来继续完善LED驱动程序。原创 2020-03-22 13:17:15 · 774 阅读 · 0 评论 -
【嵌入式Linux驱动开发】三、点亮LED,初探驱动与硬件交互
阅读IMX6ULL的参考手册,我们可以知道IMX6ULL共有 5 组 GPIO( GPIO1~GPIO5),每组引脚最多有 32 个,但是可能实际上并没有那么多。本篇旨在探索IMX6ULL的GPIO操作流程!原创 2020-03-21 22:59:36 · 1029 阅读 · 0 评论 -
【嵌入式Linux驱动入门】二、上手Hello驱动,了解驱动开发流程
Linux 驱动 = 软件框架 + 硬件操作 驱动程序依赖于 Linux 内核,你为开发板 A 开发驱动,那就先在 Ubuntu 中得到、 配置、编译开发板 A 所使用的 Linux 内核。这个我们已经在上一节编译过了qemu模拟的imx6ull单板使用的4.9.88内核。驱动程序与应用程序的命名驱动程序:xxx_drv.c应用程序:xxx_drv_test.c编写驱动程序步骤...原创 2020-03-20 16:27:51 · 3014 阅读 · 0 评论 -
【嵌入式Linux驱动入门】一、基于QEMU的IMX6ULL虚拟开发环境搭建
一、安装1、安装KVM加速qemu运行。sudo apt-get updatesudo apt-get install qemu qemu-kvm libvirt-bin bridge-utils virt-manager2、安装git方便下载qemusudo apt-get install git3、安装QEMU IMX6LL系统镜像(适用ubuntu-16.04开发环境)...原创 2020-03-19 17:40:07 · 6979 阅读 · 24 评论