![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式Linux
分享在嵌入式LINUX学习过程中的感悟
嵌入式螺丝钉
这个作者很懒,什么都没留下…
展开
-
如何定义中断的设备树结点?
怎样在设备树中添加中断信息的描述,为什么采用这种结构?原创 2023-01-29 21:51:11 · 275 阅读 · 0 评论 -
LINUX应用和驱动交互的四种方式
驱动和应用的同步模式简介原创 2023-01-28 21:12:52 · 978 阅读 · 0 评论 -
音频设备树结点分析
音频设备设备树结点解析原创 2023-01-15 21:44:24 · 369 阅读 · 0 评论 -
linux应用访问硬件全流程
(2)根据主设备号,找到要使用的驱动函数,也就是要使用哪一个file_operation结构体。对于字符设备,所有驱动函数都放在一个成员为file_operation结构体的数组中,暂且称它为char_devs。主设备号,就是驱动在这个数组中的下标。驱动在访问硬件以前,需要先映射寄存器地址,将寄存器地址和虚拟地址绑定在一起,驱动通过向虚拟地址写入数据来访问硬件。(1)判定打开文件的性质,比如打开的文件是否是驱动程序。(3)根据寄存器R0的值判断系统要使用file_operation中的哪个函数。原创 2022-11-27 10:01:41 · 488 阅读 · 0 评论 -
使用内核线程驱动SR501模块
内核线程驱动框架原创 2022-07-03 17:56:38 · 113 阅读 · 0 评论 -
红外监测模块Sr501驱动调试笔记(三)
在前两章中实现了模块的驱动框架,实现了轮询监测模块的输出信号。实际应用中,需要同时执行多个任务,不可能让一个线程持续地占用CPU。这就需要使用中断模式,在没有有效信号时,让线程进入休眠,从而节省CPU。下面就在前两节的基础上,添加中断的框架。......原创 2022-06-19 17:31:59 · 365 阅读 · 0 评论 -
SR501调试笔记(二)
红外检测模块的LINUX驱动原创 2022-06-11 20:15:33 · 189 阅读 · 0 评论 -
SR501驱动调试笔记(一)
SR501的设备节点编写及调试原创 2022-06-05 16:47:15 · 386 阅读 · 0 评论 -
字符设备驱动出入口函数简析
linux的驱动ch/* Each module must use one module_init(). */#define module_init(initfn) \ static inline initcall_t __inittest(void) \ { return initfn; } \ int init_module(void) __attribute__((alias(#initfn))); /* This is only required if y原创 2022-04-14 13:34:05 · 256 阅读 · 0 评论 -
linux应用怎样向字符设备传输数据?
linux应用开发同单片机开发最大的不同是程序的分层机制,也就是说应用程序是不能直接操作硬件的。应用程序发出的数据需要经过驱动的处理才能再硬件上有所输出,本文结合应用层和驱动层的调用来解析数据的传输过程。以OPEN函数为例,应用层调用open(“/dev/100ask_led0”, O_RDWR),此时系统会触发SWI中断。系统会根据文件的属性来判断需要调用哪种类型的中断。如果是字符设备驱动,系统会根据主设备号调用对应的驱动程序。应用的数据不能直接传入驱动程序中,驱动程序需要使用copu_to_原创 2022-04-13 20:46:59 · 416 阅读 · 0 评论 -
那什么解析你?设备树节点中断信息
上一期我们解析了如何在设备树中定义一个使用中断的设备树节点。这一期我们以按键为例,解析一下如何提取这个节点中的中断信息。在设备树中,按键节点的定义如下: gpio_keys_100ask { compatible = "100ask,gpio_key"; interrupt-parent = <&gpio5>; interrupts = <1 IRQ_TYPE_EDGE_BOTH>; };1.提取节点的中断信息原创 2022-03-21 14:55:27 · 479 阅读 · 0 评论 -
拿什么定义你?设备树中断节点
一个硬件中断产生以后,会经过GPIOx,SOC,GPC,GIC四层上报到CPU。下面对在设备树中的每一层级进行解析。下面的所有定义都在.dtsi文件中定义intc描述的是中断总开关ARM系统的中断控制器(GIC)用于管理单核或多核系统中的中断的硬件资源。这个单元用如下的代码来描述,intc下的中断需要用三个参数来定义(#interrupt-cells = <3>;)intc: interrupt-controller@00a01000 { compatible = "arm,原创 2022-03-15 16:46:38 · 990 阅读 · 0 评论 -
如何在设备树中定义一个GPIO?
像单片机一样,linux中也需要定义引脚的功能。就像硬件有IOMUX一样,软件也需要有个模块去快速的定义引脚功能。原创 2022-03-11 15:37:51 · 3831 阅读 · 0 评论 -
设备树趣味演义
设备树的作用其实就是硬件资源的配置文件,Bootloader会将这些配置传递给内核,内核识别配置后,将配置展开为Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核,内核会将这些资源绑定给展开的相应的设备。设备树中的每个节点都会在“/sys/firmware/devicetree/base”文件夹下生成一个文件夹,每个节点的属性都会生成一个对应的属性文件。这些文件夹对应内核中的device_node.原创 2022-03-07 12:52:04 · 519 阅读 · 0 评论 -
platform框架演义
platform是为了分离操作和资源而设置的机制。有platform_bustype统一管理。结构如下图所示:原创 2022-03-04 14:32:19 · 449 阅读 · 0 评论 -
量产工具液晶屏部分调试记录
今天调试韦东山老师量产工具项目的显示部分是遇到了奇怪的问题,明明输入了停止LVGL界面系统的界面也执行了测试程序,为什么界面毫无反应?看不到视频中的‘A’字符呢?检查了代码也没有发现逻辑错误啊?一开始怀疑是不是液晶屏的设备节点开启错误,就使用 fd_fb = open("/dev/fb0", O_RDWR); if (fd_fb < 0) { printf("can't open /dev/fb0\n"); return -1; } if (ioctl(fd原创 2022-02-26 19:47:12 · 2044 阅读 · 0 评论 -
趣味解析linux字符设备注册
大家好,我是闪电狐。关于LINUX字符设置驱动的注册有很多解析,今天做一个生活化的解析来帮助大家的理解。linux的驱动设备框架就好像我们的公安局,而每个设备驱动就好像是我们每一个公民,那我们到年龄了想要去领身份证需要提供什么信息呢?首先最重要的当然是我们的姓名了。而注册驱动时是调用register_chrdev,其中的*name参数就是我们设备的姓名了。其次我们是不是要提供一下出生地啊,姓名一类的信息来方便发证机关定位我们这个人呢?这个时候做为设备驱动需要提供的就是file_operati原创 2022-02-26 14:35:52 · 240 阅读 · 0 评论 -
makefile.build解析
顶层目录的makefile的关键编译操作都是在makefile.build中定义的。//把“__build”设置为假想目标PHONY := __build__build://清零obj-y,subdir-y ,EXTRA_CFLAGS变量obj-y:=subdir-y :=EXTRA_CFLAGS :=//包含Makefile,提取Makefile中的变量include Makefile# obj-y := a.o b.o c/ d/# $(filter %.原创 2022-02-25 16:23:03 · 1411 阅读 · 0 评论 -
通用makefile之顶层makefile解析
最近在学习韦东山老师的makefile,感觉只看视频总是看了前面忘了后面,所以决定将理解过程记录下来,在巩固自己所学基础上对大家有所帮助。原创 2022-02-23 13:50:48 · 1093 阅读 · 0 评论