- 博客(84)
- 收藏
- 关注
原创 AutoSAR 内存管理 NVM 规范 (2)(R24-11翻译)
内存服务由一个模块组成,即 NVRAM 管理器。它负责非易失性数据的管理(从不同的内存驱动程序进行读/写)。任务:以统一的方式向应用程序提供非易失性数据。从内存位置和属性中抽象出来。提供非易失性数据管理的机制,如保存、加载、校验和保护及验证、可靠存储等。
2025-03-31 07:38:19
805
原创 AutoSAR 内存管理 NVM 规范 (1)(R24-11翻译)
本规范描述了 AUTOSAR 基础软件模块 NVRAM 管理器(NvM)的功能、API 和配置。NvM 模块应提供服务,以确保在汽车环境中根据其各自的要求存储和维护 NV(非易失性)数据。NvM 模块应能够管理 EEPROM 和/或 FLASH EEPROM 仿真设备的 NV 数据。NvM 模块应为 NV 数据(初始化/读取/写入/控制)的管理和维护提供所需的同步/异步服务。NVM_BLOCK_NATIVE(原生 NVM 块)NVM_BLOCK_REDUNDANT(冗余 NVM 块)
2025-03-28 07:34:22
777
原创 STM32 物联网智能家居 (七) 设备子系统--风扇控制
下面我们来讲解设备子系统中的风扇控制,这是我们设备子系统中的最后一章,相信前面大家一家掌握了这种架构分层的编程思想,后续会很容易将程序进行扩展和开发。下面是STM32物联网智能家居的系统设计图,本节我们讲解的风扇系统是通过GPIO进行控制,通过INA和INB两个引脚分别给高低电平,使风扇进行正转和反转。
2025-02-27 07:44:04
1180
原创 ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用
作为嵌入式开发领域的经典处理器内核,ARM Cortex-M3(CM3)凭借其高效能、低功耗和丰富特性,在工业控制、物联网、消费电子等领域广泛应用。而内核寄存器是我们调试代码,理解程序运行逻辑必不可少的好帮手,理解汇编是通往嵌入式高手的必经之路。下面本文从技术角度解析其核心架构与核寄存器做相关讲解。ARM Cortex-M3是一款面向嵌入式系统的32位RISC处理器内核,采用改进型哈佛架构,通过独立指令总线(I-Code)和数据总线(D-Code)实现并行访问,同时维护统一编址的4GB线性存储空间。内核配备
2025-02-22 09:21:26
1153
原创 STM32 物联网智能家居 (六) OLED显示设备
OLED(Organic Light-Emitting Diode,有机发光二极管)显示屏是一种常见的显示技术,广泛应用于智能手机、智能手表、嵌入式设备等。下面我们来讲解设备子系统中的OLED显示设备,本节我们不讲解OLED的基本原理,只展示OLED作为设备子系统的编程思路。
2025-02-20 07:51:51
1105
原创 STM32 物联网智能家居 (五) 设备子系统之点亮LED灯
对于LED灯控制,我们可以设想一下LED灯的功能。首先就是灯的,主要大概就是这三个功能。我们如何将这三个功能抽象出来呢,无论底层的LED设备是什么,都可以用这个结构体抽象出来。如下面所示,控制LED设备肯定需要初始化函数,控制LED设备亮灭,目前设置LED灯的颜色需要三色灯,目前不支持,控制LED灯的亮灭,可以通过给出不同占空比的PWM波进行控制亮度,目前该项目没有考虑。
2025-01-18 13:13:09
1346
2
原创 STM32 物联网智能家居 (四) 设备子系统之分层框架
前面我们讲述了输入子系统中的按键输入和标准输入,我们学习了函数指针的调用方法,这种方法一般在裸机程序中使用的比较少,但在Linux、FreeRTOS和RT-Thread操作系统中使用的比较多。这种方法有利于函数的封装、扩展。方便后续再给软件增加新的接口提供便利。下面我们继续采用上面面向对象的方法,来讲解我们的设备子系统。设备子系统分为三类,GPIO控制、风扇控制和OLED显示这三部分。
2025-01-16 23:21:18
1568
1
原创 天塌了,Arm 计划将产品价格最高上调 300%—考虑自行设计芯片以抗衡竞争对手
在公司发展的整个历程中,Arm 公司一直授权其指令集架构或实际处理器组件的设计,比如通用内核或图形处理单元,但从未授权整个芯片设计。然而,据路透社报道,该公司正在重新考虑其业务策略以增加收益。在新战略下,Arm 计划提供更完整的芯片设计,甚至推出与 Arm 客户开发的产品竞争的实际芯片模块。此外,据报道,Arm 还打算将其授权价格提高两倍。2019 年,Arm 推出了其“毕加索”项目,旨在未来 10 年内每年增加 10 亿美元的智能手机收入。
2025-01-16 08:30:08
483
原创 STM32 物联网智能家居 (三) 输入子系统
STM32物联网智能家居项目通过添加设备抽象层,如GPIO键和时间监控,配合输入系统和测试,已构建了一个框架分明的物联网智能家居输入子系统。此系统能将高度进行抽象和分层,对于事件跨芯片和平台进行多样化处理,最终展现了很好的优化效果。
2025-01-15 23:26:21
1065
原创 STM32 物联网智能家居 (二)-开发环境及工程搭建(STM32CubeMX)
这篇文章我们具体会讲到整个项目需要哪些硬件模块、软件环境、搭建最小工程时用到STM32CubeMX的详细配置指导,以及最后用Keil 5工具进行编译工程的教学,- 中控屏启动后,自动连接家里的路由器,在中控屏上显示出路由器的IP地址;- 用户用手机上启动微信小程序,输入中控屏显示的IP,连接到家里的中控屏上;- 用户在微信小程序里,点击图标控制家中的灯、风扇、空调、窗帘、除湿器等,并读取屋内温湿度;- 并且中控屏每隔60s向微信小程序传输一次家中温度和湿度值进行更新;
2025-01-14 08:08:24
1328
原创 STM32 物联网智能家居 (一) 方案设计STM32+ESP8266+TCP/UDP/MQTT
下面我们要开展的博客专栏,该专栏我们会将STM32各种外设模块I2c、Usart、Wifi、ESP8266、分层编程思想以及调试的方法融入到整个专栏中,让你从一个单片机小白,进化到一个能独立编写出具有软件框架思维的初级单片机爱好者。整个专栏我借鉴了韦东山老师的双RTOS课程中内容。下面让我们一起来学习一下。下面展示三张系统设计框图,具体内容我会在后面详细介绍,这三张图放到前面开宗明义,让大家一看就系统设计、硬件设计和软件设计的思路。下面是我们的系统设计:下面是将整个系统抽象出来的硬件框图。
2025-01-12 13:57:49
2001
原创 汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)
在AUTOSAR基础软件(BSW)架构中,软件层划分十分精细,各种服务和模块提供了多种基础功能,支持汽车电子系统的高效运行。根据你要求的分类,下面分别介绍 系统服务、存储服务、加密服务、车外通信服务、通信服务、I/O硬件抽象和复杂驱动模块的功能与作用。
2025-01-10 08:21:40
2146
原创 汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)
本文档的目的分层软件架构描述了 AUTOSAR 的软件架构:➢ 它以自上而下的方式描述了 AUTOSAR 软件的层次结构,并且➢ 将基础软件模块映射到软件层,并且➢ 展示了它们之间的关系。这份文件侧重于概念分层软件架构的静态视图:➢ 它没有指定具有详细静态和动态接口描述的结构化软件架构(设计) ◼ 这些信息包含在基本软件模块自身的规范中。微控制器抽象层是基础软件的最低软件层。它包含内部驱动程序,这些内部驱动程序是能够直接访问微控制器(µC)和内部外设的软件模块。
2025-01-09 08:22:01
1291
原创 汽车基础软件AutoSAR自学攻略(二)-AutoSAR CP分层架构(1)
本专栏的目标是普及AutoSAR相关的标准、方法论、软件的设计思路,以及最重要的软件实战。目标是今年出100篇AutoSAR相关的文章专栏,让我们拭目以待。
2025-01-02 07:47:40
1735
1
原创 汽车基础软件AutoSAR自学攻略(一)-低成本AutoSAR环境搭建
AutoSAR标准也只是一套标准,但其理念“在标准上合作,在实现上竞争”,基于AutoSAR标准的软件包,虽说价格很高,但无形之间却拉低了所有工程师、主机厂和Tier1的开发门槛,提高了软件质量,降低了开发难度。未来AutoSAR将会越来越在汽车行业普及,对每一位基础软件开发的工程师则是必备技能。虽然AutoSAR的标准文档都是开源免费的,所有人都可以免费下载进行学习,但这些也只是文字,重要的还是将标准软件化,进行实战。但是所幸经过本人多番调研,发现可以仅仅用几百元的价格就可以搭建属于自己的一套AutoSA
2024-12-31 08:07:57
2700
3
原创 物理学天空的两朵乌云——量子论与相对论
从凯尔文的“两朵乌云”到量子力学和相对论的革命,科学史告诉我们,突破性进展往往源于对现有理论的质疑与对未知领域的探索。这种精神不仅推动了科学的进步,也让人类文明得以不断进化。今天,我们站在巨人的肩膀上,继续探索那些尚未解决的谜题。科学的道路虽然漫长,但它的核心始终未变:敢于想象、勇于突破、乐于合作。正是这些特质,让科学成为了人类认识世界的最强大工具。未来的科学革命会是什么?它可能是量子力学与相对论的统一,也可能是对生命本质的全新理解。
2024-12-25 21:59:24
1077
原创 STM32 BootLoader 刷新项目 (十四) 所有源代码获取
大家好,我们的文章已经更新了13期了,历时半年时间,从BootLoader的方案,到STM32的硬件设置,STM32CubeMx配置硬件GPIO,LED,UART,NVIC,再到使用STM32CubeIDE编译工程,使用STM32CubeProgrammer查看MCU的Flash和RAM的Hex内容,BootLoader和App的地址划分,BootLoader地址跳转,Flash写入,擦除,Option Byte操作,Python上位机等等。
2024-12-05 08:03:08
504
原创 STM32 BootLoader 刷新项目 (十三) Python上位机介绍
这是我们STM32 BootLoader的最后一篇文章了,讲述用Python写的上位机,也更新了半年时间了,谢谢大家的支持,到目前为止,已经更新了12篇文章了,想必大家对BootLoader已经有了个基本的了解,下面是Python上位机的全部源码,有需要的兄弟可以借鉴一下,水平有限。
2024-12-03 08:08:12
1151
原创 STM32 BootLoader 刷新项目 (十二) Option Byte之FLASH_OPTCR-命令0x58
OPTION Byte 是 STM32 系列芯片中一种特殊的配置区域,存储在片内闪存(Flash memory)中。它的主要作用是提供芯片启动、保护和工作模式等关键参数的配置选项。这些字节在系统启动时被加载到对应的配置寄存器中,影响芯片的行为。是一个 32 位寄存器,其各位或各位段控制特定的 Option Byte 配置。位段名称说明[0]OPTLOCK选项锁位(Option Lock)[1]OPTSTRT选项启动位(Option Start)[2:3]BOR_LEV。
2024-12-01 09:22:49
1596
原创 STM32 BootLoader 刷新项目 (十一) Flash写操作-命令0x57
STM32F407 芯片采用 Cortex-M4 内核,内置 Flash 存储用于程序和数据存储。扇区 0 到 3:16KB 每扇区扇区 4:64KB扇区 5 到 11:128KB 每扇区扇区编号起始地址大小00x0800000016 KB10x0800400016 KB20x0800800016 KB30x0800C00016 KB40x0801000064 KB5-110x08020000 开始每扇区128 KB分区结构。
2024-11-18 07:53:26
1258
原创 STM32 BootLoader 刷新项目 (十) Flash擦除-命令0x56
STM32F407 芯片采用 Cortex-M4 内核,内置 Flash 存储用于程序和数据存储。扇区 0 到 3:16KB 每扇区扇区 4:64KB扇区 5 到 11:128KB 每扇区这种不同大小的扇区设计适合不同的应用需求,比如小容量扇区用于存储配置数据,大容量扇区用于存储固件。在本篇文章,我们的主要是介绍0x56的命令,这个命令主要是在BootLoader中擦除指定Flash Sector的命令。
2024-11-15 07:30:46
1796
原创 STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55
在本篇文章,我们的主要是介绍0x55的命令,这个命令主要是在BootLoader中让程序跳转到指定地址。通过上位机发送10 Byte的数据,其中第1 Byte为整个数据的长度,第2Byte为指令码,第3-6 Byte为跳转的地址,第7-10 Byte为前6个Byte的CRC校验值。上位机通过串口UART发送给下位机,下位机回复地址是否跳转成功的标志。
2024-11-08 08:15:58
1734
原创 STM32 BootLoader 刷新项目 (八) 读取Flash保护ROP-0x54
介绍一下BootLoader一上电对芯片Option Byte操作的过程,Option Byte可以配置的功能包括**Read protection (RDP) **读出保护级别,**BOR级别(Brown-out Reset)**设置电压阈值,**看门狗配置**,**Flash写保护**。
2024-11-08 07:24:19
1154
原创 STM32 BootLoader 刷新项目 (七) 获取芯片ID-0x53
前面的一系列文章中,我们介绍了整体的BootLoader的一个方案,现在我们针对该BootLoader设计多个命令,下面我们来讲述获取芯片ID的命令-0x53。STM32F407的Device ID(设备标识符)和Type ID(类型标识符)是用于标识芯片的唯一性信息。Device ID通常是芯片生产时赋予的唯一序列号,而Type ID用于标识芯片的型号和系列。
2024-10-12 08:05:52
1071
原创 STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52
在嵌入式MCU软件开发中,通过串口进行人机交互是非常常见且重要的操作方式。获取帮助的命令通常用来向用户展示所有支持的交互指令及其使用方法。
2024-09-17 08:37:38
1720
原创 STM32 BootLoader 刷新项目 (五) 获取软件版本号-命令0x51
通过读取上位机终端输入的“1”,知道是要获取软件版本号的命令,则按照规定先发送数据长度5,在发送命令指令0x51,在计算前两位的CRC值,总共6byte的数据发送给下位机。通过switch语句,判断0x51,则进入bootloader_handle_getver_cmd(bl_rx_buffer),来回去软件版本号的函数。启动第一个字节,为接下来要发送数据的长度,即为5个字节,第二个字节为0x51,即为上面获取软件版本号的指令,后四位为前两位的CRC校验位。如果正确的传输,则发送ACK让上位机接收。
2024-07-17 21:26:13
1351
原创 STM32 BootLoader 刷新项目 (四) 通信协议
前面几章节,我们已经介绍了BootLoader的整体程序框架,方案设计,以及STM32CubdeMX的配置操作。下面切入整个BootLoader项目的核心内容,通信协议。我理解的通信协议,其实就是双方提前约定好的暗号。比如说到了提前约定好的地方,一个人逢人便说:“天王盖地虎”。只有懂他暗号对接的人才知道,这是他要找的人,另外一个人就回:”小鸡炖蘑菇“。至此,这两个便通过暗号,传达到了他们配对的信息。
2024-07-14 16:16:59
1378
原创 STM32 BootLoader 刷新项目 (三) 程序框架搭建及刷新演示
本项目采用正点原子探索者v2开发板,选用其中的左下角的USB串口进行和上位机之间的串口通信。正点原子STM32F4 探索者V2开发板,如下图所示,通过短接PA9-RXD,短接PA10-TXD,即将USART1与CH340芯片连接在一起,串口USART1与上位机可通过USB进行通信。如下图电路所示,使用一根MicroUSB结构的USB数据线,一端连接计算机的USB口,一端连接开发版左下角的USB_232口上,就可以在计算机上虚拟出一个串口,通过这个虚拟串口可以进行计算机与开发板之间的串口通信。
2024-07-13 11:53:00
1168
1
原创 ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文)
ISO 15765的这一部分规定了一种传输协议和网络层服务,旨在满足基于CAN的车辆网络系统对控制器区域网络的要求,如ISO 11898-1所规定。它是根据ISO 14229-1和ISO 15031-5中建立的诊断服务定义的,但不仅限于与其一起使用,并且还兼容大多数其他车载网络通信需求。ISO 15765的这一部分提供了传输协议和网络层服务,以支持不同的应用层实现,例如:- 增强型车辆诊断(超出法定功能的排放相关系统诊断,非排放相关系统诊断),- 根据ISO 15031规定的排放相关的车载诊断(OBD
2024-06-30 08:11:37
1721
原创 STM32 BootLoader 刷新项目 (二) 方案介绍
本项目做的BootLoader是在STM32自带的启动一级boot上加了一层,即为二级Boot,其是专门为客户自定义的启动过程中操作软件的后门。主要作用是更新MCU中的软件,在正常启动过程中,CB刷新整个控制器中的软件。整个软件的代码块如下图所示,最下一层是SB(ST自带的Boot),这里面初始化异常向量表,初始化堆栈和RAM。第二层是CB(客户定制化的Boot),这里面主要是执行客户所定义的启动逻辑,其中包括刷新整个控制器中的软件,获取软件版本号,擦除指定Sector的代码
2024-06-23 18:54:32
1305
2
原创 STM32 BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本项目采用正点原子探索者v2开发板,选用其中的左下角的USB串口进行和上位机之间的串口通信。正点原子STM32F4 探索者V2开发板,如下图所示,通过短接PA9-RXD,短接PA10-TXD,即将USART1与CH340芯片连接在一起,串口USART1与上位机可通过USB进行通信。如下图电路所示,使用一根MicroUSB结构的USB数据线,一端连接计算机的USB口,一端连接开发版左下角的USB_232口上,就可以在计算机上虚拟出一个串口,通过这个虚拟串口可以进行计算机与开发板之间的串口通信。
2024-06-11 08:10:56
1742
原创 NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图)
本应用笔记描述了与S32G处理器和VR5510 PMIC相关的安全概念。该文档涵盖了S32G和VR5510的安全功能以及它们如何相互作用,以确保对ASIL D安全完整性级别进行系统级覆盖。本应用笔记介绍了针对S32G3应用的VR5510和PF5300 PMIC解决方案。
2024-04-24 07:50:30
3697
4
原创 NXP恩智浦 S32G电源管理芯片 VR5510 使用和配置指导
VR5510是一款用于汽车领域的功能安全型多输出电源集成电路,主要应用于网关、ADAS(高级驾驶辅助系统)、无线电和信息娱乐等方面。该设备包含多种开关模式和线性稳压器,并提供输入和输出的外部频率同步以优化系统的EMC性能。VR5510具有增强的安全功能,具备故障安全输出。该设备涵盖了ASIL B和ASIL D的安全完整性级别,并符合ISO 26262标准。VR55100可以在面向安全的系统分区中得到充分利用。
2024-04-15 07:57:15
1926
原创 ARM v8 Cortex R52内核 04 时钟和复位 Clocking and Resets
Cortex-R52处理器具有一个单一的时钟,驱动着所有的触发器和RAM。各种输入,包括复位输入,都有同步逻辑使它们可以与处理器时钟异步操作。大部分总线都有使能输入,允许它们以处理器时钟的整数倍进行操作。单个Cortex-R52处理器时钟分配给所有核心和相关逻辑。每个核心使用一个门控时钟,在WFI低功耗模式或WFE低功耗模式下可以禁用。有关这些模式的更多信息,请参见 5.3 Architectural clock gating on page 5-208。
2024-04-14 22:07:53
1065
原创 ARM v8 Cortex R52内核 08 内存保护单元 Memory Protection Unit
Cortex R52 处理器具有两个可编程的MPU,由EL1和EL2控制。每个MPU允许将4GB内存地址划分为多个区域。每个内存区域由基地址、限制地址、访问权限和内存属性定义。对于数据访问,MPU检查当前转换机制是否允许对某个区域进行读取或者写入操作。对于指令访问,MPU检查访问是否在该区域允许,并且MPU检查转换机制是否允许执行。对于数据和指令的访问,如果允许访问,则MPU将分配该区域定义的内存熟悉。
2024-04-14 09:31:03
1604
原创 优快云博客输出一周年及工作两年记录
在2024.04.10这天,优快云经过自己一年的运营和输出,粉丝终于达到了2000+,其中大部分文章都是翻译的手册,算是对平时自己学习的一个记录,后续要输出更多自己原创优质的作品,不断提高自己。
2024-04-10 07:58:42
422
原创 VR5510 芯片手册详解(NXP恩智浦电源管理芯片 PIMC)
VR5510是一款汽车多输出电源管理IC,专注于网关、车载网络、域控制器、远程信息处理和车辆到X(V2X)通信。该设备包括多个高效开关模式和线性稳压器。它提供了输入和输出的外部频率同步,以优化系统的电磁兼容性(EMC)性能。VR5510包括增强的安全功能,具有故障安全输出。该设备覆盖了汽车安全完整性等级(ASIL)B和ASIL D安全完整性等级。它符合ISO 26262标准,并符合AEC-Q100 rev H(Grade1,MSL3)。
2024-04-10 07:24:28
2076
原创 ARM v8 Cortex R52内核 06 初始化 Initialization
Cortex-R52 处理器提供了一种机制,可以在复位时初始化所有程序员可见的复位,包括没有被架构定义重置值的寄存器。在Cortex-R52处理器大多数架构寄存器,例如r0-r14、和s0-s31、和包含Advanced SIMD的d0-d31,在复位后具有未知值,。因此,在使用这些寄存器之前,必须为所有模式初始化他们,可以使用指令 或加载指令。在复位时,(CPSR) 和一些系统寄存器字段被赋予已知值。
2024-04-08 22:37:09
1639
原创 ARM v8 Cortex R52内核 02 程序模型 Programmers Model
Cortex-R52处理器实现了Armv8-R架构。这包括:所有的异常级别,EL0-EL2。每个异常级别下的AArch32执行状态。T32和A32指令集,其中包括:浮点运算。可选的高级SIMD操作。
2024-04-06 22:43:58
1530
1
英飞凌Aurix 2G Tc387 PWM和ICU信号输出和采集代码GTM TOM ATOM TIM
2024-09-22
英飞凌Aurix 2G Tc387 Spi DMA通信代码(包含Spi Master和Spi Slave通信代码)
2024-09-22
GNU Linker Linker Scripts
2024-03-04
NXP恩智浦电源管理芯片 PIMC VR5510 芯片手册
2024-02-08
STM32 CubeMX 中断NVIC 实战 (附源码)
2024-01-03
STM32F407 CubeMX GPIO 输入/输出按键点亮LED灯实战源码
2023-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人