您尚未登录。

楼主 #1 2018-10-11 10:16:20

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

.s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

之前晕哥在早期开唱戏机贴发过个F1C100S裸机IAR工程 里面用的启动文件是IAR自带的 我在用的时候有个问题是进不了中断
后面晕哥发了一系列Keil MDK的工程 是参照新唐系列的MPU手册自己写的启动文件 这个是可以进中断的
那么问题来了 是不是这个MDK工程的启动文件可以给所有arm9内核的MPU共用 能进入中断的那种
还是说 就几个部分寄存器设计相似的MPU 才能共用(能进入中断)
还有 为什么IAR自带的arm9启动文件大晕哥自己写的启动文件那么多 把这个自己写的启动文件放进IAR可以用吗(能进入中断)

离线

#2 2018-10-11 10:24:43

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

20140903173055295.jpg

你说的是这个DEMO对吧?
https://whycan.cn/t_1527.html#p8241

比如图上的 CPSR 寄存器打开/关闭 IRQ/FIQ 中断的指令所有ARM9都是一样的,
但是和具体外设相关就不同了,
比如新唐NUC90x用的是 AIC 中断管理(IP???), f1c100s 用的是 (INTC),
还有各自的外设配置(比如上面demo中定时器中断)也要看对应的手册设置。

反正,套路相同, 只是外设不同,指令集、内核都是一样的。





离线

楼主 #3 2018-10-11 10:41:55

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

晕哥 说:

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

离线

#4 2018-10-11 10:52:08

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

逸俊晨晖 说:
晕哥 说:

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

IAR里面可能有点点不同,要查一下.

这个是C内嵌汇编, 每种编译器语法都不同,
如果用gcc上面这段也编译不过去.





离线

#5 2018-10-11 11:21:35

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

https://stackoverflow.com/questions/23788286/inline-assembler-instruction-does-not-have-a-unique-size-arm-thumb-2-iar

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 内联 汇编语法一样。
按上面的语法改下试一试.





离线

楼主 #6 2018-10-11 11:38:23

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

晕哥 说:

https://stackoverflow.com/questions/23788286/inline-assembler-instruction-does-not-have-a-unique-size-arm-thumb-2-iar

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"

离线

楼主 #7 2018-10-11 11:40:27

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

还有在函数内声明的变量temp在内联汇编里用不了
Error[Og005]: Unknown symbol in inline assembly: "temp"

离线

#8 2018-10-11 11:47:44

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

Re: .s启动文件是同一个内核通用的吗 还是要看具体芯片手册编写

逸俊晨晖 说:

还有在函数内声明的变量temp在内联汇编里用不了
Error[Og005]: Unknown symbol in inline assembly: "temp"

对, 这个是 MDK 的语法,你得转成 IAR/GCC 的内联汇编语法才行。





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn