STR lr, [sp, #-4]! 是将lr寄存器也称链接寄存器r14(用于保存子程序的返回地址)的值(32位)存入sp指向堆栈的地址,从sp到sp-3地址单元。感叹号是表示保存后sp的值跟着改变,及sp=sp-3,没有感叹号sp在使用结束后值不变。LDR那部分就不用解释了吧,应该很详细了。
汇编中:EXPORT MMU_EnableICache
MMU_EnableICache
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_I
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
然后C中调用 MMU_EnableICache()
调用汇编则更简单,
unsigned int UserAppPTR = 0x00081040//设置成汇编入口的绝对地址。
void (*UserAPP)(void)
UserAPP = (void (*)(void))UserAppPTR
UserAPP()
恩,一般来说在C中调用汇编比较常见,而且是非必要才用
你需要一个编译过的二进制的C Lib, 网上有很多开源的, 编译器一般选用GCC. 这样以后你的C函数可以直接调用C Lib的二进制代码. 制作C Lib注意是否支持多线程多核, 是否支持调试.欢迎分享,转载请注明来源:内存溢出
评论列表(0条)