fc协议详解控制字位为16#0474和16#047C表示停止和启动,怎样理解

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

工欲善其事必先利其器写驱动掌握调试办法将事半功倍。本文参考韦东山和宋宝华驱动调试的办法做总结

1. 利用内核打印函数printk()

在linux中, printk()会将内核信息输出到内核信息緩冲区中内核信息缓冲区是一个环形缓冲区(ring buffer),因此如果塞入的消息过多,就会将之前的消息冲刷掉;环形缓冲区的数据兵分两蕗,一路输出到控制台另一路通过/proc/kmsg文件读取缓冲区。用户可以通过cat

2.利用虚拟文件系统/proc

在linux系统中可以用下面函数创建/proc文件节点


  

下面函数函数用于创建/proc目录。


  

有时候我们希望驱动打印信息不要和其他驱动混在/proc/dmsg上这时候我们可以仿造/proc/dmsg创建一个/proc节点。定义一个类似printk函数使信息被自己创建的节点读出代码清单1


当内核出现 Segmentation Fault 时(例如内核访问一个并不存在的虚拟地址),Oops会被打印到控制台和写入系统 ring buffer我们编写一個字符设备驱动,对代码清单2修改使让它产生 Oops。

(发生错误指令的地址) (当前进程·的·名称)

1.根据错误信息找到发生段错误的pc值 2.判斷发生错误的pc地址是加载的模块还是内核查看内核文件System.map可以查看所有内核函数的地址范围,查看/proc/Kallsyms可以查看加载模块函数和内核函数的地址范围3.根据步骤2反汇编内核或者加载模块。4.结合出错信息和反汇编文件找出错误根源

以下示例是把出错代码放进内核编译出错的情况。pc值是c019ad84
由此断定发生错误在内核函数反汇编内核函数,查看反汇编文件如下找到c019ad84的位置。
由上面Oops错误信息可知,r2==c03b3114ldr r3,[r2]就是把地址为r2的值读叺到r3,可判断出错的地方为修改的地方1

驱动程序进入死循环会导致卡死现象。系统时钟就像人的心脏一定时间就会引发中断,进入中斷处理函数只要在中断函数中打印出当前进程的pid和pc值,就可找到导致死循环的地方下面示例在内核文件./arch/asm/kernel/irq.c中断处理函数处添加代码
这样,即使出现卡死现象控制台也会定时将pid值和当前pc值打印到屏幕。驱动调试暂且总结到这里后期会补充其他调试办法。

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

我要回帖

更多关于 fc协议详解 的文章

 

随机推荐