免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8518 | 回复: 8
打印 上一主题 下一主题

中断异常的问题,在飞思卡尔的mpc8313开发板上调程序,核是E300Core [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-05 11:37 |显示全部楼层 |倒序浏览
大家好,我想问个powerpc的问题~我现在飞思卡尔的mpc8313开发板上调程序,核是E300Core~小弟我现在在加中断处理程序,看手册,不太清楚Instruction Address Breakpoint Interrupt (0x01300),这个中断是做什么的?~手册上是怎样写的:The interrupt is taken when an instruction breakpoint address matches on the next instruction to complete. The instruction tagged with the match is not completed before the instruction address breakpoint interrupt is taken。与之有关的两个寄存器Instruction Address Breakpoint Registers (IABR and IABR2),我不太清楚这个中断的原因,和相应的寄存器是做什么用的?~谢谢

论坛徽章:
0
2 [报告]
发表于 2009-08-06 10:07 |显示全部楼层
对,兄台,E300核和8360差别不大,我知道E300内核大概中断和异常是: Machine Check机器自检异常,External Interrupt,外部中断,这个就是你所说的外部中断,TLB MISS异常,ISI异常,DTLB MISS异常。DSI异常等等,我现在想做的是,相当于不用操作系统,在boot起来之后,我自己对每个异常和中断加异常和中断处理程序,当异常发生时,进入这些处理程序处理~
我看了下手册,E300大概有18个异常类型,所以我得大概知道每种异常机制是什么,异常处理程序然后做一些处理.
System reset
Machine check
DSI
ISI
External
Alignment
Program
Floating-point
unavailable
Decrementer
Critical Interrup
System call
Trace
ITLB miss
DTLB miss on load
DTLB miss on store
Instruction address breakpoint
System management interrupt
兄台意思是,若我自己加异常处理的话,对上面的所有异常,不用对每个异常都加上异常处理程序,除非是要用到某个功能,比如说是Trace,Instruction address breakpoint等,我不知道VxWorks,或linux是不是对所有的异常都有相应的处理程序的~?

论坛徽章:
0
3 [报告]
发表于 2009-08-06 13:33 |显示全部楼层
嗯,明白了,看来仁兄在powerpc上搞过些东东的啊,比较了解。我在工业控制行业~搞powerpc的感觉没有ARM普遍呀,我以前搞ARM~,ARM异常机制和类型也比powerpc简单~
包括ISI、DSI、Program等这些异常,我在异常处理程序里,会做一些操作,保存到SRR0和SRR1寄存器,这个是处理器自己做的,我就比如把当前任务或应用程序的处理器上下文保存到相应栈里,然后异常处理完毕之后,用rfi指令返回。
我之所以想把所有的异常产生原因和类型搞明白,是因为,对应不同的异常,异常处理程序,可能要保存当前的异常环境和产生异常的原因,就要访问依赖于某个异常的寄存器,比如说,产生DSI异常,引起数据存储异常的原因和异常信息可以从DSISR.和DAR寄存器获取到。所以之前贴子里的有些异常,我不太清楚具体的产生原因,有些还和mmu有关系~~ Performance Monitor Interrupt,感觉是和性能监控有关系的异常中断?Program异常指的就是一些非法指令和未定义指令或浮点运算产生的异常~还想请假兄台,Single-Step Instruction Trace Mode,也就是TRACE,这个也是用来debug和调试用的吧?

论坛徽章:
0
4 [报告]
发表于 2009-08-07 09:35 |显示全部楼层
你是指的是通用寄存器(GPR)。GPR1~GPR31吗,powerpc有两种模式,一种是用户模式。一种是超级用户模式,我想在boot起来之后,若在超级用户模式下,可以对用户寄存器和系统寄存器进行操作的吧?兄台所说的周转开是指的什么?~
当然在bootloader里需要把IMMR配置好是吧~我想bootloader也自己写,参考uboot,以前在arm底下,我们是用intel的ixp425,然后boot也是参考uboot的,但感觉powerpc的boot好像在boot阶段就把MMU配置好,我想问兄台,powerpc的mmu应该和arm差不多吧,即使有mmu,也可以按实地址和虚拟地址是一一对应的,平坦的地址,然后用页表属性设置页面的读写权限,这样可以做存储权限保护。powerpc的mmu我还没开始看,现在在研究中断和异常,还有mpc8313的IPIC。我刚研究powerpc不到2个月,呵呵,想和你多多交流~

论坛徽章:
0
5 [报告]
发表于 2009-08-07 14:12 |显示全部楼层
嗯,明白了~在研究手册,有点感觉了,SPRGx用来异常处理程序里,快速保存当前处理器的状态或用在多处理器结构上~~还想和兄台探讨的是,E300的内核的异常有几种,其中有两种类别,你看我理解对不,precise exception,另一者imprecise exception。precise exception指的是某一指令(触发exception的指令)仍在处理器pipeline执行的过程,即发出change control flow的event,并且进入exception handler。imprecise exception指的是某一指令(会触发exception的指令)在处理器pileline完后,才发出change control flow的event,然后才进入exception handler中执行。可能这个是理论。我不知道这两个异常对于我来说,有什么区别,这两个异常是怎么区分的?异常处理程序怎么考虑处理,还是说我知道是不同的异常,但可以理解成对我透明,这是CPU内部的处理~~

论坛徽章:
0
6 [报告]
发表于 2009-08-11 11:30 |显示全部楼层
嗯,感谢两位。
咋们国内有啥关于powerpc的讨论组或社区吗,比较集中的,包括chinaunix。好像搞这个的比较少~
另外,我也旁看了一下mips,同是Risc结构的~
中断和异常部分有点类似,个人感觉可以作为参考。

论坛徽章:
0
7 [报告]
发表于 2009-08-19 14:00 |显示全部楼层
嗯,是的啊,还有成本是一方面,目前我们公司正和Freescale 正在砍价~~比起ARM来,要贵很多~
前几天出差去了~对了,突然想起一个问题,powerpc咋没有pc指针程序计数器呢,ARM和X86都有,是不是powerpc底下,因为指令流水线的原因,当前有很多条指令在指令队列管道上,所以说下一条指令执行地址是没有意义的?或是说PC或指令指针就是LR链接寄存器的一个伪寄存器。ARM也有流水线机制啊,这点,我看手册里没有说明~

论坛徽章:
0
8 [报告]
发表于 2009-08-24 14:19 |显示全部楼层
嗯,我现在在看mmu部分,powerpc的mmu地址转换有三种方式,1)段页式地址转换 ;2)块地址转换( BAT),通常用于将逻辑地址映射到一块很大的连续的物理地址 上,3)实地址转换,也即平板映射模式,禁止地址转换( MSR[IR] =0, MSR[DR]=0),逻辑地址与物理地址相等。但是我看E300的手册说,比如说,段页式子转换和块地址转换是平行进行的,当段页式转换无效时,或块地址转换成功时,就忽略段页式的转换,实际物理地址由块地址转换产生。
我理解的是三种转换方式应该是独立的,只配置其中一种就可以,按上面理解,要配置2种,因为段页式的页表size是4k,块的可以映射128k起,所以我不太理解的是两种地址映射方式都要配置,还是说用一种即可?~想请教下兄台~

论坛徽章:
0
9 [报告]
发表于 2009-09-11 11:28 |显示全部楼层
嗯,603e和E300差别不大,楼主有什么问题和心得,可以在这里交流一下:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP