![](https://img-blog.csdnimg.cn/3326fa0e6f5c4dccaf6593716f24fe7f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从0到1学习嵌入式Linux开发
文章平均质量分 93
【本月特惠】|【长期更新】嵌入式开发从裸机到RTOS再到Linux是必经之路,本专栏从Linux系统编程,到Linux驱动开发,再到Linux实战练习,从0到1系统掌握嵌入式Linux开发的要点,并结合操作实践,尽享嵌入式Linux开发之美,来关注吧,你会有收获的。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Winter_world
专注于物联网智能设备开发,目前已完成的项目涉及:医疗健康、智慧养老、智能家居、工控领域,欢迎有需求的各界大佬来撩!
展开
-
Linux——Linux驱动之基本理论常识总结(什么是Linux驱动?Linux驱动需要掌握哪些?ARM处理体系架构及前世今生)
0 引言前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高Linux下的C编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动的总结,后面计划加一些综合实践项目练习。1 什么是Linux驱动?做过嵌入式的都知道裸机程序和带操作系统的程序,这里就不展开讲了,初学者最开始接触的都是裸机程序,main中while大循环跑天下。实际上,掌握了操作系统后,我们会发现基于操作系统的开发更高效,可以分工协作,A去开发应用层软件,B去开发操作系统相关的,C去开...原创 2021-04-06 21:44:48 · 7023 阅读 · 10 评论 -
Linux——使用图形化内核配置工具,执行make menuconfig时出现“make: *** No rule to make target ‘menuconfig‘. Stop.”
Linux——使用图形化内核配置工具,执行make menuconfig时出现“make: *** No rule to make target 'menuconfig'. Stop.”原创 2023-03-01 15:22:06 · 477 阅读 · 0 评论 -
Linux——Linux驱动之iMX6ULL平台下多点触摸屏驱动开发实战(MT协议、多点触摸API、基于框架的触摸驱动编写、触摸芯片驱动)
触摸屏的应用场景很多,比如手机、平板电脑、工业组态显示屏等,触摸屏的种类也很多,从电阻式触摸屏到电容式触摸屏,电容式的成本要比电阻式的稍微贵一点。本次博文我们使用的是多点电容式的触摸屏,总结下如何编写多点电容式触摸屏的驱动,并结合实物进行测试验证。原创 2023-01-06 20:33:40 · 641 阅读 · 0 评论 -
Linux——Linux驱动之iMX6ULL平台下串口UART驱动实现RS232数据通信开发实战(UART驱动框架、源码分析、串口应用程序编写)
串口UART在多数MCU、CPU中都是常见的外设之一,控制器可以通过串口与其他设备进行通信,比如,控制器的串口是TTL电平的,外接一个232/485转换芯片,就可以实现232/485信号的通信,串口直接TTL电平连接GPS模块、GPRS模块等,也可以实现串口通信,以上举的两个例子,放在Linux下要实现串口通信,最终做的就是串口驱动了,本次博文就来讲解下基于iMX6ULL平台,Linux环境下实现串口UART驱动,最终让开发板与电脑间进行RS232数据通信。原创 2022-11-20 11:57:27 · 900 阅读 · 0 评论 -
Linux——Linux驱动之玩转SPI(下)iMX6ULL驱动SPI接口的6轴MEMS传感器芯片实现数据采集开发实战
上一博文讲解了Linux系统下SPI的驱动框架简析及SPI设备驱动代码框架实现步骤,但是并没有实战说明要驱动一个SPI接口的器件,如何去配置设备树,如何实现Linux下通过SPI读取数据等等,具体的SPI设备驱动代码到底该怎么写。本次博文就以一款常用的6轴MEMS传感器ICM20608为例,一步步的看下如何在Linux系统下驱动该器件,最终读取转换数据,并通过串口打印出来。原创 2022-10-23 11:32:17 · 1488 阅读 · 0 评论 -
Linux——iMX6ULL的启动过程详细解析(启动模式配置、启动设备配置、镜像烧写imx文件基本组成)
iMX6ULL支持很多种启动模式及启动设备,如SD/EMMC、 NAND Flash、 QSPI Flash等启动。用户可以自行选择合适的启动设备。对于不同的启动设备其启动模式和启动要求也不一样,比如从 SD 卡启动就需要在 bin 文件前面添加一个数据头(NXP的芯片是在Ubuntu环境下使用imxdownload工具将编译生成的xx.bin添加数据头后转换成xx.imx文件烧写进SD卡中的),其它的启动设备也是需要这个数据头的。学习Linux若不了解启动方式就有点说不过去了,最起码粗略知原创 2022-09-28 21:45:00 · 1745 阅读 · 0 评论 -
Linux——Linux驱动之iMX6ULL硬件平台下使用MfgTool工具进行系统烧写的原理及步骤总结(uboot、kernel、dtb、rootfs)
0 引言 从本次博文开始,所使用的SOC由三星的4412更换为NXP的iMX6ULL,一方面从性能上对比,三星的4412要强于iMX6ULL,其做消费电子类产品更合适些,做工业类产品还是iMX6ULL较合适,iMX6ULL有工业级和商业级的芯片;另一方面从技术配套角度对比,iMX6ULL的技术配套要明显强于4412;另外从性价比角度,4412因为性能更强的缘故成本也是比iMX6ULL更高,市场上能获取到的最小核心板,前者的价格是后者的2倍多了。所以,基于以上考虑,将所使用原创 2022-09-16 16:29:05 · 971 阅读 · 0 评论 -
Linux——虚拟机Ubuntu操作系统下安装samba服务器,实现Windows主机与Linux端方便的进行文件传输
原来使用Windows主机与虚拟机进行文件传输,使用的软件是SSH或者Filezilla,今天接触到一个比较方便的方法,在虚拟机Linux操作系统下安装Samba服务器,然后Windows主机不需要安装额外的软件,即可实现二者之间的文件传输,此处总结下详细步骤。......原创 2022-06-22 10:47:10 · 381 阅读 · 0 评论 -
Linux——Linux驱动之玩转SPI(上)Linux下SPI驱动框架简析及SPI设备驱动代码框架实现步骤
上几篇系列博文总结了如何编写Linux下的I2C驱动,接下来的两篇博文总结下如何编写Linux下的SPI驱动,SPI作为相当常用的串口通信协议之一,我们是一定要掌握的。接下来两篇博文的最终目的是驱动一款常见的SPI接口AD芯片AD7606,可以在应用程序中读取AD转换的数据。本次博文先总结下Linux下SPI框架、SPI设备驱动框架实现步骤、SPI设备与驱动的匹配过程。......原创 2022-06-15 22:30:00 · 767 阅读 · 0 评论 -
Linux——华为云服务器Linux操作系统环境下部署一年一度的年费SSL证书操作步骤详细总结
网站https开头的,都是因为在服务器部署了SSL加密证书,一年一度的SSL免费证书,当到期的时候就要重新在服务器部署一下,原来每次都是交给一位从零培养起来做WEB开发的小兄弟做的(PS:这位小兄弟学习能力很强,交给的任务都能落实到实处,很靠谱,怀念小兄弟1秒钟:)祝愿未来大展宏图),小兄弟毕业了,这点小事再找他也不合适。最近事情也多,本来想直接续费算了,一看腾讯云上最便宜的SSL证书一年要花费2260,索性自己来重新申请个免费的重新部署到服务器吧,一套下来也不复杂,这里记录下云服务器Lin...原创 2022-06-10 14:11:26 · 1485 阅读 · 2 评论 -
Linux——Linux驱动之玩转I2C(下)I2C driver驱动程序框架实现总结(i2c_driver结构体、框架实现步骤、驱动中读写I2C设备实测)
上一节博文中总结了Linux下的I2C client的具体实现,那么本次博文继续总结下driver部分,其相比client部分的编写要复杂些,但也与注册杂项设备的套路差不多,使用的硬件还是触摸芯片ft5x06。在Linux驱动之玩转I2C(上)中,总结了应用层下操作已有驱动的I2C设备,实现I2C的读写,那么此处我们再深入下,如何具体实现在I2C driver驱动中实现对I2C设备的读写。原创 2022-04-21 20:22:35 · 562 阅读 · 0 评论 -
Linux——Linux驱动之玩转I2C(中)自己实现一个I2C总线client设备(Linux下I2C驱动框架、非设备树下的client、设备树下添加I2C设备节点)
0 引言上一次博文讲解了怎么在应用层操作I2C设备(我们用的是触摸芯片作为I2C设备),前提是你已经有了一个对应的驱动,上一博文我们也是用的现成的驱动。那么,本次博文,我们进一步看下如何自己写一个I2C设备,这里还是以触摸芯片ft5x06为例。1非设备树下实现I2C的clientLinux下的I2C其实也是按照平台总线模型platform的概念设计的,在讲设备树之前,我们写设备驱动也是使用platform框架进行的,需要两个文件,device.c和driver.c,原创 2022-04-14 16:04:35 · 452 阅读 · 0 评论 -
Linux——Linux驱动之玩转I2C(上)应用层下操作已有驱动的I2C设备实战(I2C总线特征、时序、查询I2C设备节点、应用层调用I2C步骤)
做嵌入式开发我们常用到I2C接口,连接传感器、EEPROM等,所以,此处嵌入式Linux驱动开发,我们也不例外,要学会Linux下I2C是如何玩转的。此处我们计划分几个博文进行讲解,本博文先介绍下怎么在应用层操作I2C设备,有了一个初步体验后,在后面的博文中在讲解下如何自己写一个I2C设备驱动。原创 2022-04-06 09:45:02 · 1007 阅读 · 0 评论 -
Linux——Linux驱动之使用输入子系统设计按键驱动实战(输入子系统基本概念、代码获取上报信息、相关函数解析)
我们上一次的博文直接使用中断设计的按键驱动程序,实际上,我们使用的按键也是属于一种输入设备,像鼠标、键盘等都是,那么你应该意识到Linux系统对于某一类设备肯定会搞出一套标准的框架出来,那么本节博文我们学习下输入子系统的概念,并且使用输入子系统设计一个按键驱动。原创 2022-03-28 09:34:16 · 3796 阅读 · 0 评论 -
Linux——Linux驱动之使用内核定时器进行按键消抖的开发实战(内核定时器的基本概念、使用要点、修改定时周期运行)
0 引言无论是单片机裸机还是RTOS,相信大家都使用过定时器,RTOS中也有软件定时器,这个定时器也不是精确的。那么到了Linux系统上,也有内核定时器,效果上跟RTOS下的软件定时器相似,只不过换到Linux下,掌握下Linux下的内核定时器的使用方法,你就可以玩转Linux下的内核定时器了。1 Linux内核定时器基本概念Linux内核定时器是以当前时刻为启动时间点,以未来某一时刻为终止时间点,类似我们常用的手机闹钟,比如,现在是16:50,要定10分...原创 2022-03-21 10:08:43 · 724 阅读 · 0 评论 -
Linux——Linux驱动之GPIO中断的应用实战(下)(中断下文之工作队列的使用,处理非常复杂且耗时的操作)
上一博文中,我们对于使用tasklet进行中断下文的处理,那么还有另外一种处理中断下文的机制,就是工作队列,本次博文我们来学习下工作队列的使用,并结合代码实战,掌握工作队列的使用要点。原创 2022-03-09 22:07:32 · 470 阅读 · 0 评论 -
Linux——Linux驱动之使用等待队列降低CPU的占用率应用实战(阻塞与非阻塞、等待队列的基本概念、相关函数、代码实战)
上一博文中我们学习工作队列的使用,其是中断下文的处理机制之一,还有一个常用的队列叫做等待,它的作用很大,可以用来降低进程对CPU的占用率,设想一下,加入我们的进程的任务就是要不停的去访问一个设备的状态,若是一直while工作,那整个CPU都被该进程占用了,那么在驱动中有没有什么信号能控制这个进程不要一直访问,看信号行事,这就可以使用等待队列了。原创 2022-03-14 12:38:21 · 1085 阅读 · 0 评论 -
Linux——Linux驱动之GPIO中断的应用实战(中)(中断下文之tasklet的使用)
上一博文中,做了一个GPIO中断的应用实战,学会了如何在设备树中指定中断,中断的相关函数,以及如何在驱动中使用中断。不过,从上一篇博文中开篇举例“我正在花园里修剪树木”的故事看,代码中并未体现出“小林去机场接人”这个中断下文,所以,此篇文章继续学习下中断下文,处理中断下文的机制有软中断和工作队列。原创 2022-02-24 18:48:40 · 663 阅读 · 0 评论 -
Linux——Linux驱动之GPIO中断的应用实战(上)(中断概述及相关函数、设备树中指定中断、驱动中获取中断)
0 引言嵌入式系统中,中断是个常见的概念,用过51单片机、STM32等的应该都使用过中断,那么嵌入式Linux中中断又该怎么用呢?本次博文系统的总结下嵌入式Liunx下的中断,结合实战练习掌握中断的使用方法。1 中断相关概述【中断的概念】:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。举一个生活中比拟中断的例子:我正在花园里修剪...原创 2022-02-19 19:49:13 · 5184 阅读 · 0 评论 -
Linux——Linux驱动之使用ioctl接口进行设备参数设置应用实践(ioctl接口命令规则、代码实现)
0 引言上一博文中我们讲了使用pinctrl和gpio子系统操作进行GPIO的配置和操作,在验证时使用一个app应用程序write写0或1 时,就会在驱动中调用misc_write函数,在该函数中又通过copy_from_user函数获取数据,再根据数据判断,使用GPIO操作函数进行IO口的操作。有没有感觉到有些繁琐,是否有一些简单的方法可以简化呢?本次博文要讲的ioctl接口带你解决这个问题。1 ioctl接口概述内核版本3.0以前叫ioctl接口,3.0以...原创 2022-01-20 21:53:53 · 3427 阅读 · 0 评论 -
Linux——Linux驱动之设备树中pinctrl和gpio子系统应用实践(如何使用其在设备树中配置GPIO,驱动中如何调用?)
回顾上一节博文,我们操作GPIO输出高低电平控制蜂鸣器,都是直接操作GPIO的相关寄存器完成的,这种方法看似简单,但是跟直接裸机开发没什么区别了。既然Linux下像注册字符设备、杂项设备、platform驱动、设备树下platform驱动都有现成的框架供开发者使用,那么GPIO操作理应也有对应的框架啊,没错,这里要讲的就是操作GPIO的两个驱动框架:pinctl和gpio子系统。原创 2022-01-12 20:44:45 · 3449 阅读 · 0 评论 -
Linux——Linux驱动之设备树下platform总线驱动编写实战(手把手教你设备树下platform总线利用GPIO控制蜂鸣器完整实现过程)
前面博文讲过基于platform总线的设备驱动编写,是分成两个C文件,driver.c(稳定不变的代码)和device.c(变化的代码),但是它仍然有一个缺点,换一个底板,硬件描述就要跟着变,就要重新编译,关于板级的代码越滚越多,被内核视为“垃圾代码”。因此,就出现了设备树,把device.c中的内容变成了设备树文件,编译成二进制文件后,启动时通过bootloader就把硬件描述信息传递给了内核。那么,本次博文,进一步讲下,设备树下platform总线的设备驱动编写,仍以GPIO控制蜂鸣原创 2021-12-10 21:02:18 · 2765 阅读 · 0 评论 -
Linux——Linux驱动之设备树常用的of操作函数获取节点信息实践(设备树中如何添加自定义节点,如何获取节点的信息?)
0 引言 之前讲过platform下driver.c获取device.c中的设备信息是通过platform_get_resource函数获取的,那么要获取设备树中的节点信息,Linux内核也提供了专门的函数。1 of操作函数Linux内核也提供了专门的函数,位于内核目录下include/linux/of.h,以of开头的函数:1.1 两个结构体【device_node结构体】:要想获取设备树上设备节点的其他属性信息,首先要获取到这个设备节点,Linux内核用devi...原创 2021-11-29 23:20:38 · 3280 阅读 · 0 评论 -
Linux——Linux驱动之设备树文件组成及关系解析(Linux下设备树文件在哪里,组成关系,官方给设备树的定位都是什么?)
0 引言 前面的博文讲解了设备的基本语法,以及设备树的编辑环境搭建,那么接下来就要看看如何在设备树中添加自定义节点了。1 设备树的相关文件组成设备树文件分为:bindings:设备树用到的所有宏定义,都放在该目录下,内核源码/include/下 dts:dts为板级文件(如讯为iTOP4412这个开发板),dtsi为平台文件(如三星4412这个CPU平台)设备树参考文档:在内核源码目录/Documentation/devicetree/下,这个官方文档很好的,官方...原创 2021-11-12 14:11:39 · 4856 阅读 · 0 评论 -
Linux——Linux驱动之设备树编译环境搭建实践总结(设备树、uboot、内核编译及镜像烧写)
0 引言设备树中添加自定义节点,编译设备树文件,1 设备树中添加自定义节点cd /proc/device-tree/2 编译设备树文件原创 2021-11-10 21:38:40 · 4570 阅读 · 0 评论 -
Linux——Ubuntu使用个给力的镜像,安装软件速度飞快
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战》长期持续带来更多案例与技术文章分享;欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。——————————————————————————————————【问题】: 今天安装个设备树编译器时,竟然找不到资源,一直使用的163镜像之前还是比较好用的,结果今天出现了这样的问题:【解决方案】:更换个给力的...原创 2021-11-09 21:58:05 · 3747 阅读 · 0 评论 -
Linux——Linux驱动之设备树基本概述及语法总结(为什么会出现设备树,设备树解决了什么问题?)
0 引言1 设备树概述 学习设备树这个新概念,还是首先走好前三步,设备树是什么?为什么会有设备树?怎么使用设备树?本小节先弄明白前两步。【设备树是什么】 设备树是一种描述硬件资源的数据结构,其是通过bootloader将硬件资源传给内核,这样就使得内核和硬件资源描述相对独立。【为什么会有设备树】 回顾下我们之前是怎么写一个驱动程序的,以一个杂项设备/字符设备驱动驱动为例,Linux下设备驱动的编写,都已经有了现成的框架,我们按...原创 2021-11-02 22:46:14 · 385 阅读 · 0 评论 -
Linux——Linux驱动之基于平台总线platform的设备驱动编写实战(手把手教你以platform形式利用GPIO控制蜂鸣器)
0 引言1 平台总线模型 平台总线模型,这是对初学者而言又是一个新的概念,所以,我们需要从是什么?为什么?怎么做?几个角度详细了解下,便于我们理解。(1)平台总线模型是什么? 平台总线模型,platform,是Linux内核虚拟的一条总线,简单的说,它把原来的驱动C文件分成了两个C文件,稳定不变的放在driver.c中,需要变化的放在device.c中(具体见下面)。(2)平台总线模型为什么会出现? 前面讲的字符设备和杂项设备...原创 2021-10-28 23:36:54 · 970 阅读 · 0 评论 -
Linux——华为云服务器重新挂载云硬盘,数据转移心得记录【建议收藏】
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战》长期持续带来更多案例与技术文章分享;欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。——————————————————————————————————目录0 引言1 挂载云硬盘1.1 划分分区1.2挂载硬盘1.3 开机自动挂载2 业务数据转移3 总结0 引言 毕业季...原创 2021-10-14 17:53:48 · 1583 阅读 · 0 评论 -
Linux——Linux驱动之字符类设备驱动编写实践,从0到1手把手教你字符类设备如何申请设备号,如何注册设备,如何自动创建设备节点
0 引言 关于杂项设备和字符设备的区别,我们在之前的《Linux——Linux驱动之杂项设备(基本概念、注册流程、杂项设备的驱动编写)》博文中有讲解,杂项设备的设备号固定为10,此处我们要讲的字符类设备需要自己或系统给分配设备号,杂项设备可以自动生成设备节点,字符类设备就需要我们自己去生成设备节点。因为以上两点,字符类设备的复杂度和代码量都要多于杂项设备。1 申请字符类设备号申请字符类设备号有两种方法:1.1 静态分配设备号【所在头文件】:内核源码目录下 include/lin...原创 2021-10-12 16:42:59 · 566 阅读 · 0 评论 -
Linux——Linux驱动之驱动模块传参数操作实践,可以用来实现项目中加载驱动的校验,防止被恶意调用
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战》长期持续带来更多案例与技术文章分享;欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。——————————————————————————————————目录0 引言1 驱动模块传参所用函数2驱动模块传参代码实现3 总结0 引言 之前的博文中可见,我们运行应用程序时是可以直接传参数给应用...原创 2021-10-09 15:49:16 · 489 阅读 · 0 评论 -
Linux——Linux驱动之完整的驱动操作硬件基础实践,Linux下如何像裸机那样通过GPIO控制蜂鸣器
1 物理地址与虚拟地址的映射 在单片机中,我们如果知道一个寄存器的地址,往寄存器赋值,可以这么操作:unsigned int *p = 0x12345678;*p = 0x12121212; 但是在Linux中,是不能这么直接对寄存器物理地址直接操作的。因为Linux使用了MMU,在之前的一篇博文中简单介绍过。要想操作硬件,必须先进行物理地址到虚拟地址的映射。 Linux为什么要使用MMU呢?让虚拟地址成为了可能; 让Linux系统...原创 2021-10-07 11:22:14 · 1332 阅读 · 0 评论 -
Linux——Linux驱动之应用层与内核层的数据交互(设备节点操作实践)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战》长期持续带来更多案例与技术文章分享;欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。——————————————————————————————————0 引言 上一博文中详细的带大家演示了编写一个简单的杂项设备驱动,并测试了自动生成设备节点,那么,设备节点到底是干什么的呢?本博文进一步深入学习下应用层...原创 2021-09-07 20:58:21 · 801 阅读 · 0 评论 -
Linux——Linux驱动之杂项设备(基本概念、注册流程、杂项设备的驱动编写)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战》长期持续带来更多案例与技术文章分享;欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。——————————————————————————————————目录0 引言1 什么是杂项设备?2 杂项设备的描述3 注册杂项设备的流程4 编写杂项设备驱动实践5 小结0 引言 杂项设备是开...原创 2021-09-03 14:01:36 · 1503 阅读 · 0 评论 -
Linux——Linux驱动之总线设备驱动注册流程分析及详细操作步骤(下)
目录0 引言1 驱动注册1.1 驱动注册结构体1.2 驱动注册相关的函数1.3 驱动注册实验2 以module方式进行设备注册3 小结0 引言 上一博文中讲解了设备注册的具体实现步骤,接下来本篇博文来总结下驱动注册的具体实现步骤。1 驱动注册 整个设备驱动的注册流程上节博文已经讲了,设备注册OK后,再注册驱动时,首先使用platform_match()函数将platform_device中的id.name与platform_driver原创 2021-06-20 17:24:15 · 826 阅读 · 1 评论 -
Linux——Linux驱动之总线设备驱动注册流程分析及详细操作步骤(上)
0 引言1 Linux总线、设备、驱动注册流程分析总线是处理器和设备之间的桥梁。总线有多种类型,如SPI、IIC、HID、USB等等,每种总线可以挂载多个设备。 使用ls /sys/bus命令查看当前开发板的总线情况:我们注意到,platform是平台总线驱动模型,一条虚拟总线, platform 由内核统一进行管理,提高了代码的可移植性和安全性。所谓的 platform_device 并不是与字符设备、块设备和网络设备并列的概念,而是Linux系统提供的一种附加手...原创 2021-05-31 12:31:42 · 901 阅读 · 10 评论 -
Linux——Linux驱动之Makefile编译总结(编译器路径设置、编译流程分析、编译试验测试)
0 引言在之前的Linux最简驱动的实现中简要的写了一个Makefile文件,本博文对Makefile编译中涉及的编译器路径设置,Makefile编译文件,内核编译流程等进行系统的总结,最后会有简单的测试试验。1 编译器路径设置获取Linux源码后,一般需要自己设置一下编译器的路径,在源码目录下的Makefile文件中,设置CROSS_COMPILE变量,这个变量的值就是编译器的路径,编译的时候也是根据这个路径去找编译器的。我们在之前的搭建嵌入Linux开发环境博文中,也提到过安装交叉编译...原创 2021-05-26 11:55:38 · 2482 阅读 · 22 评论 -
Linux——Linux驱动之使用Menuconfig进行Linux内核的裁剪总结(Menuconfig操作、Kconfig和.config文件的关系)
0 引言嵌入式操作系统都是可以按需裁剪的,保留需要的部分,裁掉项目中不用的部分,可以精简系统,减小ROM和RAM的占用,Linux内核的裁剪是编译器通过.config文件确认哪些编译进内核,哪些被裁剪掉的,而.config文件是通过Menuconfig生成的。本博文就Menuconfig操作和.config文件进行学习总结。1 Menuconfig的操作配置Linux内核可以使用以下命令:make config——基于文本的最传统的配置界面,不推荐使用; make xconfig—...原创 2021-05-18 20:37:12 · 585 阅读 · 7 评论 -
Linux——Linux驱动之最简驱动的实现全流程总结(最简Linux驱动的编写、驱动模块的编译、驱动模块的加载查看和卸载)
目录0 引言1 最简Linux驱动的编写2 驱动模块的编译3 驱动模块测试4 小结0 引言前面博文中铺垫了很多,又讲到Linux的体系架构、Linux内核、Linux源码目录等,那么驱动程序具体是怎么写的?本博文中就从最简单的Linux驱动入手,整体看下实现Linux驱动的套路是怎么样的。1 最简Linux驱动的编写此处实现个最简单的Linux驱动,在加载驱动时打印字符串信息,关注点包括以下几个部分:驱动程序:头文件、声明模块信息、模块驱动的入口和出口、功能区;原创 2021-04-25 19:09:56 · 611 阅读 · 4 评论 -
Linux——Linux驱动之内核基础概览(Linux体系结构、内核结构、内核源码目录结构)
0 引言学习嵌入式Linux,之前也说过,包括几部分:应用开发、驱动开发、内核开发,我们后面的大部分博文都会围绕在Linux驱动开发展开,但是Linux内核有和驱动开发相关联的东西,所以,本博文主要对Linux内核进行提纲挈领,有个总体的认知,内容包括:Linux体系结构、Linux内核结构、Linux内核源码目录结构。1 Linux体系结构Linux体系分为两大块:内核空间(系统调用接口、内核、平台支持代码、硬件支持)、用户空间(用户应用、C库),之所以这样划分是有一定道理的。原因如下:...原创 2021-04-24 14:26:29 · 1597 阅读 · 10 评论