1、 概述
在使用 MMU 过程中会涉及到 L2 缓存的大小,那么如何用更少的代码高效实现 2M 字节对齐。
2、软硬件环境
1)、软件版本:Arm DS 2025.0
2)、电脑环境:Window 10
3)、外设硬件:无
3、内容
1)代码内容
ldr x5, =Image$$TOP_OF_RAM$$ZI$$Base
sub x3, x5, #1
ubfx x3, x3, #21, #9
add x3, x3, #1
sub x3, x3, x2
ImageTOP_OF_RAMZI$$Base ,分散文件中的 RAM 顶地址。
x2 ,起始的 2MB 块号
2)代码解释
ldr x5, =Image$$TOP_OF_RAM$$ZI$$Base //将链接脚本给出的 RAM 顶地址装入 x5;
sub x3, x5, #1 //将 x5 减去 1 的值放入 x3;
减去 1 的目的是为了"向上取整",通过先移位再加 1 完成,避免使用除法或者循环。
ubfx x3, x3, #21, #9// 提取 x3 的29:21位,最低位是 21,宽度是 9bit,然后再放入 x3;
原始地址区间 (x5-1) 如果刚好落在 2 MB 边界,则 ubfx 结果不变,加 1 后等于"块数";
如果未对齐,则 ubfx 会把低位丢弃,加 1 后相当于"向上取整到下一个 2 MB 边界"。
add x3, x3, #1//加 1,完成向上对齐
sub x3, x3, x2//再减去 x2,得到"需要多少个 2 MB 块"
3)总结
整段代码 实现"向上对齐到 2 MB 并计算块数",没有除法和循环,纯位运算,效率很高。
ubfx 的 9 位宽度隐含了 1 GB 上限,移植时若 RAM 更大需要调整。
亿道电子技术有限公司是国内资深的研发工具软件提供商,成立于2002年,同时在上海、北京、深圳、江苏、珠海、成都、台北均设有办公室。公司面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
20多年来,亿道电子已经与全球多家知名企业,包括ARM、Altium、Ansys、Qt、Green Hills、Perforce、Minitab、Eplan、TESSY、OpenText、Visu-IT、Ashling、FESCARO、Adobe、Incredibuild、JFrog、PLS等建立了稳固的战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家本土客户,为客户提供芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等软件工具。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。