![](https://img-blog.csdnimg.cn/direct/d5d89ffd43974d9a951aeeee6e3d1df5.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM
文章平均质量分 81
TDA4,AURIX,STM32mp157,IMX6(linux独核)
梅尔文
汽车电子技术专家
展开
-
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 评论 -
ARM架构下内存与指针和堆栈的关系
栈顶指的是当前栈指针(Stack Pointer, SP)所指向的内存地址。栈底指的是栈的起始地址,也就是栈区域在内存中的最低地址。在一个空栈中,栈顶是没有元素的,通常被定义为 -1 或 NULL。原创 2024-07-19 16:32:25 · 577 阅读 · 0 评论 -
ARM架构与FreeRTOS中的内存管理(flash与SRAM,堆栈)
在Cortex-M7中,存储器一共有4GB的地址空间,4GB的地址空间又被划分为8个区域块,每个块有512M的内存。Note:4GB的地址空间为 0x0000 0000 - 0xFFFF FFFF,可寻址的512M的地址空间为 0x0000 0000 - 0x1FFF FFFF,可寻址的地址是指处理器可以直接访问和寻址的存储区域,如flash,SRAM,寄存器。原创 2024-07-16 19:59:39 · 637 阅读 · 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 评论 -
Cortex-M3与Aurix的堆栈
2. 上面说的是Cortex-M3内核的指针堆栈寄存器,但是TC397与Cortex-M3还有不同,他是有五个核,每个核都有自己的堆栈空间,它分为内核堆栈(core stack)和用户堆栈(user stack)和中断堆栈(interrupt stack)。除此之外,c语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要是随时释放。其实说白了就是如果你跑的是裸机程序,他用的就是一个堆栈的机制,就是只跑。原创 2023-07-14 16:01:30 · 1119 阅读 · 1 评论 -
关于Aurix的内存,缓存Cache,PSPR等的理解-(持续更新)
举例:一个手机里存着我们很多的数据,如果手机关机,这些数据或者图片是存放在FLASH里的,因为FLASH是存放静态数据的,而当手机重新上电的时候,flash里的数据会通过指令传输到RAM里,之后在被系统里的函数调用,从而开机后,手机可以看到关机前的数据。根据要寻址的地址的tag来逐一与cache中的tag字段比较,如果有与之匹配的cache line,也就是cache hit,如果遍历整个cache,也没有找到匹配的cache line,那就是cache miss了。但是如果掉电,RAM里的数据不会保存,原创 2023-03-24 16:48:25 · 3531 阅读 · 0 评论 -
Ring Buffer 原理
因为这些新的节点的确已经写入了数据(Ring Buffer本身的序号已经更新),而且消费者对这些节点的唯一操作是读而不是写,因此访问不用加锁。在上面的例子中,消费者处理完了Ring Buffer里序号8之前(包括8)的所有数据,那么它期待访问的下一个序号是9。现在序号12到了,消费者可以让ConsumerBarrier去拿这些序号节点里的数据了。另一个好处是——你可以用多个消费者(Consumer)去读同一个RingBuffer ,不需要加锁,也不需要用另外的队列来协调不同的线程(消费者)。原创 2022-08-24 20:49:03 · 3848 阅读 · 0 评论 -
ARM Cortex-M核的内核态,用户态
首先,用户态和内核态是从操作系统层面上来划分的,如果没有操作系统,我可以直接运行在特权模式下,并使用特权指令。在这种情况下,我将负责管理和控制系统资源,执行关键操作,以及确保系统的安全性和稳定性。虽然在操作系统层面上,被划分出了用户态和内核态,但实际在ARM Cortex-M领域,并没有做到完全隔离。毕竟作为MCU,如果完全隔离,对开发会有很大的难度。而像ARM Cortex-A核系列,跑的是linux,一般会做到完全隔离,我们一般都是通过读写文件对设备进行操作,而不是直接对寄存器进行操作。原创 2023-11-28 19:39:16 · 352 阅读 · 0 评论 -
RISC-V
RISC-V操作系统FreeRTOS:https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS/Demo/RISC-V_GCC_Demo。RISC-V LLVM编译器:https://github.com/llvm/llvm-project/tree/main/llvm/lib/Target/RISCV。RISC-V Linux内核:https://github.com/torvalds/linux/tree/master/arch/riscv。原创 2023-06-14 18:42:52 · 270 阅读 · 0 评论