上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 38 下一页
摘要: 1.gdb和gdbserver调试原理 通过linux虚拟机里的gdb,来向开发板里的gdbserver发送命令,比如设置断点,运行setp等,然后开发板上的gdbserver收到命令后,便会执行应用程序做相应的动作,来实现调试的功能 和之前学的裸板GDB调试 一样,只不过之前学的是在win下的,本 阅读全文
posted @ 2017-12-13 18:07 诺谦 阅读(3164) 评论(0) 推荐(2) 编辑
摘要: 1.strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 首先需要以下两个文件: strace-4.5.15.tar.bz2 strace-fix-arm- 阅读全文
posted @ 2017-12-13 17:31 诺谦 阅读(1921) 评论(0) 推荐(0) 编辑
摘要: 当内核或驱动出现僵死bug,导致系统无法正常运行,怎么找到是哪个函数的位置导致的? 答,通过内核的系统时钟,因为它是由定时器中断产生的,每隔一定时间便会触发一次,所以当CPU一直在某个进程中时,我们便在中断函数中打印该进程的信息 1.先来回忆下 在之前的第5章内核中断运行过程:http://www. 阅读全文
posted @ 2017-12-11 18:16 诺谦 阅读(1745) 评论(0) 推荐(0) 编辑
摘要: 上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的 阅读全文
posted @ 2017-12-09 16:53 诺谦 阅读(3188) 评论(0) 推荐(2) 编辑
摘要: 1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示: 1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示 阅读全文
posted @ 2017-12-08 18:49 诺谦 阅读(5890) 评论(0) 推荐(2) 编辑
摘要: 在上章34.Linux-printk分析、使用printk调试驱动里讲述了: printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[] 1.环形缓冲区log_buf[]又是存在内核的哪个文件呢? 位于/proc/kmsg里,所以除了dme 阅读全文
posted @ 2017-12-07 18:38 诺谦 阅读(7464) 评论(1) 推荐(2) 编辑
摘要: 本节学习目的 1)分析printk()函数 2)使用printk()调试驱动 1.在驱动调试中,使用printk(),是最简单,最方便的办法 当uboot的命令行里的“console=tty1”时,表示printk()输出在开发板的LCD屏上 当uboot的命令行里的“console=ttySA0, 阅读全文
posted @ 2017-12-06 15:56 诺谦 阅读(6312) 评论(2) 推荐(2) 编辑
摘要: 在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM、nandflash的控制时序等都还没初始化,所以我们就只能使用前0~4095地址,在前4k地址里来初始化SDRAM,nandflash,初始化完成后,才能将nandflas 阅读全文
posted @ 2017-12-01 11:35 诺谦 阅读(4279) 评论(0) 推荐(3) 编辑
摘要: 1.当我们每次插入u盘后,都会自动创键U盘的设备节点/dev/sda%d 这是因为里面调用了device_create()实现的, busybox的mdev机制就会根据主次设备号等信息,在/dev下创建设备节点,如下图所示: 而想使用上面的sda1设备节点,读写数据时,还需要使用mount /dev 阅读全文
posted @ 2017-11-24 18:28 诺谦 阅读(28423) 评论(1) 推荐(13) 编辑
摘要: DMA(Direct Memory Access) 即直接存储器访问, DMA 传输方式无需 CPU 直接控制传输,通过硬件为 RAM 、I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。 学了这么多驱动,不难推出DMA的编写套路: 1)注册DMA中断,分配缓冲区 2)注册字符设 阅读全文
posted @ 2017-11-22 18:47 诺谦 阅读(8343) 评论(0) 推荐(0) 编辑
上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 38 下一页