自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 C-函数中返回数组

C语言中,数组名实际上是一个指向数组第一个元素的常量指针。当我们在函数中声明一个局部数组时,这个数组被分配在栈内存中;函数执行完毕后,栈内存会被释放,导致数组所占用的内存空间变得不可访问。注:当函数执行完毕后,localArray 所占用的栈内存将被释放。返回的指针将指向一个已经不存在的内存区域,导致未定义行为。C语言不允许直接返回数组的原因主要是为了避免返回指向已释放内存的指针,从而导致未定义行为。通过使用静态数组、动态内存分配、参数传递或结构体封装等方法,我们可以在C语言中实现类似返回数组的功能。

2025-02-13 15:04:26 290

原创 Linux

Linux 支持模块化的设计、抢占式内核、对内核线程的支持以及动态加载内核模块的能力。Linux内核是一个完整的操作系统内核,支持多任务、多用户,具有良好的可扩展性和稳定性,但由于需要处理大量的系统调度和各种任务,导致实时性较差。当前Linux体系结构可分为用户空间(包含User Applications和C Library)与内核空间(包含系统调用SCI,内核Kernel以及平台架构相关代码),用户空间与内核空间是程序执行的两种不同状态,可通过“系统调用”和“硬件中断”来完成用户空间到内核空间的转移。

2025-02-10 13:56:42 633

原创 ARM/X86指令集

【部分ARM指令实例】

2025-02-06 16:22:51 391

原创 AUTOSAR EcuM(ECU状态管理器)

因为主内核可以在所有从内核完成处理之前,发出MCU停止指令,所以在进入GoHalt之前,必须对所有从内核进行同步。类似,主内核上的EcuM必须在释放从内核停止状态(Halt State)之前验证计算的校验和值。EcuMFixed中的模式和状态是固定的,而 EcuMFlex 中删除了许多模式和状态,这些模式和状态的定义根据不同需求由 BswM 模块加以定义。在从内核上的BSW、SW-C和CDD必须由其分区上本地的BswM负责通知,同时相应地去初始化,并向BswM发送相应的模式请求,以表明已准备就绪。

2025-01-14 17:42:28 854 3

原创 FreeRTOS任务间通信方式简介

相对来说,使用信号量和消息队列进行任务间通信要比使用全局变量更加安全,对任务间通信联系变量的隔离要高。该方式属于OS的API调用,可以引起任务的挂起和恢复。该方式属于OS的API调用,可以引起任务的挂起和恢复。:申请与释放要在同一个任务中进行,不能在一个任务中申请而在另一个任务中释放。允许在一个任务中申请,在另外一个任务中释放。中断服务例程中释放信号量,使等待该信号量的任务可以被唤醒或继续执行。获取信号量,若信号量已被其他任务获取,则该任务挂起,等待信号量可用。释放信号量,允许其他任务或中断获取该信号量。

2024-12-23 10:06:59 224

原创 基于S32K144(Cortex-M4F)FreeRTOS任务调度机制

vTaskStartScheduler(接口功能:启动任务,开始调度)接口内,创建IDLE任务(设定最低优先级),xTimerCreateTimerTask创建周期任务,进入临界区(关中断,确保系统定时器停止计时,启动第一个任务后,退出临界区(重新使能中断)),调用xPortStartScheduler,开启系统定时器,启动第一个任务等。

2024-12-12 14:27:44 654

原创 嵌入式软件开发-网站导航

7.下载网址:Procedure Call Standard for Arm Architecture (AAPCS)17.下载网址:Arm Cortex-M7 Processor Technical Reference Manual。8.下载网址:The ARM-THUMB Procedure Call Standard。11.EasyXMen是面向嵌入式电子控制单元场景的实时安全操作系统。16.下载网址:Cortex-M7资料下载。21.POSIX相关接口释义。19.Linux系统学习。

2024-12-10 13:56:49 834

原创 操作系统及其内核简介

当用户进程经过系统调用或中断进入到内核态(运行在内核中的应用程序)时,内核即代表用户进程运行代码(运行在用户态(运行在用户空间中的应用程序)下的程序不能直接访问操作系统内核数据结构和程序)。,基于微内核的架构设计,将部分性能要求高的服务放在内核中,比如设备驱动、应用进程间通信等,而其他的服务则放在用户空间中。但是,这种设计的缺点是复杂性高,需要仔细地选择哪些服务放在内核中,哪些服务放在用户空间中。操作系统内核:是一个操作系统的核心,是直接运行在硬件上的最基础的软件实体,提供操作系统的最基本的功能。

2024-11-04 17:00:59 582

原创 C编程语言分类及与C++的区别

GNU(GNU's Not Unix) 是一个为了实现自由开源目的的基金会,提供了很多基于POSIX标准的软件和库,比如glibc、gcc、emacs等, Linux遵循GNU标准, Linux开发使用了GNU提供的大量的库函数。GNU C叫做glibc是Linux上的一个基础库,glibc C实现了POSIX C标准的库函数功能,有些POSIX标准是单独的库函数存在的。C标准库是严格按照C标准规范实现的一个C库,Linux下的libc库就是标准库,有些Linux下可能已经和glibc打包到一起了。

2024-11-01 17:04:20 558

原创 ARM架构详解

例如,华为的麒麟系列处理器在多项性能测试中表现优异,赢得了市场和消费者的广泛认可,通过深度定制优化,成功跻身高端芯片行列,成为国产高端芯片的代表, 显示了ARM架构在移动设备领域的强大适应性和竞争力。它与传统的Cortex系列不同,针对的是服务器级别的计算环境,致力于提供更高的并行处理能力和更强的计算性能。ARMv9的一个重要特点是引入了 “机密计算架构”(CCA),该架构通过硬件支持的数据隔离和加密,使得设备在处理敏感数据时能够提供更高的安全性,这对于现代企业和个人用户的数据安全需求至关重要。

2024-10-31 16:35:29 774

原创 基于ARM架构的汇编指令

(3)同一段地址,在被某条STREX指令执行成功后,独占访问标记则被清除,那么内存无法再次使用STREX指令进行更新,从而实现独占访问的机制。(不论多少处理器,多少地方申请内存操作,只有最早的STREX指令写入才能成功,随后都会失败,当然也可以再次LDREX读取,然后STREX写入)(2)STREX更新内存中的值,会检查该段内存是否已经被标记为独占访问,并以此来决定是否更新内存中的值:STREX Rx, Ry, [Rz]。(1)LDREXB和STREXB:内存中单字节(Byte,8 bit)独占访问;

2024-10-29 16:45:40 254

原创 基于IAR环境的Cortex-M7的MemMap开发

* 划定空间大小为256 Byte */

2024-10-28 19:43:31 264

原创 ARM_代码段分析

(2)位于此指令前的所有缓存、跳转预测和 TLB 维护操作全部完( 注意:**cache/TLB/branch的维护操作是广播,那么要等待广播的完成),即确保接下来的所有指令都使用新配置。确保位于 “DMB 指令前的所有显式内存访问” 早于 " DMB 指令后的显示内存访问"( 注意:data cache的操作也被看做是显示的访问),即确保到存储器的写操作结束。/* 寄存器 PC 值会被恢复为即将运行的任务的任务函数*//* 将r1内值指向数据加载到r0,即将新的要运行的任务堆栈栈顶保存在r0中 */

2024-10-25 19:48:01 220

原创 基于ARMv7-M架构的Cortex-M7及其相关介绍

7.1 Cortex-M7处理器一共有255个异常,异常编号(Exception number)为1 ~ 255,其中1 ~ 15属于内核异常,大于15属于外设中断,-14 ~ -1为内核中断(异常)请求编号,大于-1为外设中断请求编号(IRQ number)。3.1 Cortex-M7具有与两个TCM区域,即TCM代码区(ITCM, Instruction TCM)和TCM数据区(DTCM, Data TCM),TCM是处理器内部的高速存储器,可以用于存放代码与数据,以提高系统性能。

2024-05-29 17:12:36 3864

原创 UBuntu日常操作命令

Step9. cat test.c 查看该test.c文件(如果打不开,那么输入完整路径+文件名,试试)Step6. 输入:wq,按下Enter,返回命令行模式,输入ll,查看已建立好的test.c文件。Step10. vim test.c 修改该test.c文件,进入vim编辑模式,其他操作同上。Step7. gcc test.c 编译该test.c文件。Step1. vi test.c 新建test.c文件。Step8. ./a.out 运行该test.c文件。Step2. 进入编辑模式。

2024-05-22 16:56:24 206

原创 ISO 26262功能安全相关解读

值得注意的是,SEooC开发的安全要素可以是一个系统,软件,硬件,但不可以是一个相关项,因为相关项总是需要用于批量生产的整车环境。是全球汽车电子协会制定的车用电子元件可靠性测试标准,是汽车行业零部件供应商的重要指南,在设计阶段对零部件的各种压力测试,也反向促成了可预测的,及更可靠的智能汽车系统。功能安全流程认证是对产品的全部生命周期,包括功能安全管理。功能安全可以提供汽车在管理、开发、生产、运行、服务以及报废的安全生命周期,而且支持在不同阶段进行裁剪应用,使不同的团队关注在本阶段需要关注的系统安全问题。

2024-05-09 17:25:35 655

原创 嵌入式开发(汽车软件)-专有名词解释

(系统调用是直通内核的,普通的库函数想调用内核的资源,必须通过系统调用。原子操作指的是不可中断的一个或者一系列操作,即不会被线程调度机制打断的操作,运行期间不会有任何的上下文切换。系统调用是通向操作系统本身的接口,是面向底层硬件的。中,能够在一条指令中完成的操作都可以看作为原子操作,因为中断只发生在指令间。作用是根据总线上的信息对访问的合法性进行判断,其中指令信息包括地址、操作符。运行的多个进程同时对同一块内存执行这条指令,那么情况是无法预测的。中,即使是在单条指令中完成的操作也可能被干扰,比如。

2024-03-22 15:32:24 1039

转载 UDS诊断

这三个会话模式好比普通项目成员(默认会话)、项目组长(扩展会话)和会计(编程会话)的关系,小职员权限最小,小职员有的权限项目组长全有,项目组长还多了些其他的高端权限(如写数据、例程控制)。(诊断故障码)存储起来,可选择性保存的还有发生故障时的快照信息(比如此时的车速、读到的电压值等)。为什么设计三个会话模式呢?如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间后,诊断退回到默认会话。表明请求消息被正确地接收,请求消息中的所有参数都是有效的,但是要执行的操作还没有完成,

2024-01-26 15:26:13 11

原创 ARMv7-M异常栈帧分析

位表示栈指针的数值是否调整过。若使能了双字栈对齐特性,而且栈指针的数值未对齐到双字边界上,栈中会被插入一段空间,栈指针也会被强制对齐到双字地址,并且。(无浮点单元)处理器的异常栈帧。(含浮点单元)处理器的异常栈帧。,表明插入了一段区域。

2024-01-18 14:31:01 229

原创 AutoSAR OS 内存保护

在不使用代码段保护的情况下,执行不正确的代码将导致内存、时序或服务冲突。作用是根据总线上的信息对访问的合法性进行判断,其中指令信息包括地址、操作符。)功能相比,为任务和中断提供更及时的栈溢出(包括上溢和下溢)检测。仅向分配给它的外设写入数据(包括一些可以引起写内存区域的读操作)。对自己的数据区和栈区(即内核的数据和栈)进行写访问。)只能在提供内存保护硬件支持的处理器上实现(芯片提供。的私有数据部分被所属它的所有任务和中断共享。)区,任务和中断也有自己的私有数据区,)组成,根据定义,这些对象的栈(

2024-01-16 14:49:00 985

原创 AUTOSAR OS时间保护

不足以正确地识别出导致了系统的时间故障的任务或中断,因为实际情况下,有可能是被一个没有关联的任务或中断干扰了执行过程。规范,实时操作系统在运行时发生任务或中断没有在预期时间内执行结束,被视为发生了时间故障。为了实现安全和精确的时间保护,操作系统需要能在运行时控制这些因素,保证任务或中断能够达到。因其他低优先级任务或中断锁住了共享的资源,或者是关闭中断这期间而产生的阻塞时间。挂起或屏蔽的时间上限,由。的时间间隔的时间下限,由。任务或中断的执行时间。任务或中断的时间间隔。时间间隔保护(时间帧。

2023-11-20 14:52:20 436

原创 嵌入式项目开发零散笔记

使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。附加的目标文件包括静态连接库和动态连接库。:将上一步的汇编代码转换成机器码,这一步产生的文件叫做目标文件,是二进制格式。:不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理文件()之后的程序转换成特定汇编(

2023-11-01 17:44:33 114

原创 IDE_S32DS:更改函数编译优化等级

使用GCC编译代码时,有一个代码编译优化选项,选择后会对整个文件进行编译优化,但有时候某段代码不能使用编译优化,却又不想影响整体代码的编译,就需要控制这段代码不使用编译优化。附《Standard S32DS C/C++ Compiler》

2023-10-07 13:51:11 662

原创 CP AUTOSAR OS内容简要

另外通过调度表可以实现任务同步,由于Alarm只能一次触发一个任务,因此不能实现任务同步,而调度表则可以实现同时触发不同核的多个任务,而该方法仅用于定期执行的任务的同步。用户任务需要根据不同的应用场景进行自定义,而系统任务一般有空闲任务(Idle Task),因此操作系统的任务设一般指的是用户任务的设计。当某个任务或二类中断成功申请占用自旋锁时,其他内核上的所有任务和二类中断均无法成功占用自旋锁,并会处于停滞状态,等待自旋锁占用者将其释放,此时其他内核仍然处于工作状态,CPU负载率不会下降。

2023-09-01 10:23:32 87

原创 AUTOSAR_DEM

当一个事件上报一次PREFAILED状态,那么计时器(Fault Detection Counter)开始计时,在一段时间t(failed)内,如果都没有出现PREPASSED或PASSED状态,那么到达t(failed)时,故障状态变成Failed;DemDTCAttributes用于配置DTC的属性,包括老化周期、故障优先级、存储方式(立即存储还是下电存储)、快照数据需记录的最大组数以及参考的冻结帧数据快照数据、故障数据存储的memory等,其中快照数据、扩展数据等需要在DemGeneral中配置。

2023-08-22 17:56:01 4

原创 关于Cortex内核相关的若干疑问

FAQ10. 函数调用过程中出入栈的情况,为什么C语言函数的参数入栈顺序是从右向左,为什么建议函数参数不多于4个?FAQ6. 中断的具体行为,什么是中断的悬起,中断优先级分组的意义,什么是中断咬尾?FAQ2. 内核的操作模式有哪些,模式何时变换,操作模式的引入带来什么好处?FAQ9. RTOS的线程栈在上下文切换过程中的出入栈是怎么样的?FAQ7.RTOS为什么被称为实时操作系统,实时体现在哪里?FAQ1. Cortex-M的寄存器组有哪些,有什么作用?FAQ8. RTOS的上下文切换原理是怎么样的?

2023-08-21 19:34:55 16

原创 基于Cortex-M4/7内核的寄存器要点总结

核心寄存器介绍

2022-11-09 19:51:32 6520 3

原创 hex文件、out文件、bin文件、map文件解析

【1】“hex文件”内容解析hex文件是Intel公司提出的按地址排列的数据信息格式,数据宽度为字节,所有数据使用十六进制数字表示,并且以ASCII码的形式,按行记录数据。(即hex文件是用ASCII来表示二进制的数值)通常用于传输将被存于ROM或这EPROM中的程序和数据。hex文件每一行均以“:”开头,表明记录的开始,“:”之后,每至少2个字符表示一组十六进制数据,格式形如:LLAAAATTDD....DDCC。“:”、“LL”、“TT”、“CC”占1个字节;“AAAA”占两个字节;“DD.

2022-03-30 21:12:55 11179

原创 C语言要点归纳

源自:《C语言入门经典(第4版)》(美)lvor Horton. 著 杨浩. 译 北京.清华大学出版社此篇博客的内容主要是,提取了上述提到的这本教材中的相关重难点,以及需要格外注意的地方,另外添加了个人对此的详细解释,从而更深刻地理解C语言的内容,为后续编程语言的学习及相关项目的研发做准备!文中提到的页码注释与教材均一一对应。

2017-09-20 11:06:25 887 1

AutoSAR规范-Classic-22-11

AutoSAR规范_Classic_22-11

2023-11-26

矩阵键盘结合12864(不带字库)在proteus里面仿真显示汉字

C程序源代码以及Proteus仿真电路

2018-04-08

空空如也

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

TA关注的人

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