1. ARM硬核设计的关键架构考量
在嵌入式系统设计中,ARM硬核(Hard Macrocell)的集成需要从处理器架构层面进行系统性规划。以ARM7TDMI和ARM922T为代表的经典内核,其设计哲学直接影响着整个系统的实现方式。
1.1 存储器子系统的关键设计
向量表处理是ARM架构设计的首要问题。传统做法是将向量表置于ROM中,但这会带来三个显著缺陷:
- 访问延迟较高(通常比SRAM慢30-50%)
- 调试时强制依赖硬件断点
- 运行时无法动态修改异常处理逻辑
更优的方案是采用内存重映射技术。如图1所示,系统上电时通过硬件解码器将ROM映射到0x00000000,待初始化完成后切换为SRAM。这种设计需要特别注意:
verilog复制// 典型的地址解码器HDL实现
always @(REMAP or ADDR[31:24]) begin
case(ADDR[31:24])
8'h00: begin
if(!REMAP)
select = ROM_SEL;
else
select = SRAM_SEL;
end
8'h0F: select = ROM_SEL;
// 其他地址空间解码...
endcase
end
关键提示:重映射操作必须原子化完成,避免在切换过程中出现指令获取异常。建议在关闭中断的环境下执行REMAP寄存器写操作。
1.2 字节访问与内存一致性
ARM架构要求存储器系统支持字节级访问控制,这源于两个核心需求:
- C语言结构体成员的自然对齐访问
- EmbeddedICE调试模块的内存访问需求
实际设计中需要为每个32位字配置独立的字节使能信号:
code复制+---------+---------+---------+---------+
| BE[3] | BE[2] | BE[1] | BE[0] |
| (Byte3) | (Byte2) | (Byte1) | (Byte0) |
+---------+---------+---------+---------+
