⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debugging

📁 ARM 嵌入式 系统 设计与实例开发 实验教材 二源码
💻
字号:
okay, here are some hints for debugging the lower-level parts oflinux/parisc.1. Absolute addressesA lot of the assembly code currently runs in real mode, which meansabsolute addresses are used instead of virtual addresses as in therest of the kernel.  To translate an absolute address to a virtualaddress you can lookup in System.map, add __PAGE_OFFSET (0xc0000000currently).2. HPMCsWhen real-mode code tries to access non-existent memory, you'll getan HPMC instead of a kernel oops.  To debug an HPMC, try to findthe System Responder/Requestor addresses.  The System Requestoraddress should match (one of the) processor HPAs (high addresses inthe I/O range); the System Responder address is the address real-modecode tried to access.Typical values for the System Responder address are addresses largerthan __PAGE_OFFSET (0xc0000000) which mean a virtual address didn'tget translated to a physical address before real-mode code tried toaccess it.3. Q bit funCertain, very critical code has to clear the Q bit in the PSW.  Whathappens when the Q bit is cleared is the CPU does not update theregisters interruption handlers read to find out where the machinewas interrupted - so if you get an interruption between the instructionthat clears the Q bit and the RFI that sets it again you don't knowwhere exactly it happened.  If you're lucky the IAOQ will point to theinstrucion that cleared the Q bit, if you're not it points anywhereat all.  Usually Q bit problems will show themselves in unexplainablesystem hangs or running off the end of physical memory.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -