![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux嵌入式
文章平均质量分 96
应用开发、驱动开发
国家级退堂鼓
这个作者很懒,什么都没留下…
展开
-
韦东山嵌入式Liunx入门应用开发二(含课后作业、代码详解)
输入设备:常见的有键盘、鼠标、遥控杆、书写板、触摸屏等。用户通过这些输入设备与 Linux 系统进行数据交换。输入系统:Linux系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的框架。框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的API去使用设备。是Linux操作系统的一个输入设备,代表了计算机上的第一个物理输入设备,通常是键盘、鼠标、触摸屏。所有输入设备都被视为文件,以便于使用文件I/O操作来读写或写入输入设备的数据。原创 2024-02-26 09:22:34 · 1203 阅读 · 0 评论 -
韦东山嵌入式Liunx入门应用开发一(含课后作业、代码详解)
系统调用可以将用户空间的虚拟内存地址与文件进行映射绑定,操作系统可以将一个文件的内容映射到进程的地址空间中,对映射后的虚拟内存地址采用指针的方式读写操作这一段内存就如同对文件进行读写操作一样。我们只需要移植这个字体引擎,调用对应的API 接口,提供字体文件,就可以让freetype 库帮我们取出关键点、实现闭合曲线,填充颜色,达到显示矢量字体的目的。传统的读写文件方式中,对于修改文件内容的步骤:①把文件内容读入到内存中 ②修改内存中的内容 ③把内存的数据写入到文件中。在Linux系统中,一切皆文件。原创 2024-01-25 14:17:58 · 1205 阅读 · 0 评论 -
韦东山嵌入式Liunx入门驱动开发五(定时器、中断下半部、mmap)
从button_fasync 指针中,取出 fasync_struct 结构体,从这个结构体的 fa_file 中得到接收方的PID ,然后使用 send_sigio函数发送信号。也可以清除这个位表示阻塞。启动了FASYNC 功能的话,驱动程序的 button_fasync 就被设置了,它指向的 fasync_struct 结构体里含有 filp里含有PID。按键触发中断,进入中断处理函数,若不断发生机械振动,会不断进入中断处理函数更新定时器超时时间,时间到后进入定时器处理函数,打印GPIO端口信息。原创 2024-03-03 22:49:40 · 1219 阅读 · 0 评论 -
韦东山嵌入式Liunx入门笔记一
如上述所示,连接好后。首先上电,拨下电源接口附近的开关,看见红灯亮,开机即可。(博主一开始没按,导致一直出错,哈哈哈哈哈)使用MobaXterm软件打开串口,在串口看到“”时(看不见就一直回车刷新,有可能被屏幕数据覆盖了),输入root 并回车即可,如。原创 2024-01-25 14:15:11 · 1484 阅读 · 0 评论 -
韦东山嵌入式Liunx入门驱动开发二(设备树、按键驱动)
一个节点的compatile 属性 ,它的值是4者之一:“simple-bus”, “simple-mfd”, “isa”, “arm,amba-bus”, 那么它的子节点(需含compatile 属性)也可以转换为 platform_device。(3) APP得到poll/select 函数的返回结果后,如果确认是有数据的,则再调用read函数,这会导致驱动中的read函数被调用,这时驱动程序中含有数据,会直接返回数据。一个单板启动时,uboot 先运行,它的作用是启动内核。原创 2024-02-28 09:36:46 · 971 阅读 · 0 评论 -
韦东山嵌入式Liunx入门驱动开发三(GPIO和Pinctrl子系统的使用)
注意,pin controller和GPIO Controller不是一回事,前者控制的引脚可用于GPIO功能、I2C功能;即先用pin controller把引脚配置为GPIO,再用GPIO Controler把引脚配置为输入或输出。在驱动代码中使用GPIO子系统的标准函数获得GPIO、设置GPIO方向、读取、设置GPIO值。在设备树中指定了GPIO引脚,在驱动代码中使用GPIO子系统的接口函数。要操作GPIO引脚,先把所用引脚配置为GPIO功能,这通过Pinctrl子系统来实现。原创 2024-03-01 14:04:07 · 1160 阅读 · 0 评论 -
韦东山嵌入式Liunx入门驱动开发一(Hello 驱动编程、字符设备、GPIO基础知识、LED驱动、总线设备驱动模型)
对于硬件资源,用结构体来表示;对于硬件的操作,用结构体表示。在内核中有一个虚拟的总线,它有2个链表结构,左边是设备Dev链表,右边是驱动Drv链表。左边的设备链表和右边的驱动链表会进行一一比较(通过platform_match函数),若匹配成功,就会调用中的probe函数。如何进行匹配?(2) platform_device结构体(3) platform_driver结构体总线设备驱动编写程序步骤(1) 分配、设置、注册结构体,在里面定义所用资源,指定设备名字。原创 2024-02-28 09:36:05 · 1567 阅读 · 0 评论 -
韦东山嵌入式Liunx入门应用开发三(含课后作业、代码详解)
当它就绪后,就可以不再驱动三极管,这是上拉电阻把SCL 变为高电平,其他设备就可以继续使用I2C总线了。SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus ,而不是使用单独的控制线,这样可以节省设备的管脚数。数据传输,当主设备发送完8位以后,第9位为ACK应答信号,此时主设备不驱动三极管,而要发应答信号时,从设备驱动三极管,即当A=1;SMBus 是基于I2C协议的,SMBus 要求更严格,SMBus是I2C协议的子集。原创 2024-02-26 09:23:32 · 971 阅读 · 0 评论 -
韦东山嵌入式Liunx入门驱动开发四(异常与中断)
在Linux 系统中使用中断,可以使用request_irq函数为某个中断irq注册中断处理函数handler,handler运行中断的上半部分,并且触发软中断或者把工作放入工作队列,使用线程化来处理中断下半部分。这个函数通常用于注册一个中断处理程序,当中断发生时,会调用指定的中断处理函数来处理中断,而线程中断处理函数则会在一个独立的线程中运行,以避免中断处理函数执行时间过长导致系统性能下降。在Linux 中,中断处理程序的执行也可能会影响进程的调度情况,例如通过唤醒等待中的进程,或者改变进程的优先级等。原创 2024-03-01 14:04:27 · 1217 阅读 · 0 评论