NXP i.MX8系列平台开发讲解
文章平均质量分 91
以NXP i.MX8系列【i.MX8MM,i.MX8MQ,i.MX8MP】为例,分享相关驱动开发,涉及Linux , Android 平台。
码思途远
专注于嵌入式软件开发,涉及Linux,Android系统,SoC bring up等
展开
-
NXP i.MX8系列平台开发讲解 - 总目录
NXP i.MX8系列平台开发讲解 主要针对嵌入式领域人员提供的一套开发教程,将开发过程的遇到的接触的内容进行一个笔记记录,包括Linux 驱动相关,Android 系统相关定制,部分音视频相关的使用,后续将会持续更新;原创 2024-02-24 17:07:29 · 856 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.2.2 掌握性能分析工具Perf (二)
从上面这个例子查看,cvtsi2sdq指令:将整数转换为双精度浮点数。comisd指令:比较两个双精度浮点数。减少不必要的浮点数转换:检查算法是否可以优化,减少或避免浮点数的使用。并行化计算:如果可能,可以使用多线程或SIMD指令集来并行处理这些计算任务。在实际开发过程中,优化也需要去查看自身的代码涉及性能相关的问题,一般来说通过perf 工具可以轻松的找到相关的问题,另外还可以通过生成火焰图进行更加直观得找到问题的位置。原创 2024-10-25 18:30:00 · 452 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.2.1 掌握性能分析工具Perf (一)
Perf(Performance Analysis Tools for Linux)是一个功能强大且灵活的性能分析工具,主要用于 Linux 系统中的性能调优和分析。它能够帮助开发者深入了解系统和应用程序的性能瓶颈,并提供详细的分析报告。作为嵌入式软件工程师,掌握和使用 Perf 工具可以显著提升开发效率和产品性能。perf命令,用户空间的应用程序,Linux 内核中的一个子系统perf 命令。原创 2024-10-25 18:00:00 · 1650 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.2.3 摄像头篇(三) - 摄像头MIPI 接口
MIPI是Mobile Industry Processor Interface的缩写。MIPI联盟是一个开放的会员制组织。2003年7月,由美国德州仪器、意法半导体、英国ARM和芬兰诺基亚4家公司共同成立。MIPI联盟旨在推进手机应用处理器接口的标准化。MIPI联盟鼓励所有手机行业内的公司加入,包括:手机设备制造商、半导体厂商、软件厂商、系统供应商、外围设备制造商、知识产权提供商、其他公司。其中比较成熟的有MIPI CSI和MIPI DSI。CSI主要用于摄像头接口,而DSI则用于显示屏接口。原创 2024-10-06 15:58:34 · 1215 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.2.2 摄像头篇(二) - 摄像头DVP接口
根据上一章节,对摄像头的接口有一个简单的概述,提到主要使用DVP 或者MIPI CSI ,当然还有另外一种使用的就是USB 接口的摄像头,但是对于USB 的摄像头的接口这里并不做具体的分析,后续有机会进行USB 的接口分析,本章节重点讲述DVP 相关。本章节主要对摄像头DVP接口进行了说明。DVP作为一种并行接口,常在STM32单片机中使用,通过简单的摄像头初始化、控制和数据读取,就可以轻松获取到视频图像。然而,对于一些较低端的单片机,可能还需要外接一个FIFO芯片来缓解数据传输的压力。原创 2024-09-25 18:25:52 · 1127 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.2.1 摄像头篇(一) - 认识摄像头模组
Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【文章目录本章节开始分享摄像头模组相关知识,这也是作为嵌入式工程师可能会涉及的一个知识点,摄像头广泛在手机,安防,医疗,汽车各个领域都广泛使用。(Voice Coil Moto): 音圈马达(Camera Compact Module): 摄像头模组。原创 2024-09-25 18:14:54 · 1269 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.1.5 GNSS篇(五) - GPSD 编译(包含交叉编译)详解
本章主要对GPSD 的交叉编译进行操作,中间涉及一些库的编译,期间可能出现的一些问题记录,有些在对于自动驾驶授时方面可能会用上这个gpsd 符合外加授时功能的程序进行时间的统一,有空后续操作并在视频号发布。Linux 使用 gpsd 获取 GPS 数据_linux gpsd-CSDN博客。原创 2024-09-25 17:40:43 · 719 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.1.4 GNSS 篇(四) - GPSD 使用
通过GPSD 获取设备的GNSS 信息来说难度不大,通过GPSD 已经将GNSS 数据包协议已经解析,支持多用户获取实时的相关数据,对于不想去深究其中可以采用添加GPSD 服务的方式进行处理GNSS 数据,但是对于嵌入式设备,还需要涉及一个交叉编译的过程,对于交叉编译将后续进行展开。原创 2024-09-03 18:00:00 · 1370 阅读 · 3 评论 -
NXP i.MX8系列平台开发讲解 - 4.1.3 GNSS 篇(三) - 定位模块与协议介绍
目前GNSS 定位模块使用范围广,主要包括物联网,测绘,无人机,机器人,汽车驾驶,手机平板等等行业。生产厂家从国外到国内越来越多,知名国外的SiRF, Ubolx, ST, Boadcom等等,国内SoC厂商也是最近几年疯狂崛起,以北斗为代表的和芯星通,司南卫星导航,华大北斗,中科微等厂家。本章节主要介绍了定位模块的一些参数特性,一些概念,包括选型相关,还有软件评估以及在后续软件调试用到的NMEA协议,难度不是很大,后续软件上去调试,应用到嵌入式系统中,记得关注+分享。往期推荐。原创 2024-08-23 08:56:17 · 776 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.1.2 GNSS 篇(二) - 卫星导航定位原理
尽管所有潜在的错误类型都会降低 GNSS 定位的准确性,但还是有一些方法可以提高准确性。根据影响的因子,现实中很多都无法避免,只能去减弱它的影响或者修正。DGPS(差分全球定位系统)DGPS 来说比GPS 这种更加准确,它添加了能够纠正GPS信号中的错误,其实就是在已经精确测定坐标的参照物上设置GPS接收机,并和移动台上的GPS接收机同步观测不少于四颗的同一组卫星,求得差分数据进行校正。固定式 GPS 接收器检测到与您的 GPS 接收器相同的卫星信号,它就可以根据其精确测量的位置。原创 2024-08-17 16:14:25 · 838 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.1.1 GNSS篇(一) - 定位基础知识
GNSS(Global Navigation Satellite System)是一个覆盖全球的卫星系统,用于确定地球上任何地点的精确位置。对于全球覆盖,估计一个星座需要 18 到 30 颗卫星。导航卫星向专门设计用于接收这些卫星信号并解码信号消息内容的无线电接收器提供轨道信息和准确的授时(和其他服务)。通过来自至少四颗“可见”卫星的消息内容,可以使用称为三边测量的数学过程来计算地球表面大部分位置或附近的位置。原创 2024-08-17 16:08:39 · 1062 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.19 Linux TTY子系统(二)
本文主要以串口驱动去介绍TTY 相关的知识,主要对串口驱动注册流程,一些重要操作函数进行简单分析,对于应用层来说是一个非常通用的用法,不过在遇到一些通信不上的时候,通过一些排查手法进行查看问题。原创 2024-07-17 18:45:18 · 614 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.18 Linux TTY子系统介绍(一)
Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】原创 2024-07-05 21:00:00 · 643 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.17 Linux 之USB子系统(二)
根据本章节对于USB子系统的实现原理做了一些介绍,其实USB在驱动里面算是比较复杂驱动,若需要深究还有很多知识需要罗列,这里把重点提出,了解HOST,DEVICE端的重要部分。对于在开发过程中,若使用USB驱动修改不会很大,只会做一些很小的改动,做一些适配。原创 2024-06-21 19:30:00 · 804 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.15 Linux 之USB子系统(一)
USBUniversal Serial Bus(通用串行总线)) 支持设备的即插即用和热插拔功能,作为一种传输传输接口。USB允许多种设备(例如计算机、打印机、存储设备、摄像头等)通过同一种接口进行连接,实现了设备之间的通用性和互操作性。USB支持高速数据传输,使文件传输、设备同步等任务更加高效。USB接口可以为许多设备提供电力,消除了部分设备的需外部电源的需求,如充电设备和小型外设。USB支持热插拔功能,用户可以在不关机的情况下插拔设备,方便了设备的切换和连接。原创 2024-06-21 18:00:00 · 1170 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.14 Linux 之Power Supply子系统(二)
根据前一章节讲解相关Power Supply子系统,本章节将以一个实际例子进行说明,重点说明充电芯片与电量计这两个部分。介绍之前先介绍一些相关的概念知识;充电模式充电模式 (Charging Mode)描述 (Description)适用情况 (Applicability)恒流充电 (Constant Current)充电电流保持恒定,电池以恒定速率充电适用于电池的初期充电,能够更快地达到一定电荷状态恒压充电 (Constant Voltage)充电电流逐渐减少,电压保持恒定以避免过充。原创 2024-06-05 19:30:00 · 1291 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.14 Linux 之Power Supply子系统(一)
Linux Power Supply子系统是Linux内核中的一个重要部分,用于管理系统的电源供应管理和电池管理。其主要作用是监控和控制设备的能量消耗和供电状态,以确保系统的稳定运行和能效优化。该子系统涵盖了多个方面,包括电源供应、电池管理和电源管理等,对于嵌入式系统的性能和可靠性至关重要。电源供应管理:这部分涵盖了与系统电源供应相关的功能,包括识别和管理连接到系统的不同类型的电源设备,如AC适配器、USB供电、电池等。它负责监控电源设备的状态、能量消耗和供电能力,以确保系统的稳定运行。原创 2024-06-05 18:30:00 · 1004 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 1.1 导读前言
本专辑将会介绍Linux 驱动开发,Android BSP 驱动涉及HAL层调试,适用于嵌入式软件开发人员,和有兴趣向该方向发展的人员。首先具备一定基础知识:C语言数据结构操作系统电子电路基础版本控制和协作工具。原创 2024-05-07 14:52:50 · 431 阅读 · 1 评论 -
NXP i.MX8系列平台开发讲解 - 3.13 Linux 之Audio子系统(二)
上一章节,对于Linux Audio子系统有了大概的了解,对音频的基础知识,Audio 子系统的介绍,ALSA的框架库相关知识。本章节将讲解ALSA驱动的实现原理,在应用上一些开发相关。原创 2024-05-28 20:00:00 · 767 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.12 Linux 之Audio子系统(一)
ALSA最初于2002年引入Linux内核,旨在提供更先进的音频支持,以替代旧的OSS(Open Sound System)音频系统。ALSA的引入解决了OSS存在的限制,并为Linux内核提供了更高质量和更灵活的音频功能。随着Linux内核的不断发展,ALSA得到了持续的改进和扩展。ALSA现在已经成为Linux内核的一部分,提供了广泛的音频功能和驱动程序支持。它支持多种音频硬件设备,包括声卡、USB音频接口、蓝牙音频等。原创 2024-05-22 18:25:06 · 1290 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.11 Linux PCIe设备调试(WIFI模块)
在我们认识WIFI模块,WIFI模块的接口主要有SDIO,USB,PCIe,采用PCIe接口对于其他这些接口来说,就是速度的优势,适用于需要更高性能和带宽的应用。如图AW-CM276MA-PUR模组采用的PCIe接口,采用M.2 2230接口;查看NXP官方提供的相关AW-CM276MA-PUR无线模块需要在i.MX 8M Quad主机系统上加载内核驱动程序,并在88W8987/88W8997 SoC上运行固件。原创 2024-05-07 19:30:00 · 1271 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.10 Linux PCIe资源分配与访问(二)
本文将重点讲解PCIe的资源访问相关内容,对于PCIe资源访问是从Host 端老看可以对PCIe进行配置与访问的资源主要包括以下相关类目配置空间BARCapabilityMSI/MSI-XDMA。原创 2024-04-26 17:44:10 · 1131 阅读 · 1 评论 -
NXP i.MX8系列平台开发讲解 - 3.9 Linux PCIe协议相关介绍(二)
事务层的数据包也就是距离用户最近的那一层,这一层的数据包称为TLP:Transaction Layer Packet;TLP事务层完成TLP的封包与解包TLP有点类似TCP/IP协议中的IP包,事务层通过TLP实现路由与寻址功能功能有硬件实现。原创 2024-04-25 19:04:57 · 1049 阅读 · 3 评论 -
NXP i.MX8系列平台开发讲解 - 3.8 Linux PCIe 简单介绍(一)
本文将开始介绍有关PCIE相关的知识,将会分成好几个章节进行从浅入深,加上实践相关进行去说说PCIE的相关知识,最终目的了解PCIE的整个流程,还有在我们遇到对PCIE设备的驱动该如何去调试,应该注意哪些问题。本章主要讲解认识下PCIE的相关发展历史,一些概念等等;原创 2024-04-25 19:01:23 · 802 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.7 Linux 之GPIO子系统
GPIO子系统是对GPIO进行初始化设置,并且提供一些操作的接口,比如设置输入输出,读取GPIO的状态等等,但是在最这些操作之前都需要使用到pinctrl子系统对GPIO进行一系列的秒速设置PIN的复用还有电器属性,就比如对PIn设置为什么功能GPIO。这里就是设置了gpio1_io5 reset 低电平有效,在通过驱动将会使用起这个GPIO,从设备树来看都是采用定义GPIO所属的组,和它的offset号,有效电平是什么即可,再配合当前使用在某个驱动上,驱动会对该GPIO进行操作。原创 2024-03-13 22:00:00 · 1028 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.6 Linux 之Input 子系统(二)
本章节主要讲述关于Input子系统的应用,获取外部输入和模拟一个虚拟的input 设备,这些都使用Linux 系统,Android 系统也适用,Android同样进行交叉静态编译也可以运行。原创 2024-02-26 22:21:46 · 1924 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.5 Linux 之Input子系统(一)
这三个是具有很大的联系,input_dev这个是用来描述一个input设备,input_handler用来表示事件的具体处理,input_handle用来关联input_dev与input_handler,有了input_handle可以更加灵活,可以动态地去关联他们的关系,比如一个触摸设备可以支持触摸事件处理程序、手势事件处理程序和笔迹事件处理程序等。inputX是对应的输入设备的对象目录,对应的设备的input_dev,包含了设备的想详细信息,产品名称,供应商等。原创 2024-02-26 21:30:00 · 1021 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.4 Linux 之IIO子系统(sensor opt3001)
IIO子系统提供了统一的接口和框架,允许用户空间应用程序通过sysfs和设备文件来访问和配置这些传感器数据。:包含iio_ring/iio_core/iio_trigger等这些属于IIO Framwrok部分,iio_ring相当于连续采集的数据缓存buffer,iio_ring将提供字符设备文件的注册,所以在应用上可以通过字符设备读取该设备的数据;这几个函数文件都是围绕iio_dev/ iio_info/ 还有iio_buffer, iio_trigger的功能实现,具体的调用可以看到下图相关的关系。原创 2024-02-24 16:20:29 · 2189 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.3 Linux 之Pinctrl子系统
Linux内核的Pinctrl子系统是一个非常见的框架系统,该子系统的目的是为了提供对硬件引脚(Pin)进行配置和控制的通用接口。通过 pinctrl 子系统,驱动程序可以请求和配置特定硬件引脚的功能和属性,从而实现对硬件引脚的灵活控制。原创 2024-02-23 21:00:00 · 912 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.2 Linux 之LED子系统(二)
根据上一章节讲解LED子系统的使用相关步骤,这里说一说LED子系统的一些核心源代码文件,是如何实现LED子系统。这里重点关注内核部分的实现:LED设备的注册和注销实现都在该函数,这里看看里面的重要结构体从结构里面可以看到已经定义了LED设备的属性和操作函数,包括设备的名称,LED的亮度,max 等,设置与获取亮度函数;重要字段:name:设备名称,用于在/sys/class/leds/目录下创建设备子目录。brightness:表示LED设备的亮度,可以通过读写。原创 2024-02-19 18:04:42 · 1989 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 3.1 Linux 之LED子系统(一)
Linux内核的LED子系统是一种重要的框架,用于管理和控制设备上的LED指示灯。在嵌入式系统和物联网设备中,LED子系统发挥着关键作用,为开发者提供了一种统一的方式来控制和定制LED的行为和效果。这些API可以在应用程序中调用,以实现对LED的控制和操作。内核空间:内核配置LED相关的GPIO,初始化,提供各种控制LED的接口,并且在Linux 系统需要通过设备节点形式呈现,可通过读写设备节点去控制。可以控制LED的亮灭,闪烁模式,可以灵活改变相关触发方式;修改触发方式,改为时间,可以实现使得灯亮多久。原创 2023-08-16 17:13:11 · 597 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 1.6 i.MX8M Linux源码编译问题(yocto)
从源码编译问题查看,主要问题可能存在三个。原创 2024-02-23 18:30:00 · 494 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 1.5 i.MX8M Linux 源码编译(yocto)
fsl-image-machine-test FSL 社区的核心镜像,支持控制台环境,没有GUI 界面。fsl-image-gui 一个支持 GUI 但没有 Qt5 的镜像。fsl-image-gui 一个支持 GUI 但没有 Qt5 的镜像。core-image-base 目标设备硬件的只支持控制台的镜像。core-image-minimal 仅支持设备启动的小镜像。fsl-image-qt5 一个开源 Qt 5 的镜像。fsl-image-qt5 一个开源 Qt 5 的镜像。原创 2024-02-22 20:00:00 · 580 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 1.4 i.MX8M 固件烧写
烧写镜像:Linux 和 Android 镜像烧写平台官方开发版名称: i.MX 8M QUAD EVK。原创 2024-02-22 19:00:00 · 752 阅读 · 1 评论 -
NXP i.MX8系列平台开发讲解 - 1.3 i.MX8M 官方介绍
i.MX 8M系列应用处理器基于Arm® Cortex®-A53和Cortex-M4内核,具有先进的音频、语音和视频 处理功能,适用于从消费类家用音频到工业楼宇自动化及移动计算机等广泛应用。• 支持高品质视频,提供全4K UltraHD分辨率和HDR (Dolby Vision、HDR10和HLG)• 提供高水平的专业音频保真度,具有20多个音频通道,每个通道384KHz• DSD512音频功能• 适用于无风扇运行,散热系统成本低,电池使用寿命较长• 灵活的存储器选项。原创 2024-02-20 14:05:49 · 716 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 1.2 i.MX8M 开发准备工作
笔者使用:Linux version 5.4.0-150-generic (buildd@bos03-amd64-012) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023。虚拟机,如果不知道安装在真机上使用,如果Ubuntu 直接安装在真机上就不需要虚拟机了;支持SSH,FTP,串口,VNC,X server等功能;电脑PC(这个不用多说了)原创 2024-02-20 14:01:23 · 496 阅读 · 0 评论 -
NXP i.MX8系列平台开发讲解 - 4.1 Linux下i2c-tools使用
I2C-tools 是一组用于 Linux 系统的实用工具,用于与 I2C(Inter-Integrated Circuit)总线设备进行通信、调试和管理。原创 2023-07-21 14:04:40 · 191 阅读 · 0 评论