
Linux(i.MX8MP)经验
文章平均质量分 83
分享自己工作中遇到的一些经典案例,以供大家参考,如有不得当的地方,请大家及时指正。
思考的下一页
这个作者很懒,什么都没留下…
展开
-
一文轻松让你理解SDIO如何处理中断
为了让SDIO能够接收数据,在SD接口的一个引脚上添加了中断功能。pin 8在4-bit SD模式下为DAT1,用于向主机发出中断信号。SDIO中断是“电平敏感”的,也就是说,中断在低电平下有效。所有Host应在所有数据线DAT[3:0]上提供上拉电阻,如“sdio_v1.0”的第6章所述。4-bit SD模式中pin 8在IRQ和DAT[1]之间共享,设备只能在特定时间发送中断。在SPI和1-bit SD模式中,引脚8专用于中断功能。因此,在SPI和1-bit SD模式下,中断没有时间约束。原创 2024-07-15 10:44:10 · 1132 阅读 · 0 评论 -
SDIO传输数据格式简介
具体的操作流程如下所示:例子:绿色:SDMMC_CLK黄色:SDMMC_CMD,空闲时一直处于高电平其次主控和响应一般包含48个bit的数据,所以48个clk为一个完整的包。要确认的就是:主控发出去命令包后,SD卡端是否有响应。原创 2024-06-28 11:23:50 · 1047 阅读 · 0 评论 -
一文轻松使能Linux PCIe的ASPM
PCIe总线的电源管理包含ASPM(Active State Power Management)和软件电源管理两方面内容。所谓的ASPM是指PCIe链路在没有系统软件参与的情况下,由PCIe链路自发进行的电源管理方式。如下是PCIe的ASPM的状态机,其L1是强制性的规定,而L0s是可选的。原创 2024-06-24 20:06:17 · 3179 阅读 · 0 评论 -
一文让你轻松使能Linux IOMMU/SWIOTLB
这篇文章说明了如何在Linux内核中启用和配置IOMMU和SWOTLB。当今的计算或者嵌入设备使用一种内存分区的方法进行外设的管理,如显卡、PCI设备或USB设备,都将设备映射为一段内存,用于设备的读写。传统意义上的IOMMU用于内存映射,在系统初始化时就已设置,并且在系统运行时不能动态更改,因此有一定的局限性,所以芯片制造商(如Intel和AMD)开发了更先进的内存管理方法。在Linux内核中,我们可以使用Intel的SWOTLB和AMD架构的其他机制来操作IOMMU。原创 2024-06-17 17:02:23 · 1809 阅读 · 0 评论 -
关于IOMMU问题的扩展
如前所述,Steam Deck OLED WLAN速率低问题和IOMMU有一定的关系,这里我们对IOMMU为什么会对速率有影响进行一个较深入的理解。对于IOMMU我相信大家通过网上的资料,或多或少都有一定的了解,那在这里我们只是简单的描述下,具体相关的资料大家可以google等等。。。首先IOMMU(Input and Output Memory Management Unit)可以我们可以直接理解为一个硬件单元,主要的作用是地址的转换和地址的隔离,可以将它和MMU进行类比。原创 2024-06-17 14:39:51 · 2268 阅读 · 0 评论 -
IOMMU page fault
IOMMU is also known as the system MMU (SMMU). It performs memory management functions on behalf of masters that do not have their own MMU.For example, nonprocessor masters. The IOMMU hardware block allows virtually contiguous memory to be backed by phvsica原创 2024-06-17 13:29:26 · 899 阅读 · 0 评论 -
基于RK3588裸Linux的CarPlay、HiCar、CarLife+无线互联系统开发计划
同样,麦克风输入通过音频服务器采集,送往协议服务编码后传给手机。对于语音通话,通过Bluetooth HFP传输声音,BlueZ可与ofono配合或使用其内置HFP支持,将手机语音通话声音输出到车机扬声器,同时采集车机麦克风上传。除上述三大协议外,如果未来需要支持Google的Android Auto或Car Connectivity Consortium的MirrorLink,也需分别通过Google认证和CCC认证,但本项目当前聚焦国内主流的CarPlay/HiCar/CarLife+。原创 2025-03-27 08:00:00 · 696 阅读 · 0 评论 -
Linux 内存架构和内存模型
下图所示,这里还是有4个CPU,其中CPU0和CPU1组成一个节点(Node0),它们可以通过系统总线访问本地DDR物理内存,同理,CPU2和CPU3组成另外一个节点(Node1),它们也可以通过系统总线访问本地的DDR物理内存。下图所示,这里有4个CPU,都有L1高速缓存,其中CPU0和CPU1组成一个簇(Cluster0),它们共享L2高速缓存。另外,CPU2和CPU3组成一个簇(Cluster1),它们共享另外一个L2高速缓存。某些体系架构支持多种内存模型,但在内核编译构建时只能选择使用一种内存型。原创 2025-03-24 08:00:00 · 475 阅读 · 0 评论 -
RK3568平台SDIO接口驱动能力提升指南
例如,当SDIO设备在启动早期就被访问,或需要在操作系统启动前保证引脚电气特性稳定时,可以考虑在Bootloader中配置。具体方法包括:在U-Boot的设备树中做类似的pinctrl配置(U-Boot也使用设备树驱动引脚初始化),或者在U-Boot板级初始化代码中通过寄存器接口设置驱动强度。通过修改板级设备树(例如rk3568-yourboard.dts)中SDIO引脚的pinctrl节点,加入或修改drive-strength属性,就能在Linux启动时应用新的驱动能力设置,如上节所示。原创 2025-03-23 08:00:00 · 1073 阅读 · 0 评论 -
一文教你轻松使用pwclient从社区邮件列表获取补丁
最近在调试Qualcomm的QCA2066 WiFi 6E平台,主控处理器信息如下所示:CPU:Zen 2 4c/8t、2.4-3.5GHz(最高可达 448GFlops FP32)到这里,大家应该能猜到是那个项目,hahaha...。言归正传,回到我们的问题点。在客户的使用Steam Deck OLED的过程中,偶然间发现,Kernel会持续的打印如下的kernel trace,但是Wi-Fi还是可以正常使用,并没有影响其Wi-Fi功能。原创 2024-06-14 14:50:16 · 1169 阅读 · 0 评论 -
在NXP ARM64 Linux上实现SLA(Smart Link Aggregation)
我们想在NXP ARM64 Linux上实现如下SLA(Smart Link Aggregation)的机制,对于其系统我们假定有两个网络节点:eth0和eth1,其中eth0的网关为192.168.0.1,eth1的网关为192.168.10.x。对于此系统我们应该如何实现SLA呢?并有各自的 IP 地址,且有路由可以访问 MPTCP 对端/代理,就能让 MPTCP 自动创建多条子流来利用不同物理链路。只有一方开启 MPTCP 而另一方不支持,实际建立的仍是普通 TCP 连接,不会起到多路径的作用。原创 2025-03-13 08:00:00 · 1272 阅读 · 0 评论 -
Token到底是个什么东西呢?中文和英文的Token化解析是否一样呢?今天让我们揭秘语言背后的数据奥秘
Token到底是个什么东西呢?中文和英文的Token化解析是否一样呢?今天让我们揭秘语言背后的数据奥秘原创 2025-03-05 15:12:35 · 365 阅读 · 0 评论 -
Linux 服务器本地部署 DeepSeek-R1 大模型!在远端Web-UI访问!保姆级教程!
Linux 服务器本地部署 DeepSeek-R1 大模型!在远端Web-UI访问!原创 2025-02-15 18:10:27 · 3159 阅读 · 1 评论 -
深入解析 PCIe 的 iATU(Internal Address Translation Unit)及其工作原理
深入解析 PCIe 的 iATU(Internal Address Translation Unit)及其工作原理原创 2025-02-13 19:49:56 · 736 阅读 · 0 评论 -
ARM64 Linux PCIe 枚举与硬件 GPIO 时序图分析
ARM64 Linux PCIe 枚举与硬件 GPIO 时序图分析原创 2025-01-10 15:44:48 · 1014 阅读 · 0 评论 -
如何在 Windows 10/11 下创建 eth0 的 VLAN 接口
VLAN原创 2025-01-09 11:55:44 · 2239 阅读 · 0 评论 -
如何使用 pnputil 安装驱动程序并避免弹窗
pnputil原创 2025-01-08 16:56:26 · 1127 阅读 · 0 评论 -
Linux “Argument list too long“ 编译错误的解决
交叉编译原创 2024-12-25 13:28:12 · 452 阅读 · 1 评论 -
Linux DNS 协议概述
Linux DNS原创 2024-12-13 20:34:32 · 1278 阅读 · 0 评论 -
PCIe 总线的 ASPM 和 PM 机制总结
PCIe ASPM and PM原创 2024-12-07 15:12:44 · 2507 阅读 · 0 评论 -
一文轻松理解i.MX8MP Linux内核虚拟地址空间布局图
i.MX8MP Linux内核虚拟空间布局。原创 2024-07-24 14:21:30 · 845 阅读 · 0 评论 -
一文轻松理解Linux(i.MX8MP)伙伴系统
伙伴系统中,内存块的大小是2的order次幂个物理页面。Linux内核中order的最大值用MAX_ORDER-1来表示,MAX_ORDER通常是11,也就是把所有的空闲页面分组成11个内存块链表,每个内存块链表分别包括1,2,4,8,16,32,…但是内存碎片对内核是一个问题,因为内核使用直接映射的虚拟地址空间,连续的虚拟页必须映射到连续的物理页。以单页为例说明,0号页和1号页是伙伴,2号页和3号页是伙伴,1号页和2号页不是伙伴,因为1号页和2号页合并组成一阶页块,第一页的物理页号不是2的整数倍。原创 2024-07-30 13:42:37 · 1155 阅读 · 0 评论 -
如何在i.MX8MP平台上为Qualcomm平台的Wi-Fi芯片开辟特定的CMA空间?
Wi-Fi CMA原创 2024-08-14 15:27:14 · 539 阅读 · 0 评论 -
基于i.MX8MP使能USB RNDIS功能
RNDIS原创 2024-08-22 16:05:15 · 592 阅读 · 0 评论 -
PCIe CLKREQ#管脚是由谁控制的?
PCIe原创 2024-08-23 14:15:42 · 2608 阅读 · 0 评论 -
如何使能Linux系统下PCIe ASPM
PCIe ASPM原创 2024-08-29 09:57:48 · 1605 阅读 · 0 评论