- 博客(88)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 AutoSAR入门到精通讲解-总目录
一、AutoSAR-CP建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化、规范化、安全化、快速化和经济化。
2022-09-06 11:53:06 4779 2
原创 Linux ARM平台入门到精通系列讲解 - 总目录
在学习Linux ARM之前,需要先准备开发环境,方便后续进行开发。Linux ARM平台开发系列讲解(u-boot篇) 5.1 u-boot的启动流程分析。学习该章节之前,你应该了解一下网络概念,明白为什么要讲这些,才能更有方向的去理解学习。Linux ARM平台开发系列讲解(设备树篇) 4.1.1 设备树的原理详解。摄像头V4L2子系统。摄像头V4L2子系统。摄像头V4L2子系统。摄像头V4L2子系统。摄像头V4L2子系统。摄像头V4L2子系统。摄像头V4L2子系统。Linux并发与竞争。
2022-03-14 15:53:14 7943 2
原创 Linux ARM平台开发系列讲解(CAN) 2.14.4 FlexCAN Controller 介绍
编写驱动时一些注意的点基本都讲解完了,下一章节就会开始编写驱动,所以该章节还是非常重要的,需要理解好才能在下一章节顺利理解。,这一点在嵌入式中是必须养成的习惯。下面我就简略介绍一下。开始,这样你才知道它有哪些功能,这样也才能去写。可能有删减,略有不同是正常的,参考实际即可。,理解它所说的这些模式到底是什么意思,比如。协议,部分厂家在此基础上还衍生出各自的。使用章节的读者应该多多少少感受到了,在。也做了统一集成框架,本章节,就以。初始化的步骤如下,注意初始化。有很多家的,常见的就是。,所以不同的芯片里面的。
2023-02-20 23:26:54 413 1
原创 Linux ARM平台开发系列讲解(GMSL摄像头篇)1.3 MAX9295 GMSL注意事项
就是这样的结构,官方给出的构造如下,这里需要配置摄像头的电源开关,摄像头和。芯片是串行器,一般可能会集成在摄像头内部,比如这里提到的。2. MAX9295给摄像头上电。
2023-02-17 23:14:30 1469 2
原创 Linux ARM平台开发系列讲解(CAN) 2.14.3 CANFD协议介绍
1. 概述前面章节介绍了CAN2.0协议,CAN现在主要是用在汽车领域,随着CAN的发展, 又衍生除了CANFD协议,该协议是在CAN的基础之上进行了升级,CAN2.0的最高速率是1Mbps,有限的速率导致CAN总线上负载率变高,所以CANFD就出现了,CANFD目前最高支持10Mbps。除此之外,CANFD还拥有动态波特率数据传输的特点(CAN2.0与CANFD物理层完全相同)。学习该章节前建议配合前面CAN2.0协议章节一起看。2. CANFD使用场景前面提到了CANFD。
2023-02-17 22:48:53 1099
原创 Linux ARM平台开发系列讲解(调试篇) 1.2.2 如何编译IMX8MPUS-SDK
1. 概述今天给大家介绍一下米尔科技IMX8MPLUS的SDK,由于走的是NXP原厂的yocto,所以可以说是极其难用,坑特别多,但是想到可能有看我写的文章的同学用的该开发板,我觉得应该记录一下,能帮一个是一个吧,本来想回家继承祖业,但是又想继续搞技术,所以又开始回归行业,最近由于在开发新的芯片,所以文章更新速度慢了一些,希望以后我开发的芯片有小伙伴有机会用到吧,哈哈哈,言归正传,开始介绍。2. 资源下载链接可以根据下面链接下载本章节所有资源,都已经测试完毕。3. 构建yocto使用yocto构建。
2023-02-10 23:59:45 771 2
原创 Linux ARM平台开发系列讲解(调试篇) 1.7.1 RK3399Pro环境搭建及其编译
的获取和编译烧录方法,帮助快速上手。6. 更换文件系统为Ubuntu。3. SDK编译环境搭建。4. SDK解压及其编译。
2022-10-11 14:08:56 776 2
原创 Linux ARM平台开发系列讲解(调试篇) 1.3.2 RK3399移植Ubuntu文件系统步骤
1. 概述由于项目需要,需要在RK3399上移植Ubuntu文件系统,前面章节也细讲过Ubuntu的移植,可以去参考本专栏的,当然本篇也会细讲RK3399上移植Ubuntu的过程。2. 文件系统下载Ubuntu的文件系统Ubuntu官方已经帮我们编译好了,我们只需要去做一些移植工作即可,镜像可以在Ubuntu官网下载,。如下图,下载版本。3. 解压Ubuntu文件Ubuntu03_ubunturoot4. 在主机Ubuntu里安装QEMUQEMU相当于要启动Ubuntu的虚拟机,将其挂载到PC。
2022-09-25 21:30:46 1647
原创 Linux ARM平台开发系列讲解(网络篇)1.9 以太网帧格式IEEE802.3介绍
作为驱动开发人员,如果是纯设备开发,理论上不需要了解这些协议也能开发,但是要提升为一个高手,有些知识是必须去理解消化的,该章节就讲解一下以太网帧格式(字段比较,结果相同表示帧有效,结果不同接收方认为发生了错误,进而将帧丢弃。如下图所示,每层数据向下传输时都会进行封装,帧有效数据来源于上级网络层。),广播发送给所有设备,而组播只发送给网络中一组类似的节点。这是网络层传递给数据链路层的帧,其长度为。字段中,不能包含广播地址或组播地址。表示的是有效数据长度,并不包含填充(,循环冗余校验)结果的帧的帧尾。
2022-09-21 16:20:33 636
原创 Linux ARM平台开发系列讲解(调试篇) 1.4.3 S32G274A CAN和LLCE CAN调试
1. 概述本章节讲述这颗芯片中的CAN和LLCE CAN模组调试步骤,本章节使用的板卡为NXP官方,有15路LLCE CAN和4路普通CAN2. 设备树配置CAN,设备树默认是开启CAN的,但有一路CAN1LLCE CAN3. 驱动编译中,LLCE CAN驱动默认是关闭不加载的,所以需要手动添加编译,具体可以参照用户手册,但是手册里也没有提到,这里总结一下研究成功的步骤。LLCE CAN由四部分驱动去构成,分别为LLCE CAN驱动、LLCE CAN报文日志驱动、LLCE核心驱动和LLCE。
2022-09-15 15:22:07 1325
原创 Linux ARM平台开发系列讲解(CAN) 2.14.2 CAN调试工具安装及其使用
1. 概述在Linux ARM芯片下,一般情况,SOC内部会自带CAN的驱动设备驱动开发人员基本只需要设备树里使能一下,基本就能用了,所以,掌握调试CAN的方法更为关键。本章节就讲述一些调试CAN的工具和使用方法。2. 工具安装。
2022-09-15 11:30:13 940
原创 Linux ARM平台开发系列讲解(CAN) 2.14.1 CAN基础协议分析
1. 概述CAN的全称为,也就是控制局域网络,简称为CAN。CAN最早是由德国BOSCH(博世)开发的,目前已经是国际标准(ISO 11898),是当前应用最广泛的现场总线之一。BOSCH主要是做汽车电子的,因此CAN一开始主要是为汽车电子准备的,事实也是如此,CAN协议目前已经是汽车网络的标准协议。当然了,CAN不仅仅应用于汽车电子,经过几十年的发展,CAN协议的高性能和高可靠性已经得到了业界的认可,目前除了汽车电子以外也广泛应用于工业自动化、医疗、工业和船舶等领域。学习CAN。
2022-09-13 15:20:52 518 2
原创 Linux ARM平台开发系列讲解(互斥体) 3.5.1 Linux内核互斥体描述
互斥访问表示一次只有一个线程可以访问共享资源,不能递归申请互斥体。就可以使用信号量进行互斥访问了,虽然可以通过信号量实现互斥,但是。提供了一个比信号量更专业的机制来进行互斥,它就是互斥体—驱动的时候遇到需要互斥访问的地方建议使用。中也有互斥体,将信号量的值设置为。2. 互斥锁的API。
2022-09-08 17:53:30 198
原创 Linux ARM平台开发系列讲解(信号量) 3.4.1 Linux内核信号量描述
的时候说明停车场满了。停车场满的时你可以等一会看看有没有其他的车开出停车场,当有车开出停车场的时候停车数量就会减一,也就是说信号量减一,此时你就可以把车停进去了,你把车停进去以后停车数量就会加一,也就是信号量加一。但是,信号量的开销要比自旋锁大,因为信号量使线程进入休眠状态以后会切换线程,切换线程就会有开销。,那么这个信号量就是计数型信号量,计数型信号量不能用于互斥访问,因为它允许多个线程同时访问共享资源。因此,可以通过信号量来控制访问共享资源的访问数量,如果要想进房间,那就要先获取一把钥匙,信号量值减。
2022-09-08 17:25:46 182
原创 Linux ARM平台开发系列讲解(自旋锁) 3.3.1 Linux内核自旋锁描述
1. 概述原子操作只能对整形变量或者位进行保护,但是,在实际的使用环境中怎么可能只有整形变量或位这么简单的临界区。举个最简单的例子,设备结构体变量就不是整型变量,我们对于结构体中成员变量的操作也要保证原子性,在线程A对结构体变量使用期间,应该禁止其他的线程来访问此结构体变量,这些工作原子操作都不能胜任,需要本节要讲的锁机制,在Linux内核中就是自旋锁。2. 自旋锁特性分析。
2022-09-08 15:04:38 430
原创 Linux ARM平台开发系列讲解(原子操作) 3.2.1 Linux内核原子操作
首先看一下原子操作,原子操作就是指不能再进一步分割的操作,表面上的含义是当一个原子变量被操作时,不可能有第二个线程或进程在对其操作,在没有原子操作的概念的时候,大多数都是使用标志位或者状态机去防止内存竞争,有了原子锁,就可以使用原子锁去解决类似的应用场景。的结构体来完成整形数据的原子操作,在使用中用原子变量来代替整形变量,此结构体定义在。函数,只不过原子位操作不像原子整形变量那样有个。的数据结构,原子位操作是直接对内存进行操作,没有抢到原子变量,执行了原子变量繁忙的逻辑。,说明设备被占用,返回。
2022-09-08 10:43:18 532
原创 Linux ARM平台开发系列讲解(Linux并发与竞争) 3.1.1 Linux并发与竞争概述
当然是内存啊,可以把共同要访问的这段内存叫做临界区,所谓的临界区就是共享数据段,对于临界区必须保证一次只有一个线程访问,也就是要保证临界区是原子访问的,我们都知道,原子是化学反应不可再分的基本微粒,这里的原子访问就表示这一个访问是一个步骤,不能再进行拆分。如果多个线程同时操作临界区就表示存在竞争,我们在编写驱动的时候一定要注意避免并发和防止竞争访问。系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。就先拿到了临界区的资源,线程。
2022-09-07 12:25:24 471
原创 AutoSAR入门到精通讲解 (AppL) 2.1 AutoSAR-CP AppL概述
中(实际上汽车里面也是这么做的)。将车灯开关、调光控制器和左右顶灯(这里我只画了一个)放到一个。中由车身顶部的一个芯片控制;将左右车门开关(这里我只画了一个)和车门开关逻辑单元放到专用的车门。成员之间不是直接通信的,它们之间的通信是通过虚拟功能总线(,分别位于车身前部的车门控制器和位于车身顶部的顶灯控制器。的通信就是通过外部总线(一般为。2. AppL的成员结构。3. SWC成员间的通信。在最上层,该章节就描述一下。
2022-09-06 19:48:59 3039 3
原创 AutoSAR入门到精通讲解 (AuroSAR-CP描述) 1.1 AutoSAR-CP简介
MATLAB:主要是应用层做算法用的,比较方便实用:主要用来搭建设计APPL的框架架构: 主要用来配置BSW和自动生成RTE的返回总目录。
2022-09-06 15:16:06 15483 1
原创 Linux ARM平台开发系列讲解(交换机) 2.6 Marvell 88EA6321/88EA6320 交换机编译
本章节会记录`S32G274A`调试以太网交换机`Marvell 88EA6321`的一些步骤
2022-09-02 16:43:36 1017 1
原创 Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置
串行器 +解串器组成,软件需要做的就是写这三部分的驱动,让摄像头数据能到达。3. 配置解串器和串行器的GMSL链路。串行器和解串器上电成功之后,就可以配置。软件配置(注意软件只可以配置速率,2. 9296上电,使能芯片。的版本和速率,比如版本是配置。配置成功之后,就会出现串行器。的链路,其它同类型的。设备地址,我设置的是。...
2022-08-31 10:55:20 7486 15
原创 Linux ARM平台开发系列讲解(GMSL摄像头篇)1.1 GMSL协议介绍
1. 概述Maxim集成公司发布了GMSL作为汽车行业视频应用程序的通信链接。GMSL基于SerDes( 串行器-解串器)技术,这意味着它在传输端使用序列化,在接收端使用反序列化。它是专门为高级驾驶员辅助系统(ADAS)和摄像头监控系统(CMS)而设计的。它可以提供高达6GB/秒的视频传输速度。它使用STP或同轴电缆,它们既便宜,又对EMC干扰非常强大,使用50Ω同轴电缆或者100Ω屏蔽双绞线(STP)时,长度可达15m甚至更长。2. GMSL的通信机制下图为GMSL在ADAS。
2022-08-23 14:36:44 5323 5
原创 Linux ARM平台开发系列讲解(调试篇) 1.6.4 NVIDIA AGX Xavier以太网MAC TO MAC模式
内核发展了那么多年,早已经将这种场景集成到了内核里,具体添加方式如下,本次针对。具体详细描述,可参考本专栏的网络篇和交换机篇,这里就简单的提一句,想要使用。速率和双工状态固定死,使其和交换机的模式一模一样,双方就可以建立通信了。2. MAC TO MAC原理。3. 开启无PHY模式进入内核。模式,本章节记录调试过程。模式,简单来说就是字面意思,以太网部分需要与交换机。,其他芯片也是一样的。修改设备树文件,将与。
2022-08-23 10:17:04 1009
原创 Linux ARM平台开发系列讲解(入门篇) 1.6.3 NVIDIA AGX Xavier刷机方法
1. 概述可以在Ubuntu下使用其刷机工具直接运行脚本刷机,该工具非常好用,可以利用USB直接更新固件,例如设备树之类的都可以更新,一定要掌握,非常好用。2. 文件下载准备进入如上述提到的下载连接后,下载这几个文件在Ubuntu下,每个版本操作都几乎一模一样,文件名不一样罢了。3. 文件分区管理创建如下文件夹将对应的源码存放进去并解压4. 烧录刷机。......
2022-08-22 15:59:40 416
原创 Linux ARM平台开发系列讲解(网络篇) 2.5 Marvell 88EA6321/88EA6320 交换机注册框架分析
的成员,它是用来描述交换机的各种功能的,需要用户自己去完成,同时它也是交换机配置的核心。这一节就概述Linux 交换机驱动需要注意到的一些知识点。,通常来自切换驱动程序的探测函数。下列成员是用户必须去实现的回调。4. struct dsa_switch 结构体中ops成员填充。成员填充如下代码,此外,有注册必然有注销,注销函数就是。从驱动程序的角度来看,交换机注册意味着将有效的结构。3. 88EA6321注册成员函数填充。2. DSA注册常用的成员函数。,用法和注册函数一样。...
2022-08-17 14:54:59 757
原创 Linux ARM平台开发系列讲解(网络篇) 2.4 Marvell 88EA6321/88EA6320 交换机内核驱动初始化分析
1. 概述驱动是开源的,可以从Linux内核版本5.10前后找到,下载后参考学习2. 驱动流程框图3. 驱动入口分析由于是采用SMI通信配置的,所以这里实际上可以将其当作一个PHY去配置驱动,这里主要是获取设备树节点然后将设备节点传入probe函数中4. probe函数probe主要是去初始化和将交换机注册进入交换机子系统。...
2022-08-16 11:31:35 971
原创 Linux ARM平台开发系列讲解(网络篇) 2.3 Marvell 88EA6321/88EA6320 Switch 设备树的配置分析
1. 概述交换机设备树主要是要配置它的端口数量,每个Port的物理模式(例如Mac to Phy)、双工模式、连接速度、地址和与之连接的PHY地址等等,这一节就以88EA6321做例子解析一下DSA设备树,以主控S32G274A为例。2. 参考文档Linux5.10中,有Marvell3.设备树配置。...
2022-08-15 18:09:00 1226 14
原创 Linux ARM平台开发系列讲解(网络篇) 2.2 Marvell 88EA6321/88EA6320 Switch 寄存器解读篇
1. 概述本章解读一些常用到的Marvell寄存器,首先得拿到手册,由于NDA限制,这里就不发下载链接了。2. 芯片寻址模式88e6321支持两种芯片寻址访问模式,分别是多芯片寻址模式()和单芯片寻址模式()。...
2022-08-10 09:06:07 1244
原创 Linux ARM平台开发系列讲解(入门篇) 1.4.2 S32G274A PCIe调试
5. S32G274A 扫描PCIE总线。3. S32G274A PCIE原理图。4. S32G274A 开启PCIE。的一些调试记录,方便后续使用借鉴。2. PCIE调试工具安装。
2022-08-05 09:43:47 1171
原创 Linux ARM平台开发系列讲解(PCIE) 2.13.5 PCIE的配置过程
1. 概述前两节介绍了PCI访问桥设备和非桥设备的方法,本节就讲述PCIE的配置过程2. TLP事务层格式。
2022-08-03 14:43:04 1309
原创 Linux ARM平台开发系列讲解(PCIE) 2.13.4 从软件的角度去学习PCIE硬件结构
1.概述对于软件而言,你只需要知道PCIE的各个引脚的含义即可,不需要知道它是如何实现的,所以这一节就介绍PCIE硬件结构,用软件的思维去分析它。2.PCIE引脚定义PCIEPCIEPCIEPCIEM.2PCI接口的引脚是并行的,容易受到干扰,所以出现了PCIE接口,PCIE接口的是串行的,每个方向的数据使用2条差分信号线来传输,发送/接收两个方向就需要4条线,这被称为1个LanePCIe设备的接口上,可以有多个LanePCIeLinkLink1LaneLane21Lane4Link32Lane。.....
2022-08-02 11:39:59 955
原创 Linux ARM平台开发系列讲解(PCIE) 2.13.3 PCI设备的访问方法(桥设备)
1.概述上一节讲述了PCI非桥设备的访问,这一节就讲述PCI桥设备的访问2.PCI设备类别及配置方法。
2022-08-01 17:26:45 847
原创 Linux ARM平台开发系列讲解(PCIE) 2.13.2 PCI设备的访问方法(非桥设备)
1.概述PCI/PCIE分为桥设备和非桥设备,这节介绍非乔设备的一个访问原理2.硬件结构怎么访问到某个PCI设备?需要理解PCI本地总线信号。3.PCI本地总线的信号CLKRST#AD[3100]C/BE[30]FRAME#IRDY#TRDY#STOP#LOCK#IDSELDEVSEL#REQ#GNT#PERR#SERR#INTA#INTB#INTC#INTD#4.访问PCI设备。...
2022-08-01 15:16:53 819
原创 Linux ARM平台开发系列讲解(PCIE) 2.13.1 从软件的角度去理解PCIE
1.概述PCI总线和设备树是硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口()还依然是PCIe形式。我们先从软件角度去理解PCIE,这样会更容易理解,因为PCIE难点在于硬件实现,它简化了很多硬件物理层协议。2.PCI/PCIE书籍推荐MindShareIncPCIeFelixPDFDriveLinux3.最容易访问的设备是什么在学习PCI/PCIE之前,我们要回归原点,CPU”接口。......
2022-07-26 00:22:03 1570 1
原创 Linux ARM平台开发系列讲解(入门篇) 1.6.2 NVIDIA AGX Kernel_BSP文件目录分析及其烧录更新方法
1. 概述由于NVIDIA AGX的文件存放目录和常见的芯片源文件存放存在差异,所以本小节记录一下NVIDIA AGX的一些源码位置及其更新方法,方便快速进行开发。2. Kernel_BSP文件结构hardwarekernelnvbuild.sh3. 设备树存放路径本次使用的NVIDIA AGX是Memory32GB,EMMC32GB的版本4. 烧录方法。...
2022-07-19 16:14:55 468
原创 Linux ARM平台开发系列讲解(入门篇) 1.6.1 NVIDIA AGX Kernel源码获取及其编译
1. 概述本节是记录NVIDIA AGX开发环境的搭建及其kernel的编译步骤。2. 源码下载。
2022-07-18 15:58:25 506
原创 Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.7 摄像头V4L2驱动开发流程总结
1.概述前几章对摄像头V4L2驱动开发各个环节做了展开分析,这一章节就做一个汇总,用来回顾前几章得知识点,概括一下摄像头开发得流程,本次使用RK3399。2.SensorSub-device开发移植Sensor驱动位于目录下,注意到本章节所描述的是具有属性的sensor驱动,故目录下的驱动并不适用。在结构下,Sensor一般作为sub-device并通过pad与cif、isp或者mipiphy链接在一起。本章主要介绍Sensor驱动的代码[1],dts配置,及如何验证sensor5个部分。...
2022-07-15 10:03:19 2958 5
原创 Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.6 OV13850 v4l2_subdev注册匹配、摄像头出图测试和工具介绍
上章节讲到了 的原理和实现,主要是设置图像处理和一些电源管理,一般不带摄像头设置完这些后就可以进行的注册了,注册完基本就完成了整个驱动,具体分析如下。 3. 校验ov13850摄像头一般摄像头都会有一个寄存器用来存放厂家,用户可以用此区分不同的摄像头,从而进行驱动分别适配,如ov13850厂家ID如下。 4. 注册subdev进入v4l2系统可以看到,摄像头注册的最后一步就是将该设备注册进入,然后与进行匹配。 5. 摄像头出图测试到这里摄像头驱动基本完成,源码可以到第一章节下载查看,接下来就去
2022-07-13 13:51:50 1365
原创 Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现
既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。返回总目录...
2022-07-12 14:46:54 988 7
原创 Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.4 V4L2子设备操作函数结构体分析
对于子设备,其核心就是去实现子设备操作接口,下面就介绍操作函数接口用到的一些关键成员是什么意思。子设备,负责实现具体的功能。可将其抽象为具体的某一摄像头传感器,如、、和等。每一个子设备驱动都必须有一个 结构体,这个结构体可以作为独立的简单子设备存在,也可以嵌入到更大的结构体(自定义的子设备结构体)里面。通常会有一个由内核设置的低层次结构体(,也就是上面说的 设备),它包含了一些设备数据,要调用 来设置子设备私有数据指针指向它,这样的话就可以很方便的从 找到相关的 设备数据(这个要编程实现的时候才能
2022-07-11 15:47:33 1135
求一个MCU驱动RTL8211F-CG的驱动或者配置自适应的步骤
2021-11-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人