请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:66AK2L06 大家好、
如链接所示、
e2e.ti.com/.../2232107
我正在努力在66AK2L06上启动辅助 ARM 内核。
我查看 git.ti.com 上的引导监视器提交日志、并发现 TI 更改了 ARM 引导魔法地址。
目前、引导监视器中的 ARM 引导神奇地址和入口设置如下所示:
#define CORE_N_BASE_ADDR_ARM00x02501040 unsigned int * addr =(unsigned int *) core_N_base_ADDR_ARM0; 对于(i = 1;i < arm_cluster_NUM_CPU;i++){ ADDR[I * 2]=(unsigned int)_skern_123_init; }
但次级 ARM 内核根本不会在我的电路板上执行指令。
我在 skernel.S 中添加了调试函数、以检查次级 ARM 内核是否可以通过在带有汇编代码的 UART0上添加调试信息来执行指令。
就像这样:
全局_skern_123_init _skern_123_init: @ @我们在 RBL 快速启动后来到这里 @我们不需要保存 SP 和其他寄存器 @我们只为我们安装监视器矢量和堆栈 @ b __debug_test
如果我将 ARM 引导魔法地址恢复为旧地址、如下所示:
#define CORE_N_BASE_ADDR_ARM0 0x0c1d2500
unsigned int * addr =(unsigned int *) core_N_base_ADDR_ARM0;
对于(i = 1;i < arm_cluster_NUM_CPU;i++){
Addr[i]=(unsigned int)_skern_123_init;
}
次级 ARM 内核可以执行我的调试代码并将调试信息放置在 UART0上。
但是、它在执行 MCR 指令后挂起、如下所示:
全局_skern_123_init
_skern_123_init:
@μ A
@我们在 RBL 快速启动后来到这里
@我们不需要保存 SP 和其他寄存器
@我们只为我们安装监视器矢量和堆栈
@μ A
@b __debug_test
R8女士、CPSR
BIC R8、R8、#0x1f
ORR R8、R8、#0x16
MSR CPSR_c、R8
@b __debug_test
LDR R1、=monitor_vectors
@b __debug_test
MCR P15、#0、R1、C12、c0、 #1 @执行此指令时、次级 ARM 挂起
b __debug_test @此处未到达
MRC P15、#0、r0、c0、c0、 5号
和 r0 、r0、#3
@b __debug_test @此处未到达
它太模糊了。 没有任何文档说明66AK2L06上的 ARM 引导魔法地址。
我应该对此问题做些什么?