- 博客(53)
- 资源 (36)
- 收藏
- 关注
原创 汇编文字池(literal pool)
文字池(Literal pools)是汇编代码段中的用来存放常量数据而非可执行代码的内存块。有时配合LTORG,确保文字池位于程序寻址范围内。
2026-01-19 08:39:21
653
原创 【AUTOSAR OS】临界区(2)—resource
对于多并发编程,如何保证共享资源资源的一致性是操作系统必须考虑并解决的。在AUTOSAR OS下,有几种解决方案。1. 中断锁,通过关中断实现,确保同一时刻只有一个运行实体(任务或中断)运行。2. 资源锁resouce。通过天花板优先级或关中断实现。用于不同任务、中断处理之间对共享资源的访问。它分3类:(1)标准资源:用户可见,可通过服务GetResource、ReleaseResource获取和释放;(2)链接资源:用户可见,因OSEK严格禁止对同一资源的嵌套访问,通过链接资源来迂回实现这一需求。
2025-12-28 08:45:15
390
原创 【AUTOSAR OS】临界区(1)—关中断
因为由于分层解耦逻辑会存在模块间的嵌套,而模块间出于安全考虑会进行各自的保护,导致临界区嵌套,而DisableAllInterrupts是不能够嵌套的。如下面的例子,假设T1.1执行完成后,TASK_T1被强占,TASK_T2获得CPU使用权,导致打印信息出错。在系统工程集成时,尤其func_A和func_B来自不同供应商的时候,函数嵌套会导致code_A2不处于临界区,存在隐患。code_A2的代码的全局中断被打开,可能会在高频中断场景下导致异常,通常表现为CAN报文高负载下出问题。
2025-12-24 07:49:07
384
原创 【AUTOSAR通信】Com简介(9)——信号组
接口使用上,需要先使用Com_SendSignal()将每个信号值填充到一个buffer里,再调用Com_SendSignalGroup()将该buffer的数据更新到I-PDU。可以将多个信号合成信号组(signalgroup)使用,信号组内的信号称为“组信号(groupsignal)”,同一信号组内的组信号是同步更新到PDU的(多次使用Com_SendSignal无法保证数据同步更新到PDU,因为存在任务抢占),可以使用这一特性,保证信号之间的同步。3、信号组的组信号可以独立配置信号滤波。
2025-12-16 07:47:27
556
原创 【AUTOSAR通信】Com简介(8)——通信保护
这里的通信保护不是指E2E或CSM机制,而是Com模块提供的一种安全机制。对于安全相关 I-PDU(如自动驾驶的传感器数据、底盘控制指令)需通过多个 L-PDU 复制传输,目的是防止数据损坏或丢失,多副本传输可通过冗余提升数据可靠性。在 AUTOSAR 架构中,I-PDU 的复制通过 PduR实现,而复制后 I-PDU 的比对与投票逻辑则由 Com负责。由于复制的 I-PDU 未包含用于比对的校验和或签名,接收端需存储并逐字节比I-PDU 内容。
2025-12-15 07:49:58
386
原创 【AUTOSAR通信】Com简介(7)——MDT
配置了最小延迟时间后,在该时间内,最多只能有1 帧报文发送到总线上。如果在该时间内有多于1次发送请求,则后续的请求会被延迟到最小延迟时间之后发送。为防止总线的负载率过高,用户可以为发送的PDU 配置最小延迟时间(MDT, MDT(Minimum Delay Time))。该时间仅对相同 PduId 的发送报文起作用,不同PduId的报文之间无最小延迟时间的限制。1、如果在最小延迟时间内,积累了多次发生请求,则最小延迟时间过后,最多只能发送一帧。
2025-12-13 12:25:22
725
原创 【AUTOSAR通信】Com简介(6)——UpdateBit
信号和信号组可以有一个额外的Bit,表示该信号或信号组是否被更新。这个参数对应用层是不可见的。注意:1、对于ComTxModeNumberOfRepetitions大于等于1的DIRECT报文,UpdateBit是不允许的。
2025-12-12 07:51:21
645
原创 【AUTOSAR通信】Com简介(4)——信号过滤
对于 MASKED_NEW_DIFFERS_MASKED_OLD 算法,在刚初始化之后,由于还没有旧值,所以初始值总是可以通过滤波的。在信号更新后(写入信号或接收到信号),则初始值成为旧值,后续就可以按照正常滤波算法进行滤波。2、信号发送滤波为计算出signal的TMC值,报文中所有signal的TMC决定其TMS,根据TMS选择I-PDU的发送模式(当配置了2种发送模式时)。信号滤波功能是可选功能,用户可为信号选择不同的滤波算法,在发送端和接收端,信号滤波有着不一样的功能。
2025-12-11 07:44:59
616
原创 【AUTOSAR通信】Com简介(5)——RollingCounter
Com通过I-PDU Counters实现一种数据序列控制的机制,那些顺序不对的I-PDUs,如重复的I-PDUs或出现过丢失又收到的I-PDUs,都能被检测到并丢弃不用。I-PDU counters是可选的,每个I-PDU可以单独配置。
2025-12-10 07:42:40
1210
原创 【AUTOSAR通信】Com简介(3)——IPduGroup
通过接口Com_SetIpduGroup()和Com_IpduGroupControl()实现对该PDU Group的控制,进而控制该PDU Group内的所有报文。对于发送报文或接收报文,可以关联0个或多个Pdu Group,如果没有关联任何PduGroup,表示该报文被使能,并且无法被控制。要想实现报文发送/接收的使能,最简单的方式是定义一个接口,比如Com_EnableIPdu(uint32 pduId, PduStatus status),这样就看可以实现对某条报文的收发控制。
2025-12-09 07:53:01
409
原创 【AUTOSAR通信】Com简介(2)——信号传输属性
5、TRIGGERED_ON_CHANGE_WITHOUT_REPETITION:每当该信号的值发送变化时,触发一次发送;注:触发发送时,并非立即发送,而是需要等到下一个 Com_MainFunctionTx() 调度才开始进行发送。4、TRIGGERED_ON_CHANGE:每当该信号的值发送变化时,触发发送(可以连续发单/多次)3、TRIGGERED_WITHOUT_REPETITION:每当写该信号时,触发一次发送;1、PENDING:该类型信号的发送,是依据其所在报文的发送类型;
2025-12-08 21:38:37
401
原创 【AUTOSAR通信】Com简介(1)——报文发送模式
一般情况下,一条发送报文只支持一种发送模式,如PERIODIC或DIRECT。报文的TMS是这么计算的:假设报文Msg_A内部有3个信号,S1,S2和S3,每个信号都有个参数TMC(Com模块内部状态)。报文发送模式是指Com层的报文的发送时机。报文可以发送一次,也可以以指定周期发送n次。4、MIXED:是PERIODIC和DIRECT的 混合,平时以指定周期发送,某信号更新后,触发报文发送n次后,再恢复成周期发送。2、PERIODIC:周期发送,最简单常用的发送方式,报文以固定的周期发送信号值。
2025-12-06 16:50:57
722
原创 【AUTOSAR通信】CAN波特率和采样点
Bit Timing是指携带一个Bit(即比特时间)所需的量子数(tq, Time quanta,比特时间的基本单位))。比特时间的倒数被称为波特率。Bit Timing被分成4段:1. 同步段(Tsync_seg):固定为1个tq2. 传播段(Tprop_seg):根据物理延迟时间调整3. 阶段1(Tphase_seg1):为同步而临时加长4. 阶段2(Tphase_seg2):为同步而临时缩短。
2025-11-27 11:00:00
327
原创 【AUTOSAR通信】CAN总线仲裁原理
CAN总线的非破坏性仲裁机制是一种既不会造成已发送数据的延迟,也不会破坏已经发送的数据的机制。使用到了线与机制和回读机制。1、线与机制:指的是在总线上,显性位能够覆盖隐性位。2、回读机制:指的是节点在向总线上发送报文的过程中,同时也读取总线上的二进制位。
2025-11-26 11:00:00
243
原创 map文件分析工具
分享一个小工具,可以实现对map文件各section的大小统计,以模块为单位进行统计。目前只支持 GreenHills 工具链。
2025-11-20 15:00:00
545
原创 【IAR】变量的初始化
本文主要介绍了IAR中的初始化策略:initialize by copy, initialize manually和do not initialize,用户可以根据对应的需求来合理地选择初始化策略:1、如果变量在启动过程中不能被初始化,使用do not initialize初始化策略,并且代码里面不能对相关变量进行任何初始化;2、如果启动代码使用了__iar_program_start:(1)如果没有特别的初始化需求,使用 initialize by copy 初始化策略。
2025-11-20 11:00:00
1356
原创 【IAR】MCU启动过程
当MCU复位后,MCU会从复位向量开始运行,初始化Stack pointer指向指定Stack区域的末尾,然后调用__low_level_init函数进行相关的初始化。MCU启动过程指的是指:MCU复位 --> main() 之间的过程。
2025-11-20 11:00:00
335
原创 【车载以太网】TC标准介绍
对于测试机构市场,可以选择各种测试机构来根据这些规范为 PHY 创建相同的结果,以便 OEM 可以决定来自测试机构的测试报告是否可靠和等效,因此建立了 TC13 来协调定义 PHY 的工作测试机构资质要求。TC8 定义了测试流程,支持建立可以执行 ECU 测试的测试机构,并建立对测试规范和合作伙伴要求的定期审核,以提高汽车系统中以太网 ECU 和网络的通信质量。TC6 的目标是捕捉对通信接口的相关汽车要求,分析现有的 xMII 标准并确定有关汽车网络的差距和不兼容性。
2025-11-14 11:00:00
1228
原创 【AUTOSAR SOMEIP】SD报文的Array格式
6、如果SD消息中包含了IPv4 SD Endpoint Option,则接收SD实现将使用该选项的内容,而不是源IP地址和源端口号。注意:这对于回答收到的SD消息(例如查找后提供或订阅后提供或订阅后确认)以及重新启动检测(基于SD端点选项的通道,而不是消息中的地址)非常重要。4、如果接收到多个IPv4 SD Endpoint Option,则只处理第一个,所有后续的IPv4 SD。4、同一ECU上相同服务的不同服务实例使用不同的端点,以便通过端点进行区分。,用于描述Server接收的端点(IP和端口),
2025-11-13 11:00:00
833
原创 【AUTOSAR SOMEIP】报文格式
Length of Entries Array: entry数组的字节数。Entries用于同步服务实例的状态和发布。,该入口包含服务实例以及需要订阅的事件组的信息。Entry字段可以理解为服务实例的。SOME/IP SD报文也是一种。实现提供服务、发现服务,以及订阅事件组的功能。Header采用网络字节序(大端)。报文的基础上进行了扩展,增加了。不包括这个携带长度信息的。)等属性都是固定值。
2025-11-12 11:00:00
543
原创 【AUTOSAR SOMEIP】SD状态机
如果收到客户端的FindService,不影响发送计时,延迟一定时间(REQUEST_RESPONSE_DELAY)后,向客户端单播发送OfferService;为了让客户端快速找到有哪些Service,此阶段重复发送OfferService,发送次数为REPETITIONS_MAX;如果服务请求被释放,进入DownPhase。发送间隔以REPETITIONS_BASE_DELAY为起始时间,每发送一次,间隔是时间翻倍;发送间隔以REPETITIONS_BASE_DELAY为基准,每发送一次,间隔加倍;
2025-11-11 22:39:10
933
原创 【车载以太网】PHY的协商机制
简单介绍完自动协商Auto-Negotiation这种机制,我们在说说一个类似的解决方案:Auto-Sense(自动适应),这是一种被动的方式,通过对比从对端收到的信号的时间间隔来计算对端的工作速度是10M还是100M/这种方式有个很明显的缺陷就是无法Sense双工状态。Auto-Negotiation通过和对端交换一种FLP(Fast Link Pluse)的特殊Frame,里面包含了自己可以支持的工作组合方式(速度/双工方式),对端收到之后和自己可以支持的工作组合方式相比较选择一种最佳的工作方式。
2025-11-10 11:00:00
772
原创 【车载以太网】以太网硬件
在待机模式下,PHY的ECU主电源被激活,功耗相对睡眠模式略高,睡眠模式是PHY工作功耗最低的模式,如果网络中暂时不需要节点的功能,可使节点工作在睡眠模式,在睡眠模式下,此时节点可断电整个ECU,除了唤醒检测外,关闭所有内部功能。PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说都是数据,而不管什么地址、数据还是CRC),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。PHY是物理接口收发器,它实现OSI模型的物理层。
2025-11-09 15:30:00
2070
原创 【LwIP】动态内存管理
所以位于pbufs链表中间的pbuf 是不会被删除成功的,因为他们的ref 值至少是2。在内存初始化的时候,系统会将所有可用的内存区域划分为 N 块固定大小的内存,将这些内存块通过单链表的方式连接起来,用户在申请内存块的时候就直接从链表的头部取出一个内存块进行分配,同理释放内存块的时候也是很简单,直接将内存块释放到链表的头部即可。但缺点也是很明显,用户只能申请固定大小的内存块,如果内存块无法满足用户的需求,则无法成功申请,如果将内存块变大,那么在用户需要极小的内存的时候就会造成内存的浪费,这也是不适合的。
2025-11-08 10:00:00
1014
原创 【Cache缓存】数据一致性问题
DMA(Direct Memory Access)是指不用CPU干预,直接把数据传输到内存的技术。这个过程中可以把CPU解放出来,提升系统性能。那么DMA和Cache有什么关系呢?假设,CPU修改了部分数据依然躺在cache中(采用写回机制)。DMA需要将数据从内存搬运到设备I/O上,如果DMA从主存那里获取数据,那么就会得到旧的数据。导致程序的不正常运行。这就告诉我们,DMA通过总线获取数据时,应该先检查cache是否命中,如果命中的话,数据应该来自cache而不是主存。
2025-11-06 11:00:00
839
原创 【Cortex-M/R】MPU内存访问属性
MPU用于定义内存访问权限和内存访问属性(可缓冲,可缓存)。1、每个区域都有起始地址、大小和配置。2、支持背景区域。3、若同一地址处于两个MPU区域中,则内存访问属性和访问权限会基于region编号最大的区域。4、若内存访问和MPU定义的访问权限冲突,或者访问的内存位置未在MPU定义区域,则传输会被阻止且触发一次异常。异常可以是MemManage或HardFault。
2025-11-05 11:00:00
1720
原创 【Cortex-M/R】内存访问顺序
早期ARM架构下,指令执行顺序和内存访问完成顺序是一致的,由于指令执行的速度明显高于内存访问速度。现在处理器中,为了提升性能,CPU 可能会:1、重排指令执行顺序(编译器优化或硬件流水线导致)2、使用缓存和写缓冲(数据不会立即写入内存)这些优化带来了内存可见性问题(如多线程 / 多核心间数据不一致)或设备交互错误(如对外设寄存器的操作顺序被打乱)。对于大多数由显式内存访问指令引起的内存访问,只要这不影响指令序列的行为,内存系统不保证内存访问完成的顺序与指令的顺序完全一致。见下面的示例。
2025-11-04 22:32:42
547
原创 【Cache缓存】cache的刷新
每条cache line 都有两个标志位 valid bit 和 dirty bit。vaild bit:表示cache line中数据是否有效。1代表有效;0代表无效。当系统刚启动时,cache中的数据都应该是无效的。dirty bit:表示cache line里面的数据是否和下一级存储器内容一致。0代表非dirty,和下一级存储器内容一致。1代表dirty,和下一级存储内容不一致。当cache外部的存储器数据发生改变时,需要清除相应位置的cache标志位。
2025-11-04 22:28:58
492
原创 【Cache缓存】分配策略
cache的分配策略是指什么情况下为数据分配cache line(是否需要将数据从主存中分配到cache中)。cache分配策略分为读和写两种情况。
2025-11-03 22:03:04
733
原创 【Cache缓存】两路组相连和全相连
不一样的地方是index,在两路组相连缓存中,index只需要2 bits,因为一路只有4行cache line。因此,在全相连缓存中,任意地址的数据可以缓存在任意的cache line中。因此,当cache size一定的情况下,组相连缓存对性能的提升最差情况下也和直接映射缓存一样,在大部分情况下组相连缓存效果比直接映射缓存好。因此,两路组相连缓存较直接映射缓存最大的差异就是:一个地址对应2个cache line,而直接映射缓存一个地址只对应一个cache line。是的,这种缓存就是全相连缓存。
2025-11-02 23:04:26
1301
原创 【Cache缓存】基本概念
所以,当我们找到cache line之后,只代表我们访问的地址对应的数据可能存在这个cache line中,但是也有可能是其他地址对应的数据。因此,当我们根据地址中index位找到cache line后,取出当前cache line对应的tag,然后和地址中的tag进行比较,如果相等,这说明cache hit。2、当我们访问0x40地址时,依然索引到cache中第0行cache line,由于此时cache line中存储的是地址0x00地址对应的数据,所以此时依然会cache miss。
2025-11-02 11:15:43
1571
原创 【AUTOSAR以太网】TCP网络利用率提高算法
试想如下典型操作,写-写-读,即通过多个写小片数据向对端发送单个逻辑的操作,两次写数据长度小于MSS,当第一次写数据到达对端后,对端延迟ack,不发送ack,而本端因为要发送的数据长度小于MSS,所以Nagle算法起作用,数据并不会立即发送,而是等待对端发送的第一次数据确认ack;这样的情况下,需要等待对端超时发送ack,然后本段才能发送第二次写的数据,从而造成延迟;◆ 在没有收到2*MSS的数据为止前,不回复ACK(根据操作系统的不同,有时也有不论数据大小,只要收到两个包就立即返回ACK)。
2025-11-01 10:00:00
644
1
原创 【AUTOSAR以太网】TCP慢启动与拥塞避免
TCP的拥塞控制主要原理依赖于一个拥塞窗口(cwnd)来控制。窗口值的大小代表能够发送出去的但还没有收到ACK的最大数据报文段。值越大,发送的速度越快,但是网络可能出现拥塞;值越小,假设为1,就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,传输效率低下。TCP的拥塞控制算法就是要在这两者之间权衡,选取最好的cwnd值,从而使得网络吞吐量最大化且不产生拥塞。由于需要考虑拥塞控制和流量控制两个方面的内容,因此TCP的真正的发送窗口 = min(rwnd, cwnd)。
2025-10-31 09:00:00
1450
原创 【AUTOSAR以太网】TCP滑动窗口
为了解决这个问题,TCP引入窗口的概念。即使在往返时间较长的情况下,也能控制网络性能的下降。如图,发送端发送一个段后,不必一直等待确认应答,而是继续发送。确认应答不再以分段为单位,而是以窗口为单位。窗口大小就是指无需等待确认应答而继续发送数据的最大值。TCP以一个段为单位,每发送一个段就进行一次确认应答。但这样有个缺点:包的往返时间越长,通信性能越差。
2025-10-30 11:30:00
183
原创 【AUTOSAR以太网】TCP超时重传
设短了,可能导致包没有丢,就重发了,可能导致雪崩效应(重发多,失败多,失败多,导致更多的重发...)。s是Smoothed的缩写,我们可以把RTTs看成是一个平均的RTT,相当于一个累积的RTT的期望值,它不仅考虑本次测量到的RTT值,还会吸取历史经验,考虑以前的RTT的值,且之前的RTT的值占的比重远高于本次测量的RTT(即RTTm)。我们可以在发送端设置计时器,也可以在发送的TCP报文选项中添加时间戳选项,用于记录发送时间,接收方接到该报文后,把该发送时间从报文中复制到ACK报文发回给发送端。
2025-10-29 21:59:38
593
原创 【AUTOSAR以太网】TCP简介
◆ 完整的连接机制◆ 全双工通信◆ 正面确认与重传,属于差错控制范畴◆ 差错控制◆ 缓存机制◆ 流量控制◆ 拥塞控制,考虑的就是网络的传输状况。发送方必须实现一种机制,检测网络中的拥塞状况,自动调节数据的发送速度,这样才能提高数据的发送成功率。引入拥塞窗口的概念。◆ 糊涂窗口现象与糊涂窗口的避免◆ 零窗口探测机制◆ 连接保活机制◆ 等等……在TCP中,端口号不能唯一地标识一条连接,一个服务器程序可以使用同一个端口与多个客户机进行通信。
2025-10-28 22:02:34
1060
原创 【AUTOSAR以太网】IP简介
IP协议(Internet Protocol,网际协议)处于网络层,它是整个TCP/IP协议栈的核心协议,上层协议都要依赖IP协议提供的服务,IP协议负责将数据报从源主机发送到目标主机,通过IP地址作为唯一识别码,简单来说,不同主机之间的IP地址是不一样的,在发送数据报的过程中,IP协议还可能对数据报进行分片处理,同时在接收数据报的时候还可能需要对分片的数据报进行重装等等。IP协议是一种无连接的不可靠数据报交付协议,协议本身不提供任何的错误检查与恢复机制。
2025-10-27 22:08:54
872
原创 【AUTOSAR以太网】ICMP简介
ICMP(Internet Control Message Protocol, 网际控制报文协议)用于在IP主机、路由器之前传递控制消息。由于IP数据报本身被放在物理数据帧中进行发送,因此ICMP报文本身也可能丢失或者出现传输错误。IP协议本身不提供差错报告和差错控制机制来保证数据递交的有效性。
2025-10-26 21:24:30
567
原创 PHY的休眠唤醒
当PHY配置为MASTER时且处于正常模式时,若链路伙伴处于睡眠状态时,即便没有主动设置唤醒,链路伙伴也会退出睡眠模式,出现该现象的原因是因为PHY在这种情况下会发送IDLE使链路伙伴被唤醒,正如上文“唤醒及唤醒转发规范”第三点规定,如需避免该问题可使链路伙伴设置为禁止唤醒。以上就是车载PHY的唤醒与睡眠概要,尽管各半导体制造商设计的车载PHY在扩展功能上会有所差异,但万变不离其宗,它们均会参照OPEN联盟制定的规范,所以掌握该规范会使得你可以更轻松利用各种车载PHY的唤醒和睡眠功能。
2025-10-26 07:25:25
1056
原创 【AUTOSAR以太网】DHCP简介
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,其前身是BOOTP协议。当前的DHCP定义可以在RFC 2131中找到,基于IPv6的建议标准(DHCPv6)可以在RFC 3315中找到。通过和DHCP服务器(DHCP服务器一般为该网段的路由器)交互,设备可以获得一个有效的IP地址。在DHCP功能的支持下,IP地址的分配不仅是自动的,更是动态的。
2025-10-24 22:27:26
796
第4章-协议形式描述语言(1-SDL)
2018-12-06
SDL规范说明与描述语言
2018-12-06
understand用户使用指南
2018-12-06
CANoe快速入门
2018-12-14
02_CANoe_Fundamental_Block
2018-12-14
Mini-XML Programmers Manual Version 2.12
2019-01-20
Kingst_Virtual_Instruments_User_Guide.pdf
2020-03-14
CodeWarrior to S32 Design Studio (S32DS) Migration Guide
2018-12-19
AUTOSAR_SWS_PDURouter.pdf
2019-07-31
VN1600_Interface_Family_Manual_EN.pdf
2020-07-23
S32K1xx MCU Family Reference Manual (REV 9).pdf
2020-02-13
Understand-5.1.1002-Windows-64bit.exe
2020-03-15
AUTOSAR_SWS_CANDriver.pdf
2019-07-31
KingstVIS_Setup_v3.2.3.exe
2020-03-14
ISO15765.zip
2020-02-18
Understand-5.1.1002-Windows-32bit.exe
2020-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅