使用CW2.10编译一个bootloder,在bootloder中使用如下代码出错。
bootloder:
int32_t *pmain =(int32_t *)0x0000000C;
pmain_fun =(pfun)pmain;
pmain_fun();运行此条指令时出错,PC寄存器变成0x40000000,机器已经出错了。如果错pmain指向的地址的内容改为bootloader代码的其它地址(如bootloader的_start地址)却能正常跳转
说明:上述代码运行地址在0x1e3e60,
0x0000000c地址存放内容为0x00000010。
Hi,
如果0x0c这个地址存放的是你要执行的程序的地址,你应该写成
uint32_t *pmain =(uint32_t *)(*(uint32_t *)(0x0000000c));
Regards,
Jing