历史上的今天
返回首页

历史上的今天

今天是:2024年12月13日(星期五)

正在发生

2021年12月13日 | Exynos4412 内核移植(七)—— 内核相关知识补充

2021-12-13 来源:eefocus

一、内核调试方法简单分析


1、addr2line: 解决oops错误


     a -- oops消息


      oops(也称 panic),称程序运行崩溃,程序崩溃后会产生oops消息。应用程序或内核线程的崩溃都会产生oops消息,通常发生oops时,系统不会发生死机,而在终端或日志中打印oops信息。


     当使用NULL指针或不正确的指针值时,通常会引发一个 oops 消息,这是因为当引用一个非法指针时,页面映射机制无法将虚拟地址映像到物理地址,处理器就会向操作系统发出一个"页面失效"的信号。内核无法"换页"到并不存在的地址上,系统就会产生一个"oops"。

     oops 显示发生错误时处理器的状态,包括 CPU 寄存器的内容、页描述符表的位置,以及其一些难理解的信息。这些消息由失效处理函数(arch/*/kernel/traps.c)中的printk 语句产生。较为重要的信息就是指令指针(EIP),即出错指令的地址。


     b -- 解决方法


          arm-linux-addr2line  地址  -e  vmlinux  -f  

          将Pc地址转换成对应的行号


2、通过printk打印信息


     内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6>Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。


#define KERN_EMERG    "<0>"    /* system is unusable */

#define KERN_ALERT    "<1>"    /* action must be taken immediately */

#define KERN_CRIT     "<2>"    /* critical conditions */

#define KERN_ERR      "<3>"    /* error conditions */

#define KERN_WARNING  "<4>"    /* warning conditions */

#define KERN_NOTICE   "<5>"    /* normal but significant */

#define KERN_INFO     "<6>"    /* informational */

#define KERN_DEBUG    "<7>"    /* debug-level messages */


      所以 printk() 可以这样用:


      printk(KERN_INFO "Hello, world!/n");。


      未指定日志级别的 printk() 采用的默认级别是 DEFAULT_MESSAGE_LOGLEVEL,这个宏在 kernel/printk.c 中被定义为整数 4,即对应KERN_WARNING。


     在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改), 分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。


     当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息(要有/n符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg (或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 printk 的信息也会追加到 /var/log/messages.log 中。


char myname[] = "chinacodec/n";

printk(KERN_INFO "Hello, world %s!/n", myname);

推荐阅读

史海拾趣

方向电子公司的发展小趣事

机顶盒,全称为数字视频变换盒,是连接电视机与外部信号源的关键设备,具有高度的专业性和广泛的应用性。从广义上讲,凡是能与电视机连接并处理音视频信号的网络终端设备均可视为机顶盒。它不仅能够接收来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,还能通过内置的解码器将这些信号转换为电视机可识别的格式,从而呈现出高清乃至4K的超高清画质,大大提升了观看体验。

机顶盒不仅限于基本的电视信号接收功能,还集成了多种增值服务。例如,它提供电子节目指南,让用户轻松查找和预约节目;支持因特网网页浏览,实现网络购物、在线视频观看、游戏娱乐等多元化互动体验。随着智能化技术的发展,现代机顶盒还融入了语音助手、智能推荐等功能,进一步提升了用户的操作便捷性和内容个性化程度。

在技术层面,机顶盒的发展日新月异,不断向高清化、智能化方向迈进。5G技术的应用更是为机顶盒带来了更快的传输速度和更低的延迟,为用户提供了更为流畅的观影体验。此外,虚拟现实和增强现实技术的融入,也为机顶盒的未来发展打开了新的想象空间,将为用户带来更为沉浸式和互动式的观影享受。

综上所述,机顶盒作为现代家庭娱乐的重要组成部分,不仅极大地丰富了人们的电视观看体验,还通过不断的技术创新和服务升级,满足着用户日益多样化的需求。

ALLIED [Allied Electronics]公司的发展小趣事

Allied Electronics,总部位于美国德克萨斯州的一家分销公司,专注于为各种行业提供电子元件和电子产品。以下是关于Allied Electronics发展的五个相关故事:

  1. 成立和初期发展: Allied Electronics成立于1928年,最初以销售家庭无线电零件和配件为主要业务。随着无线电和电子行业的发展,公司逐渐扩大了产品范围,开始提供更广泛的电子元件和设备,以满足不断增长的市场需求。

  2. 与RS Components的合并: 2000年,Allied Electronics与英国的RS Components公司合并,成为全球领先的电子元件分销商之一。这一合并加强了两家公司在全球市场的地位,并且拓展了它们的产品线和客户群。

  3. 公司战略调整: 随着数字化技术的快速发展,Allied Electronics逐渐调整了业务战略,加大了对电子元件和器件的供应,并拓展了工业自动化、物联网和电子制造等领域的业务。通过与各种行业的合作伙伴建立紧密的关系,公司不断提升了产品质量和服务水平。

  4. 技术创新和数字化转型: Allied Electronics致力于技术创新和数字化转型,通过建立先进的电子商务平台和在线资源中心,为客户提供更便捷的采购体验。同时,公司还加强了与供应商的合作关系,引入了更多的创新产品,满足不同客户的需求。

  5. 持续发展和全球扩张: 作为全球领先的电子元件分销商之一,Allied Electronics不断加大在全球范围内的市场扩张力度,开设了多个销售办事处和物流中心,以更好地服务于全球客户。同时,公司还积极参与行业展会和活动,加强了与全球电子行业的合作与交流,推动了公司的持续发展和壮大。

DAPAudio公司的发展小趣事

随着公司产品的不断成熟和市场的逐渐扩大,DAPAudio开始将目光投向国际市场。通过与国际知名品牌的合作和自身的市场拓展努力,DAPAudio的产品逐渐进入欧美等发达国家和地区的市场。在国际市场上,DAPAudio凭借其卓越的产品性能和优质的服务赢得了广泛的赞誉和认可。

Apx-Crystal公司的发展小趣事

面对日益激烈的市场竞争,Apx-Crystal公司意识到单凭自身的力量难以保持长期的竞争优势。于是,公司积极寻求与行业内外的合作伙伴进行技术交流和合作研发。通过与知名高校、科研机构以及同行的紧密合作,Apx-Crystal成功开发出了一系列具有创新性和领先性的电子产品,进一步巩固了其在行业内的领先地位。同时,公司还加大了对产业链的整合力度,推动了产业升级和可持续发展。

CTS [CTS Corporation]公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,CTS始终坚持技术创新和数字化转型。公司投入大量资源进行研发,不断推出具有竞争力的新产品和解决方案。同时,CTS还积极拥抱数字化技术,通过云计算、大数据和人工智能等技术手段提升生产效率和服务质量。

EOZ S.A.S公司的发展小趣事

EOZ S.A.S公司非常重视企业文化和团队建设。公司倡导“创新、协作、共赢”的价值观,鼓励员工积极参与创新活动并分享创新成果。同时,公司还注重员工的培训和发展,为员工提供丰富的培训资源和晋升机会。这些举措不仅激发了员工的积极性和创造力,也为企业的发展提供了有力的人才保障。在EOZ S.A.S公司的发展历程中,优秀的企业文化和团队成为公司最宝贵的财富之一。

问答坊 | AI 解惑

对突然来电的防护

在停电作业现场所发生的触电伤亡事故中,大多数是由于停电工作设备出现了突然来电或误登误触有电设备造成的。而停电工作设备出现突然来电的危害性尤为严重,如未采取可靠的防护措施,往往造成工作人员集体触电伤亡的重大事故的发生。 1 停电设备 ...…

查看全部问答>

VS2005 mfc无法添加消息???

VS2005中没有ClassWizard,而是使用属性窗口添加事件处理函数,但我写一个MFC本地应用程序时,在程序中使用工具栏ToolBar,在工具栏中新建了一项,却不知如何添加处理函数,属性窗口中没有可处理的消息列表呀。 …

查看全部问答>

在驱动程序中对串口进行读写,最大速度是多少?

是取决于波特率吗?要读写的是一个标准的虚拟串口。…

查看全部问答>

欢迎大家讨论:GPIO的 2-mA, 4-mA和8-mA端口驱动问题

GPIO的 2-mA, 4-mA和8-mA端口驱动中2,4,8-mA GPIO所承受的最大电流???还是其他意思??     这方面的资料比较少,希望大家讨论下,加深对mA的了解,也为了以后编程时遇到这方面的问题。 [ 本帖最后由 fxw451 于 2010-11-12 08:2 ...…

查看全部问答>

求高手指点----LM3S9B96以太网问题>

// systick中断处理函数//----------------------------------------------------------------------------- void SysTickHandler(void) { // 调用lwip定时处理函数 lwIPTimer(SYSTICKMS);   } //这是一个回调函数,当有UDP数据收 ...…

查看全部问答>

vxworks 6.6 core 2 945gme问题

我从网上看到的资料中学会了如何把在VMware上运行起. 但我把同样的东东到core 2CPU, 945GME上就只能出现++++++++++++++++++++++ 我了解到IA-32(X86)的CPU都有向前相容性,这个++++++++++++表示bootrom的代码都不能正常运行,什么原因, 有能人解释 ...…

查看全部问答>

msp430f5538和蓝牙模块cc2540无线通信的程序

各位大神谁有这个吗?给小弟一份参考参考,cpu型号不同也可。刚学啥都不会啊,求助,好人一生平安!…

查看全部问答>

2812有一个PWM口一直是低电平,请问是不是芯片坏了,其他五个输出都正常的

如题,测试过CPIO还是没法正常输出,感觉是强制拉低了,是什么原因吗…

查看全部问答>

请教什么是变压器阻抗电压

请教什么是变压器阻抗电压? \0\0\0eeworldpostqq…

查看全部问答>

运算放大器应用手册 中英文版资源分享

ADI官网上的运算放大器应用技术手册 终于找到了英文版和中文版,特意奉献出来。大家随意。呵呵 …

查看全部问答>