摘要: 资源限制 内存容量小:MCU 的 RAM 通常仅有几十 KB 到几百 KB,动态分配需要维护复杂的内存链表和元数据,占用额外内存空间。 性能敏感:动态分配的时间复杂度(如搜索空闲块)可能导致不可预测的延迟,影响实时性。 实时性需求 确定性响应:内存池预先分配固定大小的内存块,分配 / 释放时间为常数 阅读全文
posted @ 2025-03-31 12:01 蜗牛等等 阅读(80) 评论(0) 推荐(0)
摘要: Coretx M0 和 Cortex M3/4 的中断向量表映射有所不同。 M3/M4 可以通过设置 SCB->VTOR 寄存器完成向量表的映射,而M0 没有这样的寄存器。 M0 中断向量表的映射,就是从哪里执行APP。 如果APP 在FLASH中基于XIP执行,即将FLASH 的基地址重映射到0x 阅读全文
posted @ 2024-07-12 13:16 蜗牛等等 阅读(105) 评论(0) 推荐(0)
摘要: ` include <stdio.h> void main(void) { int j = 0; for (int i = 0; i < 10; i++) { j = (j++); } printf("j == %d\r\n", j); } ` 这段代码最后输出的j的值是多少? 最开始我以为结果是1 阅读全文
posted @ 2024-07-03 11:41 蜗牛等等 阅读(18) 评论(0) 推荐(0)
摘要: 点击查看代码 // 基于32位系统分析 #define lsize sizeof(word) // sizeof(word) == 4 // 为什么是lsize - 1?32位系统4字节对齐,地址跨度是0x0, 0x4, 0x8,0xC...... // 所以4字节对齐的地址,最低两个bit都是0, 阅读全文
posted @ 2024-06-27 14:17 蜗牛等等 阅读(24) 评论(0) 推荐(0)
摘要: Linux 内核模块加载程序 模块加载函数 static int __init test_init(void) { } module_init(test_init); 模块卸载函数 static void __exit test_exit(void) { } module_exit(test_exi 阅读全文
posted @ 2024-06-19 18:04 蜗牛等等 阅读(17) 评论(0) 推荐(0)