巩 琛 蔡 文
(上海师范大学信息与机电工程学院 上海 200234)
基于ARM的Linux驱动调试技术研究
巩琛蔡文
(上海师范大学信息与机电工程学院上海 200234)
在ARM上进行Linux驱动移植时,要对Linux内核代码进行修改、删减或添加,但这样做在运行时可能会遇到很多意想不到的错误,这时就需要去调试代码以找到出错的原因和位置。针对这一需要,提出并实现两种新的调试技术:第一种构造一个打印函数,把添加的打印信息单独存储,然后借助proc文件系统将其输出,实现了外加打印信息与内核自身打印信息的分离,使查找更加方便;其次利用系统时钟中断永不停息的特性确定系统僵死的位置。通过实验表明,该技术能快速有效地找到死循环的位置,省去了大量查找和分析代码的工作。
Linux调试proc文件系统系统时钟中断
如今,以ARM为核心处理器,搭载Linux操作系统的嵌入式产品越来越多,应用场景越来越广泛[1]。但由于硬件平台的多样性,并没有一套通用的Linux操作系统。开发相应的嵌入式产品时,需要工程师根据硬件平台外围设备的特性对Linux内核源码进行增减。这样一个移植过程中会出现各种各样的bug,此时就需要开发者运用各种调试手段去找到出错的地方和原因。本文基于Linux+ARM的实验平台(Linux选取2.6.31.14的版本;ARM架构芯片采用三星公司的s3c2440;BootLoader采用U-boot,根文件系统用Busybox创建[2,3]),提出并实现两种新的驱动调试技术。文中涉及到的交叉开发方面的知识不作详述。
1.1整体思想概述……p>