![](https://img-blog.csdnimg.cn/1e96d0944b42454a9d458c55e6a97045.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
嵌入式MCU
文章平均质量分 77
英飞凌 AURIX
梅尔文
汽车电子技术专家
展开
-
OS的MPU机制-ARM架构下MPU对于任务和内存的保护
其实这三种方式没有MPU也可以实现, 只不过归不用MPU的操作归属于 CPU 架构层面,而MPU属于内存层面的控制,进一步对region划分了区域,哪些可以Cache,哪些可以Share,只不过这种操作是基于内存的操作,。更细化权限控制,MSP和PSP 指针是 CPU 架构层面的特权级划分,MPU 机制是基于内存区域的访问控制。内核直接访问芯片内存,如上图,去掉Cache走总线AXI或AHB的链路。如果开启共享(Shareability),等同于关闭Cache。Cortex-A7(含MMU)原创 2024-07-25 14:17:42 · 690 阅读 · 0 评论 -
关于MCU-Cortex M7的存储结构(flash与SRAM)
中断向量表放置在flash的起始地址,privileged functions 特权模式下执行的指令.isr_vector section的目的是把中断向量表放在 0x08000000 这个特定的内存位置,确保中断向量表占用的内存空间大小是 0x298 字节,将所有包含中断向量表的目标文件(*(.isr_vector))链接到这个 section。 *(.text section*)中定义的是中断服务的应用代码FreeRTOS系统调用被放置在起始地址0x08008000的flash地址,也就接着特权指令后的原创 2024-07-04 19:43:13 · 452 阅读 · 0 评论 -
OS中断机制-嵌套和竞争
在STM32F4 中 NVIC_PRIORITYGROUP_4:优先级分组为 4,意味着抢占优先级和子优先级各占 4 位,即都具有 16 个取值(0 到 15)。这种方式下,可以实现最大的优先级颗粒度划分。抢占优先级(Preemption Priority)就是同一组中断之间的优先级关系,子优先级(Subpriority)也就是在同一抢占优先级组内进一步划分优先级。函数来设置中断的 IRQn 中断号,PreemptPriority 抢占优先级,SubPriority 子优先级,数值越低表示优先级越高。原创 2024-06-25 18:31:25 · 59 阅读 · 0 评论 -
OS的Trap机制-TC397
这个osTrap_1_Core0函数可能指向用户编写的函数,也可能是默认的Os_Hal_UserTrapEntry处理函数,下面简要分析Camera项目中发生trap故障时bug现场保存的流程,这里通过callout函数将bug信息保存在DSPR,可实现没有调试器或者bug偶发时对问题的追踪。到目前为止,我们已经可以定位到trap类型bug的引发原因,从而针对性的修改代码。寄存器保存了异常向量表的基地址。由下图可以看到,针对8类trap,程序都有对应的trap处理函数。向量进行访问,并按硬件定义的。原创 2024-06-24 19:53:33 · 108 阅读 · 0 评论 -
OS中断机制-外部中断触发
根据DataSheet的文档描述,中断被触发,一定是因为寄存器的改变,从而触发对应的中断服务函数(注意中断触发后,要如何执行要根据自己的需求去实现Callback)也就说在初始化的时候,已经确定哪个GPIO作为中断IO,而在这里只是根据IO对应的中断线去使能中断功能。MCU正常运行时,外部中断源发生中断事件,中断源向MCU发送跳转指令,跳转到对应的中断服务函数。AUTOSAR的中断触发,基于TC397的I2C。初始化GPIO,并确认中断的触发方式。中断被触发,执行中断服务函数。EXTI外部中断触发过程。原创 2024-06-24 19:31:37 · 115 阅读 · 0 评论 -
CAN网络管理(网络节点)
通过配置寄存器,确定接收过滤器用于定义节点接收哪些报文,过滤器的定义是通过设置报文标识符(ID)参数来实现的还有屏蔽寄存器(Mask Registers),可以与AUTOSAR中的Basic Can一起用。网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向域控发送的,0x26节点向0x40节点发送报文。如何通过广播发送CAN报文到对应的节点。原创 2024-04-16 20:01:24 · 574 阅读 · 0 评论 -
CAN的底层驱动
它负责将CAN控制器产生的CAN消息转换为适合在CAN总线上传输的电信号,并将从CAN总线接收到的电信号转换为CAN控制器可以理解的数据。RX Handler 负责将 CAN 内核的数据传输到外部消息 RAM 中, RX Handler 支持两个接收FIFO,每个 FIFO 可以配置 64 个专用的 buffer。Can报文传输到Can_Controller,也就是MCU子系统,如下图所示,通过子系统的一系列机制,过滤器、接收发送 FIFO,最终传到Core。最后,数据在通过core传到MCU内核。原创 2024-04-17 21:00:22 · 141 阅读 · 0 评论 -
AUTOSAR-内部与外部Watchdog应用逻辑
当内狗使能以后,如果程序运行异常,没有有效喂狗,内狗会触发SMU(Safety Management Unit)的Alarm,进行异常处理,eg:通知复位控制单元(RCU:Reset Control Unit)进行复位。WWDG 时钟由 APB 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,此独立看门狗外设可检测并解决由软件错误导致的故障,并在计数器达到给定的超时值时触发系统复位。外部PMIC的watchdog。原创 2024-04-08 15:26:13 · 244 阅读 · 0 评论 -
LWIP协议与TCP/IP
用少量的资源消耗实现一个较为完整的TCP/IP协议栈,其中“完整”主要指的是TCP协议的完整性,实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。比如TCP,UDP协议,比如工业总线上的Modbus,比如想要实现网关路由的功能,只要是用到以太网的,都可以实现功能,还有一些物联网像MQTT等。下面只是一个很粗糙的流程图,还需要具体的深入研究,基于LWIP的TCP是如何实现的。收:如网卡的初始化和网卡的收发数据,当 LWIP 底层得到数据之后,才会传入到内核中去处理。原创 2023-04-22 20:39:29 · 2269 阅读 · 1 评论 -
串口收发使能DMA
对于发送,使用中断发送,不会阻塞线程,但需浪费大量中断资源,CPU频繁响应中断;当DMA传输数据完成,CPU介入开始拷贝DMA通道buf数据,如果此时串口继续有数据进来,DMA继续搬运数据到buf,就有可能将数据覆盖。第三步,buf后半部分数据搬运完成,触发“溢满中断”,CPU来拷贝buf后半部分数据。第一步,DMA将数据搬运完成buf的前一半时,产生“半满中断”,CPU来拷贝buf前半部分数据。对于发送,使用循环发送,可能阻塞线程,需要消耗大量CPU资源“搬运”数据,浪费CPU。原创 2022-08-23 17:03:36 · 3672 阅读 · 0 评论 -
内部flash模拟eeprom逻辑
模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0,此时需要注意的是将eep_page0的有效数据copy到eep_page1,因为正常我们向flash里写的数据有很多无效数据,比如同一个变量写了50次,那我们只需要最后一次的值,之前的49次都是无效数据。(实际上page每次切页最终保留的就是所有存在的变量)原创 2024-01-15 15:45:24 · 299 阅读 · 0 评论