ARM架构Linux Kernel oops问题请教
发布网友
发布时间:2022-04-23 08:59
我来回答
共4个回答
热心网友
时间:2022-06-18 18:13
sorry,可能是我没有说清楚,被修改的代码是tcp的一个函数。这个函数是在内核初始化的时候被改写了一部分(已经验证过了,确实是改写)。当系统启动完成后,当有tcp链接时就会造成oops,所以看oops的调用栈是无意义的。我现在能想到的办法就是通过修改MMU的配置,把内核的text segment设置为readonly,注意不是修改data segment部分。所以也不会造成kernel unable to startup issue.我曾经在vxworks系统下做过类似的mmu配置,但linux系统我还不太熟悉,不知道怎么修改。so everyone, any ideas would be welcome~~
热心网友
时间:2022-06-18 18:13
oops 只有被改写后的内容了,而且是在linux初始化很早的时候改写的。我想了一下,只有修改内核代码段属性为readonly才能够抓出来是谁改写的内存。但不知道怎么修改ARM mmu的配置来实现这个功能。<4>[] (sys_read+0x0/0x80) from [] (ret_fast_syscall+0x0/0x2c)<4> r6 = 00000001 r5 = 00000000 r4 = BEFFFD48 <4>Code: ffffffe1 ffffffe3 fffffbff ffffffff (fffff001)
热心网友
时间:2022-06-18 18:13
devicemaps_init函数里面,可以参考CONFIG_XIP_KERNEL这段代码的用法,把_text~_etext的页表设置为MT_ROM
热心网友
时间:2022-06-18 18:14
就是没有EIP喽?
解密Linux内核oops:从错误到调试
oops处理:oops信息详细记录了错误时的上下文信息,如CPU状态、出错指令地址、函数调用栈等,帮助定位问题。如果遇到oops错误且有源码,可以使用arm的工具转储内核文件,或者利用GDB进行深入分析。对于无源码的oops错误,Linux源码目录下的脚本可将日志信息转换为更易于理解的汇编代码。die()函数:die()是oops...
AM3715 kernel发送oops 求助
AM3715 BSP包更新至ti-sdk-am37x-evm-06.00.00.00-Linux-x86-Install,但做成产品后,运行过程中经常出现kernel oops:我们已经通过调整CPU频率,降低内存频率,设宽内存参数配置,但还是会出现oops 这样根本无法产品化,希望给予帮助 启动信息:Texas Instruments X-Loader 1.47 (Feb 10 2014 - 13...
嵌入式Linux系统启动时,YAFFS2文件系统坏块问题
1.尝试同样的文件系统从外部(如sd卡)烧写至内存启动(排除软件问题)2.重新烧写系统到nand flash芯片(遇到坏块应可绕开的吧)//3.重新编译文件系统 我做的项目是ARM平台+嵌入式linux操作系统,虽然环境不一样但有些原理是相通的,希望可以帮到你。
访问注册表出错
3、内核和gdb是如何知道函数调用栈顺序,并使用函数的名字而不是地址? 4、我如何才能知道各个函数入栈的内容?哈哈,我渐渐喜欢上了让内核惊讶,那就再看一次内核惊讶吧。 执行cat /dev/faulty,内核又再一次惊讶! 1 Unable to handle kernel NULL pointer dereference at virtual address 0000000b 2 pgd = c3a88000...
armbian安装ubuntukylin桌面
安装应用:apt install --no-install-recommends app-install-data-partner apport-gtk atril branding-ubuntu brltty cups cups-bsd cups-client cups-filters deja-dup eom fcitx fcitx-config-gtk firefox fwupd fwupd-signed gvfs-fuse hplip indicator-china-weather kerneloops kylin-burner kylin-...
linux加载AD驱动后错误Unable to handle kernel NULL pointer dereference...
这种错误就在你的驱动里找,如果是android或其它系统、可能是配置文件的错误,我也遇到过这种情况。并不是虚拟地址引起的错,你查看一下oops
linux驱动编写过程中遇到的几个问题及解决
1、显示错误:unknown field 'ioctl' specified in initializer 解决办法,查看内核include/linux/fs.h文件,发现里边定义的struct file_operations中没有ioctl,这里我们用.unlocked_ioctl取代,形参去掉 struct inode*。2、在应用程序中,将ioctl替换为unlocked_ioctl后,会出现以下错误:undefined reference ...
嵌入式系统Linux内核开发实战指南的目录
1.5 一些嵌入式处理器的硬件特性比较 5第2章 ARM处理器概述 16为了使本书内容完整,从第2章到第7章中的内容大部分是笔者阅读《ARM体系结构与编程》(详情参见附录中的参考文献)的笔记和心得,把与嵌入式系统开发和Linux内核密切相关的硬件知识进行了概括和整理,本章主要介绍了ARM处理器的特点、ARM处理器的体系架构...
linux 启动时何时初始化console,串口等
在我们的系统中,系统启动是用的现代公司的BOOTLOADER程序,后来好象跳到了LINUX下的head-armv.s, 然后跳到start_kernel,在bootloader 里串口已经是可用的了,那么在进入内核后是不是要重新设置? 以上问题可能问的比较乱,因为我自己脑子里也比较乱,主要还是对tty,console,serial之间的关系,特别是串口是如何被调用的...
linux驱动开发insmod hello.ko失败
首先进入root用户:sudo su 密码:baohua 2. 此时按会出现Invalid module format的情况 3. 重新make,再安装就OK了