很多大型项目中,都通过宏定义对代码的行为进行控制,例如ERROR,DEBUG_LOG等等,现在将一些常用的宏定义总结使用。
-
熵编码
概述熵编码是一种独立于介质具体特征的无损数据压缩的方案。通过将输入的每一个字符分配一个唯一的前缀码,将输入的符号替换成对应的可变长度前缀无关的输出码来替代。 霍夫曼编码和算术编码是两种最常见的熵编码技术。 霍夫曼编码依据字符在整个文件中的出现概率进行编码。 统计所有字符的出现次数,作为节点的权。 树的路径长度:叶节点到根节点的距离 节点的带权路径长度:节点的权*路径长度 将所有叶节点的带权... -
CMake交叉编译踩坑
使用cmake搭建交叉编译工具链时出现问题,编译一个arm汇编指令不能通过。
-
力扣刷题
准备2025年暑期实习以及2025秋招,在力扣刷题。一边刷题一边记录不能够一次做出来的试题,同时归纳知识点。
-
CPU的Cache和MMU
一、缓存多数精简指令集的嵌入式MCU内核都没有配备高速缓存,例如cortexM4。在ARMv7-M中,cortexM7配备了L1的高速缓存。ARMv7-A的CPU都配备了高速缓存。 随着CPU制程的提升, CPU的运行频率也不断提高,但是Flash或者SRAM的速度却没有对应的提升,在嵌入式系统中可以看到总线频率往往是CPU的分频,也就是说CPU速度和访存速度不匹配。缓存就是用来缓解二者之间... -
QEMU模拟VexpressA9建立工程以及串口打印
一、QEMUqemu是一个模拟器,可以用来模拟一些开发板和cpu,也可以直接模拟一个目标架构的linux操作系统。 首先确定自己要模拟的qemu的目标架构,这里我需要模拟的是arm32,就编译arm版本的qemu就可以了。 使用qemu-system-arm -M help就可以看到能够模拟的板子以及对应的cpu,这里我们的目标板子是VexpressA9。 -
设备树DeviceTree
一、设备树是什么 -
RISCV体系结构
一、指令集概述RISCV是一套开源的精简指令集。 RISCV是一种模块化的指令集。RISCV由一个基本的ISA和多个可选的扩展指令集构成。基础的指令集是固定的永远不会改变。这意味着使用RISCV基础指令集,为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。并且使用基础指令集使得RISCV在低能耗和小型化方面很有优势。并且要实现更高性能的,或者更多的CPU支持特性,RISCV指...