ARM
文章平均质量分 74
TDA4,AURIX,STM32mp157,IMX6(linux独核)
梅尔文
汽车软件技术专家
展开
-
Cortex-M3与Aurix的堆栈
2. 上面说的是Cortex-M3内核的指针堆栈寄存器,但是TC397与Cortex-M3还有不同,他是有五个核,每个核都有自己的堆栈空间,它分为内核堆栈(core stack)和用户堆栈(user stack)和中断堆栈(interrupt stack)。除此之外,c语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要是随时释放。其实说白了就是如果你跑的是裸机程序,他用的就是一个堆栈的机制,就是只跑。原创 2023-07-14 16:01:30 · 983 阅读 · 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 · 3145 阅读 · 0 评论 -
Ring Buffer 原理
因为这些新的节点的确已经写入了数据(Ring Buffer本身的序号已经更新),而且消费者对这些节点的唯一操作是读而不是写,因此访问不用加锁。在上面的例子中,消费者处理完了Ring Buffer里序号8之前(包括8)的所有数据,那么它期待访问的下一个序号是9。现在序号12到了,消费者可以让ConsumerBarrier去拿这些序号节点里的数据了。另一个好处是——你可以用多个消费者(Consumer)去读同一个RingBuffer ,不需要加锁,也不需要用另外的队列来协调不同的线程(消费者)。原创 2022-08-24 20:49:03 · 3693 阅读 · 0 评论 -
ARM Cortex-M核的内核态,用户态
首先,用户态和内核态是从操作系统层面上来划分的,如果没有操作系统,我可以直接运行在特权模式下,并使用特权指令。在这种情况下,我将负责管理和控制系统资源,执行关键操作,以及确保系统的安全性和稳定性。虽然在操作系统层面上,被划分出了用户态和内核态,但实际在ARM Cortex-M领域,并没有做到完全隔离。毕竟作为MCU,如果完全隔离,对开发会有很大的难度。而像ARM Cortex-A核系列,跑的是linux,一般会做到完全隔离,我们一般都是通过读写文件对设备进行操作,而不是直接对寄存器进行操作。原创 2023-11-28 19:39:16 · 327 阅读 · 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 · 255 阅读 · 0 评论