当前位置:  技术问答>linux和unix

内核启动时,报断点异常

    来源: 互联网  发布时间:2016-07-10

    本文导语:  mips的板子 start_kernel的时候,当运行到start_kernel的local_irq_enable()时,系统挂了,报错说23号异常处理函数找不到。 于是我就查手册,发现23号异常,代表的是断点异常。 我通过 把WatchLo和WatchHi打印出来,发现WatchLo...

mips的板子

start_kernel的时候,当运行到start_kernel的local_irq_enable()时,系统挂了,报错说23号异常处理函数找不到。


于是我就查手册,发现23号异常,代表的是断点异常。

我通过 把WatchLo和WatchHi打印出来,发现WatchLo寄存器是0,WatchHi寄存器是1


__u32 watch_regh0= read_c0_watchhi0();
__u32 watch_regl0= read_c0_watchlo0();


也就是说,r,w位都是0,照理说不应该发生这个断点异常啊,为何我这里内核启动时,会报这个错误?

是哪里没有设置对?



我仍然不甘心,又试图将WatchHi置0,但发现执行了
write_c0_watchhi0(0)后,读取出来的WatchHi数据仍然是1,没有改变






Hi all,


I've got some problem when booting mips32.


I got a Num.23 trap when calling start_kernel --->  local_irq_enable




irq 23, desc: 802a98a0, depth: 1, count: 0, unhandled: 0
->handle_irq():  80148c6c, handle_bad_irq+0x0/0x2b4
->chip(): 8029f738, 0x8029f738
->action(): 00000000
  IRQ_DISABLED set
unexpected IRQ # 23










Num.23 trap is a Watch trap, which means that, when 

"Physical address of load/store matched enabled value in


WatchLo/ WatahHi registers." happened, Num 23 trap was triggered by cpu.




So I used macro 

__u32 watch_regh0= read_c0_watchhi0();
__u32 watch_regl0= read_c0_watchlo0();

to retrieve value from WatchHi and WatchLo,found them 0x1 and 0x0 respectively,which mean that ,

'r' together with  'w' bits were set to zero and no trap should be triggered.



But now , I got a 23 trap, why ? 


At last , I used write_c0_watchhi0(0) to set WatchHi to 0x0, but failed when found it was still 0x1 after 

calling write_c0_watchhi0(0)




Any suggestion would be grateful.

|
4Kec?
那你要注册这个异常处理函数,或者Mask掉他,不要让他产生异常.
你用的是哪来的代码啊?我没有印象这部分要做什么特别的处理。

|
action(): 00000000 
发生中断后由默认的处理处理,发生异常吧

|
没用过Mips~

    
 
 

您可能感兴趣的文章:

  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • 怎样让linux在启动时,启动存在ip冲突的网卡?与内核选项有关吗?
  • uboot 引导内核启动 失败 内核不能自解压
  • 将Rethat内核从2.4升级到到2.6.12.3后,系统启动的时候无法挂载usb,启动后无法mount U盘。
  • linux内核具体上是如何决定启动什么设备呢?如果有很多可启动的话?
  • linux内核启动不了、、、???
  • 编译linux2.6内核启动报错:
  • 超线程的内核无法启动?
  • 重新编译内核后无法启动
  • 内核移植到软盘上怎么做?软盘脱离原linux环境可自启动,怎么做?
  • 内核启动内存问题
  • RedHat 9 如何重新编译内核并重新配置启动文件使其起作用?
  • 自定义内核模块禁止启动图形界面
  • 内核启动参数,大家指教
  • 请大家帮忙看看,编译内核后无法挂载root fs, 机器无法启动
  • 关于安装内核从grub启动的问题
  • 新增一个驱动后,内核不启动
  • 编译内核后不能启动
  • 新安的linux2。6。4 内核 启动不了了
  • fedora 6 安装新内核后 tomcat无法启动
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • javascript开源软件 iis7站长之家
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 内核模块跟内核版本不匹配????????
  • docker使用的技术之Container内核原理介绍
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?
  • 如何学好内核?学了内核能应用于哪方面?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3