自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

千月星跡

アイをも求めて彷徨っている孤独なヒーロー

  • 博客(1184)
  • 收藏
  • 关注

原创 【软考系统架构设计师】知识点必知必会系列汇总

【软考系统架构设计师】知识点必知必会系列汇总

2021-12-31 06:00:00 2688 1

原创 【软考系统架构设计师】复盘架构设计师真题知识点汇总

【软考系统架构设计师】复盘架构设计师真题知识点汇总

2021-12-30 08:30:00 951

原创 【软考系统架构设计师】章节习题汇总系列

【软考系统架构设计师】章节习题汇总系列

2021-12-30 07:00:00 3602

原创 【软考系统架构设计师】系统架构设计师历年真题题目书

【软考系统架构设计师】系统架构设计师历年真题题目书

2021-12-29 20:13:35 6545 14

原创 【系统分析师之路】系统分析师历年真题大汇总

【系统分析师之路】系统分析师历年试题大汇总

2020-12-28 13:08:53 15659 21

原创 【车载开发系列】Autosar与人工智能

AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是汽车电子行业的一个开放式标准和软件架构。软件分层架构:将软件分为应用层、运行时环境(RTE)、基础软件层等,各层分工明确,便于管理和开发。基础软件:包含操作系统、通信服务、内存管理等底层功能模块。虚拟功能总线(VFB):提供了一种抽象的通信机制,使得应用程序无需关心实际的硬件连接。ECU 抽象:对电子控制单元进行统一的描述和定义,便于不同 ECU 之间的集成和交互。

2024-05-22 20:04:38 565

原创 C语言经典面试题

d表示十进制输出为11是没有异议的,%o是按照8进制输出,在这里先将11转换为2进制,为1011,再变成8进制就是13,%x是16进制输出,这里输出的就是b。8、设 int a=12,则执行完语句a+=a-=a*a后,a的值是____D____A) 0 B) 1 C) 3 D) 不确定的值。A) 67,D B) B,C C) C,D D) 不确定的值。A) a B) b C) c D) 程序语法出错。

2024-05-18 10:36:16 299

原创 【车载开发系列】AutoSar架构再认识

AUTOSAR全称是Automotive Open System ARchitecture,是一个开放式的汽车电子系统架构标准,旨在为汽车电子软件开发提供一种标准化的方法和框架。AUTOSAR标准将汽车电子系统分为两个主要领域:软件和硬件,其中软件是基于面向对象的方法进行开发的,而硬件则包括处理器、传感器、执行器和通信总线等。AUTOSAR标准的目标是提高汽车电子系统的可靠性、安全性和可维护性,同时降低软件和系统的开发成本。

2024-05-17 21:02:00 1126

原创 【C/C++语言必知必会】第六章 字符串与数组

库函数strcat()把字符串内容连接到目标字符串的后面,所以应该从目标字符串的末尾,也就是结束符的位置开始插入另一个字符串的内容。与strcpy不同的是,memcpy用参数size决定复制多少个字符(strcpy遇到结束符)解析:代码第12行和第13行调用的是strcat函数,strcat是字符串操作的库函数。test2函数字符串长度都不是10而是11,还需要将str1[10]置为’\0’;test3函数当中不应该用<=10而应该使用<10。由于在主程序中只复制了strSrc的前四个字符。

2024-05-16 18:57:12 886

原创 【车载开发系列】Autosar CP与AP的区别

CP AUTOSAR虽然可以支持SOME/IP,但是CP AUTOSAR中SOME/IP只不过是把Sender-Receiver的CAN通信转换成了Client-Server的以太网通信,整个通信链路仍是静态配置的,并不是真正的面向服务的通信。▪ 在代码生成时,CP是生成基础软件模块相关的代码,AP生成的是FC相关的代码和Manifest,需要注意的是,AP中不是所有的FC都会生成相关的代码和Manifest。配套的OS一般是由专门的OS厂商开发的,如eSOL的eMCOS、黑莓的QNX等。

2024-05-15 19:01:50 531

原创 【车载开发系列】SID$11服务配置

ECUReset(ECU重置),ECU作为Server端,执行Client发送来ECU Reset请求中重启的类型(通过子服务区分)。对于UDS协议关于处理该请求的逻辑,没有强制性定义。

2024-05-15 17:36:24 383

原创 【车载开发系列】SID$85服务配置

在Dcm当中配置ControlDTCSetting,它一共有两个SubFunction,一个是Enable一个是Disable。在Select Port Interface画面中选择“DcmControlDtcSetting”,完成设置。因为在输入文件(CDD文件、ODX文件)中基本上有会话信息,所以不需要在Configrator中新建。在Dcm这边追加一个Sender的Port接口,这里已经有这个接口了,所以不再需要额外的追加了。这个步骤不是必须的。在DAPL这边追加一个Received用的Port。

2024-05-15 17:34:08 287

原创 【车载开发系列】AutoSar中的Port

AutoSAR 接口定义了 SWC 之间、BSW 模块之间以及 SWC 和 BSW 模块之间交互的信息。AutoSAR 接口通过 SWC 和/或 BSW 模块端口(Port)的形式实现。通过这些端口,SWC 和 BSW 模块之间实现了数据的收发和服务的调用。这些端口之间的通信既可以是本地的,也可以是通过通信网络实现的。AutoSAR 接口传递的数据或提供的服务是标准中没有定义的,需要根据具体的应用场景进行设计。

2024-05-15 16:40:07 395

原创 【车载开发系列】AUTOSAR BSW基础模块常用术语

BSW供应商提供的AUTOSAR BSW模块有:EcuM、Os、WdgM、WdgIf、BswM、Rte这六种。AUTOSAR BSW当中常用的属于如下。

2024-05-15 16:37:36 352

原创 【车载开发系列】MCU概念简介

MCU是Microcontroller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。

2024-05-12 11:02:54 540

原创 嵌入式C语言--Map文件

用于存储函数的局部变量,以及各种函数调用时需要存储的信息(比如函数返回的存储器地址、函数状态等),每一次的函数调用就会在栈上建立一个 stack frame(栈帧),存储该次调用的所有数据于状态,这样以来同一个函数被调用多次时,就会有不同栈帧,不会相互干扰。初始化数据区段(initialized data segment)存储已经初始化的静态变量,例如有经过初始化的C语言的全局变量(global variables)以及静态变量(static variables),分为RW-data和RO-data。

2024-05-05 17:14:12 410

原创 【车载开发系列】AutoSAR OS基础篇

我们知道传统所说的“裸机编程”就是不带操作系统的编程,在系统需求相对比较简单的情况下使用裸机编程可以满足要求。但是随着系统需求越来越复杂,此时就需要用到模块化设计方法以及多任务编程思想,否则后期软件升级维护成本将会急剧增加。虽然我们可以采用传统编程方式(如计数器与状态机)来实现简单多个任务的调度,但是当涉及到多个任务之间的状态切换,优先级,现场保护,执行时间控制等方面就显得极为吃力,开发效率低下且极容易出错。

2024-05-05 16:38:14 826

原创 【车载开发系列】RH850中的TAUJ定时器

TAUJ代表的是定时器J的时钟。TAUJ定时器为RH850较为常用的定时器:(1)定时器计时是通过计数来实现的,定时器内部有一个计数器,这个计数器根据时钟(这个时钟来自于ARM的APB总线)来工作。每隔一个时钟周期,计数器就计数一次,定时器的时间=计数器计数值x时钟周期。(2)定时器内部有计数器,计时开始时我们会把一个总的计数值放入计数器中,然后每隔一个时钟周期计数器中的值会自动减1(硬件自动完成,不需要CPU软件去干预),当计数器的值减为0的时候,就会触发定时器中断。最后的计时时间就是设定值。

2024-05-02 18:26:38 145

原创 【车载开发系列】MCAL基本概念

AUTOSAR中,将一个单片机数字I/O引脚(Pin)定义为DIO通道(Dio channel),可把若干个DIO通道通过硬件分组成为一个DIO端口(DIO Port),DIO端口中相邻几个DIO通道的逻辑组合则称为DIO通道组(DIO Channel Group)。MCU每个引脚都是一个port,对port引脚的方向(输入或输出)、运行期间引脚方向的可变性、引脚的工作模式、运行期间引脚工作模式的可变性、引脚的初始值、内部上拉的激活等进行配置。看门狗抽象,存储器硬件抽象,通信硬件抽象,io硬件抽象。

2024-05-02 17:08:03 867

原创 【车载开发系列】UDS诊断时间参数说明

诊断仪成功发送诊断报文请求之后到收到 ECU回复诊断响应的超时时间间隔。

2024-04-28 22:43:29 1050

原创 【车载开发系列】UDS诊断当中的NRC

当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制正响应(Suppress PositiveResponseMessageIndicationBit,简写为SPRMIB),通常来说,如果这个bit被置1,则ECU不会给出正响应(positive response)。11(Service not supported)服务不支持12(Subfunction not supported)不支持子服务。

2024-04-13 16:25:41 1311

原创 嵌入式C语言--GPT通用定时器

GPT根据计时模式可以分为Continuous及One-Shot模式,其中Continuous在开始计时达到设定时间后会自动开始下一轮计时,但对于One-Shot模式则需要调用API Gpt_Startimer()重新开始定时。GPT即General Purpose Timer(s) ,通用定时器模块,该模块通过使用硬件定时器通道为操作系统或其他需要定时器功能的模块提供定时功能,通常可提供从微秒级到毫秒级的定时时钟功能。4)当不需要再继续定时调用Gpt_Stoptimer(),关闭定时器,停止计时。

2024-03-31 16:20:31 1129

原创 嵌入式C语言--中断服务程序

2类中断优先级比1类低。所谓中断是指当CPU正在处理某件事情的时候,外部发生的某一事件(如一个电平的变化,一个脉冲的发生或定时器计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。ISR完成后程序返回被打断处继续执行,即中断对任务管理没有影响,这里的没有影响指的是不会引起新的任务调度,比如,任务A被一类中断打断后,一类中断运行完后从任务A被打断的位置继续执行,不会去执行任务B。存放在内存中的一个数组,内容是中断服务函数的地址们(数组下标与中断优先级对应,也称中断向量)。

2024-03-16 11:36:42 1073

原创 嵌入式C语言--#pragma指令

pragma用于指示编译器完成一些特定的动作#pragma所定义的很多指示字是编译器特有的(后面的参数决定)#pragma在不同的编译器间是不可移植的预处理器将忽略它不认识的#pragma指令不同编译器可能以不同的方式解释同一条 #pragma指令。

2024-01-28 17:50:50 993

原创 嵌入式C语言--pragma ghs section的运用

具体来说,VC链接器在链接的过程中,会将各编译单元中的section按照name的从小到大顺序排列,name的比较规则遵循strcmp的字符串比较逻辑。gcc/g++编译器会自动生成分区的起始和结束边界,只需要extern引入边界变量即可,具体生成的边界变量名可能因编译器版本的区别有差异,需要自行通过链接器查看确认。但是,可通过使用 #pragma ghs section,使链接器能够删除本来可能会保留的函数或变量,因为它与使用的函数或变量位于相同的节中。此编译指示指定要用于后续函数或对象的节名称。

2024-01-28 17:17:12 1305 1

原创 【车载开发系列】Autosar的安全访问SecurityAccess知识补充

DCM模块的每个诊断服务可以配置安全访问等级在任何状态下,只有一个安全级别处于活动(active)状态,也就是只有一个安全级别能够被激活,其他安全等级处在锁定的状态下。安全级别(security level)编号是随意的,不同级别之间不意味着有任何关系,一般Level1是最基本的安全等级,必须要存在。在默认会话(Default Session) 中不允许解锁安全等级(Security level)。要获得一些权限,客户端必须首先切换到启用SecurityAccess服务的非默认会话。

2024-01-27 18:01:02 1016

原创 【车载开发系列】再看AutoSar中的DCM诊断管理模块

DCM模块主要用来处理外部测试人员或机载测试系统的诊断请求并将诊断状态信息传输回到诊断工具,如通过读DID获取车辆相关信息,通过读取故障码DTC辅助维修人员进行故障定位等。DCM实现了OSI七层模型的应用层(还有会话层),其在Autosar架构中位于BSW,通过PduR一组通用的接口进行传输,但并不感知底层网络具体的实现类型。也就是对底层通讯协议没有要求,可以是CAN、Lin或以太网(DoIP)等。

2024-01-27 16:55:42 1346

原创 【车载开发系列】AutoSar当中的诊断会话控制

DiagnosticSessionControl,SID是0X10,主要功能是控制服务端的会话模式切换。一般默认上电后是在默认会话模式下,当某一个服务端正在运行时,只会出现一个会话模式,不会同时存在两个会话模式。

2024-01-22 22:45:54 1097

原创 【车载开发系列】Autosar中的DSL模块(Vector Configurator Pro实现)

DcmDslProtocol是协议配置容器,它是DSL子模块当中的一个配置容器。它由一个或多个DcmDslProtocolRow所组成。DcmDslProtocolRow也是一个容器,可以用来配置支持的协议层。它是在DCM中DSL模块当中的一个子模块。这个容器包含一个特定协议的通信通道配置。注意,它允许与多个Tester通信,因此可以为一个协议配置多个连接,可以有物理寻址也可以有功能寻址。Dcm与PDU进行连接的时候,会使用以下的配置项。这个容器包含诊断连接中接收通道的配置参数。

2024-01-21 17:51:33 1027

原创 嵌入式C语言--LD文件的概念

LD组合了许多对象文件和归档文件,重新定位它们的数据并绑定符号引用。通常编译程序的最后一步是运行LD。LD(Linker)文件是一个负责将目标文件和库文件链接成可执行文件或共享库的程序。每个可加载或可分配的输出section都有两个地址。第一个是VMA,即虚拟内存地址。这是运行输出文件时该节所拥有的地址。第二个是LMA,即加载内存地址。在大多数情况下,这两个地址将是相同的。

2024-01-20 16:30:12 1130

原创 【车载开发系列】Autosar DCM诊断管理模块

诊断通信管理(DCM)主要包括三个子模块:诊断服务层(Diagnostic Service Layer,DSL)、诊断服务调度(Diagnostic Service Dispatcher, DSD)、诊断服务处理(Diagnostic Service Processing, DSP)。DCM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)。

2024-01-19 22:27:16 1033 2

原创 【车载开发系列】AutoSar当中的DcmDspSecurity容器

DLS子模块应该保存当前激活的安全等级状态。DLS模块提供两个接口用来设置和获取当前安全等级:获取当前激活的安全等级:Dcm_GetSecurityLevel()设置新的安全等级:DslInternal_SetSecurityLevel()SecurityLevel安全级别定义一般可以有以下这四种。

2024-01-14 16:54:24 1018

原创 嵌入式C语言--ROMRAM相关概念(RO-data、RW-data、ZI-data的解释)

一个程序包含三个部分,RO段,RW段和ZI段。RO是程序中的指令和常量RW是程序中的已初始化变量ZI是程序中的未初始化的变量映像文件包含了RO和RW数据,但不包含ZI数据。是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。只有单片机的实际Flash容量大于等于程序编译后的Total ROM Size值,且单片机的实际RAM容量大于等于编译后的Total RW Size值,程序才能在单片机中正常运行。

2024-01-06 23:04:25 1349

原创 嵌入式C语言--WatchDog最全概念

Watchdog,又称watchdog timer,它是计算机可靠性(dependability)领域中一个极为简单同时非常有效的检测(detection)工具。WatchDog硬件的逻辑就是,其硬件上有个记录超时功能,然后要求用户需要每隔一段时间(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗称“喂狗”,发现超时了,即过了这么长时间还不给狗喂食,那么偶就认为你系统是死机了,出问题了,狗狗就帮你重启系统。

2024-01-04 19:00:07 641

原创 Big-endian与Little-endian详尽说明

字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序。在几乎所有的机器上,多字节对象都被存储为连续的字节序列。不同的CPU有不同的字节序类型,最常见的有两种:Little-Endian:将低序字节存储在起始地址(低位编址),也就是小端存储模式。Big-Endian:将高序字节存储在起始地址(高位编址),也就是下面说的大端存储模式。数据的低位保存在内存中的高地址中,数据的高位保存在内存中的低地址中;

2023-12-29 08:02:59 1141

原创 C语言中的#pragma预处理指令

pragma用于指示编译器完成一些特定的动作#pragma所定义的很多指示字是编译器特有的(后面的参数决定)#pragma在不同的编译器间是不可移植的预处理器将忽略它不认识的#pragma指令不同编译器可能以不同的方式解释同一条 #pragma指令。

2023-12-20 08:29:14 1137

原创 【车载开发系列】DRBFM模型介绍

FMEA与DRBFM最大的不同在于DRBFM是早期的对设计的评估,找出设计没有能够充分领悟到的问题;而FMEA分析侧重的不光是对设计的评估,还有生产制造阶段,同时目的也是充分挖掘出问题点。DRBFM是一种将失效模式及影响分析(FMEA)与设计评审相结合的方法,是由日本九州大学吉村达彦先生提出的丰田问题预防哲学理念的一部分。DRBFM是用于发现问题萌芽并进行纠正预防的设计评审方法。

2023-12-11 08:27:35 2515

原创 嵌入式C语言的固定地址操作

(void))0x8000的意思是把0x8000转成函数指针,那么程序可以调准到0x8000。3) p指向a,对p赋值就是对a里面的值赋值,也就是对a里面的指针形式的0xf0100000赋值,也就是对0xf0100000地址出赋值。在进行嵌入式开发的时候,由于需要和底层的存储设备比如DDR,flash,sd卡等打交道,所以会经常遇到需要读写特定内存地址的问题。如果要让程序跳转到指定绝对地址去执行,可以通过将绝对地址强转为函数指针的方法。)(void)是函数指针,((void (

2023-12-11 08:11:10 541

原创 【车载开发系列】Visio工具使用小技巧

word文档中的visio对象,右键菜单里面有个”visio对象”的选项,然后子菜单里面有个”打开”的选项,就可以在visio中打开编辑了,word中自带的也有visio编辑器,但是是个mini版,太小了,而且很多功能不具备,如果对所嵌入的visio对象进行大改的话,还是直接打开visio编辑器进行修改比较合适。

2023-12-09 20:05:47 480

原创 嵌入式C语言中的关键字volatile

由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。

2023-12-06 08:09:22 1182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除