- 博客(18)
- 收藏
- 关注
原创 Linux驱动开发--SPI子系统
引脚含义DO(MOSI)SPI主控用来发出数据,SPI从设备用来接收数据DI(MISO)SPI主控用来发出数据,SPI从设备用来接收数据SCKSerial Clock,时钟CSChip Select,芯片选择引脚SPI控制器内部结构传输示例假设现在主控芯片要传输一个0x56数据给SPI Flash,时序如下:首先CS0先拉低选中SPI Flash,0x56的二进制就是0b0101 0110,因此在每个SCK时钟周期,DO输出对应的电平。
2025-03-28 20:45:22
1098
原创 Linux驱动开发--IIC子系统
I2C 是很常见的一种总线协议, I2C 是 NXP 公司设计的, I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。I2C 总线工作是按照一定的协议来运行的,接下来就看一下 I2C 协议。1、起始位。
2025-03-24 16:56:52
1195
原创 platform总线、设备与驱动
Linux设备驱动开发详解:基于最新的Linux 4.0内核 (宋宝华)》一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、PC、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,在SoC系统中集成的独立外设控制器、挂接在SoC内存空间的外设等却不依附于此类总线。基于这一背景,相应的设备称为,而驱Linux发明了一种虚拟的总线,称为platform总线,而驱动成为。,而它们本身就是字符设备。
2025-03-23 14:07:05
933
原创 Linux 设备驱动的软件架构思想
Linux的字符设备驱动需要编写成员函数,并负责处理阻塞、非组塞、多路复用、SIGIO等复杂事物。但是,当我们面对一个真实的硬件驱动时,假如要编写一个按键的驱动,作为一个“懒惰”的程序员,你真的只想做最简单的工作,譬如,收到一个按键中断、汇报一个按键值,至于什么、几种 I/O 模型,那是 Linux 的事情,为什么要我管?Linux也是程序员写出来的,因此,程序员怎么想,它必然要怎么做。于是,这里就衍生出来了一个软件分层的想法,尽管。
2025-03-23 11:22:43
1088
原创 驱动开发的引入
在 /sys/bus的 pci等子目录下,又会再分出 drivers和devices目录,而devices 目录中的文件是对/sys/devices目录中文件的符号链接。**udev的设计者认为devs所提供的打开/dev节点时自动加载驱动的功能对一个配置正确的计算机来说是多余的,由于字符设备的上层没有类似于磁盘的ext2等文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了file_operations正是字符设备驱动的核心。而我们怎样把需要的部分都包含在内核中呢?
2025-03-20 16:30:18
874
原创 嵌入式Linux--从上电到应用程序运行
Linux内核目标系统如下图所示,非常复杂且完善的系统。那么从硬件上电到Linux开发板正常运行,整个过程涉及那些多个阶段和关键步骤呢?
2025-03-19 20:16:15
1156
原创 嵌入式LInux--进程间通信介绍、管道、信号
Linux作为多任务系统,能够同时运行几个进程。通常,各个进程必须尽可能保持独立,避免彼此干扰。这对于保护数据和确保系统稳定性都很有必要。但有时候,应用程序必须彼此通信。;;;。,必须防止这种情况。因此内核不仅提供了共享数据的机制,同样提供了协调对数据访问的机制。内核仍然采用了来自System V的机制。用户空间应用程序和内核自身都需要保护资源,特别是后者。在SMP系统上,各个CPU可能同时处于核心态,在理论上可以操作所有现存的数据结构。为阻止CPU彼此干扰,需要通过锁保护内核的某些范围。
2025-02-26 23:07:36
968
原创 嵌入式Linux--共享内存与信号量
可用于进程间通信的方式通常都可以用于线程间通信。无名信号量和有名信号量均可用于进程间通信,有名信号量是通过唯一的信号量名称在操作系统中唯一标识的。无名信号量用于进程间通信时必须将信号量存储在进程间可以共享的内存区域,作为内存地址直接在进程间共享。而内存区域的共享是通过内存共享对象的唯一名称来实现的。无名信号量和有名信号量都可以作为二进制信号量和计数信号量使用。二进制信号量和计数信号量的区别在于前者起到了互斥锁的作用,而后者起到了控制进程或线程执行顺序的作用。而不仅仅是信号量取值范围的差异。
2025-02-26 16:08:41
715
原创 嵌入式Linux--网络编程--TCP
就会进入LAST_ACK状态。**当TCP连接的一端接收到对方的FIN报文并发送了ACK报文后,它会进入TIME_WAIT状态。该状态会持续一段时间(2倍的MSL,最大报文生存时间),以确保对方接收到最后一个ACK报文。**这样可以正确地关闭连接,并确保旧的重复报文不会在网络中造成混乱。
2025-02-23 19:50:11
832
2
原创 嵌入式Linux--网络编程--UDP
*由于UDP不存在握手这一步骤,所以在绑定地址之后,服务端不需要listen,客户端也不需要connect,服务端同样不需要accept。**只要服务端绑定以后,就可以相互发消息了,由于没有握手过程,两端都不能确定对方是否收到消息,这也是UDP协议不如TCP协议可靠的地方。客户端不需要绑定:**服务端绑定地址的主要目的是告诉操作系统:“我将在某个特定的端口上接收来自客户端的数据”。**注意点2:只有发送的时候需要指定地址:**需要指定目标地址(),因为UDP是无连接的,必须告诉操作系统数据的去向。
2025-02-23 19:49:12
865
原创 嵌入式Linux--网络编程--计算机网络分层体系结构
综上所述,TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。参考:小林coding“”https://www.xiaolincoding.com/network/“”05_尚硅谷嵌入式技术之Linux应用层开发1.0.0。
2025-02-20 22:10:47
1011
原创 嵌入式Linux--项目--基于I.MX6ULL的智能家居系统(驱动开发、mqtt、qt、JsonRPC)
基于IMX6ULL,设计的智能家居系统,涉及驱动开发、应用开发(Qt、mqtt远程控制)JsonRPC前后端分离的设计思想;适合刚入门的新手做项目练手,以此为基础想更深层学习打下基础。
2025-02-14 23:28:17
1562
原创 嵌入式Linux--系统移植相关概念
如果学习过 UCOS/FreeRTOS 应该知道, UCOS/FreeRTOS 移植就是在官方的 SDK 包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。那么 Linux 的移植是不是也是这样的,下载 Linux 源码,然后找个和我们所使用的芯片一样的工程编译一下就可以了?很明显不是的!Linux 的移植要复杂的多,在移植 Linux之前我们需要先移植一个代码,这个 bootloader 代码用于启动 Linux 内核, bootloader有很多,常用的就是 U-Boot。
2025-02-04 14:18:07
760
原创 嵌入式Linux--系统调用与标准io库的区别
上述流程中,最耗时的部分就是“穿墙”,人家在墙前面屯字符,等着一块穿墙,而你频繁的穿墙,自然耗时更多。当穿过了墙之后,内核经过操作系统,会向磁盘上输出数据,此时我们也不是一个字符一个字符就往磁盘上传输的,内核中间也有一个缓冲区,缓冲区的大小默认为4096.至于什么时候输出上去,这个过程我们不做深入研究,我们只需要知道,操作系统有一套自己的算法逻辑,待到合适的时机自然会将数据刷出去。其中,内核空间的缓冲区称之为系统级缓冲区,而像fputc这种函数内置的缓冲区称为用户级缓冲区。
2025-01-18 11:51:34
392
原创 嵌入式Linux--终端terminal与shell的区别
Linux 是一个操作系统,全称 GNU/Linux,是一种类 Unix 操作系统,Linux 一开始是没有图形界面的,所有操作都靠命令完成。如 “磁盘操作、文件存取、目录操作、进程管理、文件权限” 等等,可以说 Linux 就是由命令行组成的操作系统。
2025-01-14 15:56:14
807
原创 压缩感知成像学习记录--2--ADMM算法
优化问题(Optimization Problem)是指在一定约束条件下,寻找一个变量的值,使得某个目标函数(Objective Function)达到最小值或最大值的问题。优化问题可以表示为以下一般形式:minx∈Xf(x)% MathType!MTEF!2!1!+-% feaahGart1ev3aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn% hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr% 4
2025-01-14 15:40:26
1071
原创 压缩感知成像学习记录--1--压缩感知基础知识
压缩感知允许我们从远少于传统采样定理(如Nyquist-Shannon采样定理)所需的样本中恢复信号。这种技术基于一个观察:许多信号在某种变换(如傅里叶变换、小波变换等)下是,即信号在这种变换下只有少数几个非零系数,我们就能以较低的频率(远低于奈奎斯特采样频率)采样该信号,并可能以高概率精确的重建该信号。
2025-01-12 20:09:58
940
1
嵌入式Linux-项目-基于I.MX6ULL的智能家居系统(驱动开发、mqtt、qt、JsonRPC)
2025-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人