之前晕哥在早期开唱戏机贴发过个F1C100S裸机IAR工程 里面用的启动文件是IAR自带的 我在用的时候有个问题是进不了中断
后面晕哥发了一系列Keil MDK的工程 是参照新唐系列的MPU手册自己写的启动文件 这个是可以进中断的
那么问题来了 是不是这个MDK工程的启动文件可以给所有arm9内核的MPU共用 能进入中断的那种
还是说 就几个部分寄存器设计相似的MPU 才能共用(能进入中断)
还有 为什么IAR自带的arm9启动文件大晕哥自己写的启动文件那么多 把这个自己写的启动文件放进IAR可以用吗(能进入中断)
离线
https://whycan.cn/files/members/3/20140903173055295.jpg
你说的是这个DEMO对吧?
https://whycan.cn/t_1527.html#p8241比如图上的 CPSR 寄存器打开/关闭 IRQ/FIQ 中断的指令所有ARM9都是一样的,
但是和具体外设相关就不同了,
比如新唐NUC90x用的是 AIC 中断管理(IP???), f1c100s 用的是 (INTC),
还有各自的外设配置(比如上面demo中定时器中断)也要看对应的手册设置。反正,套路相同, 只是外设不同,指令集、内核都是一样的。
对的 比较在意汇编写的启动文件内容
还有 我把那一段
__asm
{
MRS temp, CPSR
AND temp, temp, 0x7F
MSR CPSR_c, temp
}
放入IAR工程 居然认不出里面的汇编指令MRS MSR
离线
Answer: From IAR, I was told (and have confirmed) that the following is the correct syntax:
"bne.n 1f\n"
Or in context:void irqrestore(int flags)
{
asm volatile(
"tst %0, #1\n"
"bne.n 1f\n"
"cpsie i\n"
"1:\n"
:
: "r" (flags)
: "memory");
}IAR的语法看起来和gcc 内联 汇编语法一样。
按上面的语法改下试一试.
对于MRS MSR报错:
Error[Og006]: Error in inline assembly: "This instruction is not available in the selected cpu/core"
离线
还有在函数内声明的变量temp在内联汇编里用不了
Error[Og005]: Unknown symbol in inline assembly: "temp"
离线