这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 运用Assert函数调试底层驱动

共1条 1/1 1 跳转至

运用Assert函数调试底层驱动

工程师
2014-12-02 20:08:35     打赏

运用Assert函数调试底层驱动


底层驱动的程序调试比较棘手,经常耗费大量的时间和精力。因为在调试底层驱动时,经常牵扯到很多细节信息的处理,容易疏忽。合理使用assert函数,对底层的规则进行检查,当进行错误操作时即提醒编程人员。


在异常错误可能出现的地方使用assert函数,对程序的调试很有帮助。可将其头文件assert.h定义到common.h中。在底层代码中放置assert函数,比如在写寄存器处,放置一个assert函数,读取配置的寄存器数据,若不同则报错。如果在上层程序判断,则需添加多个读取程序,势必会很麻烦。所以直接将assert命令添加在底层的写函数处,在写入后作出判断,如果读出的数据与写入的不同,则停止并输出错误信息。


但是这种方法也有一些缺点:


1、由于将assert放置的过于底层,不太容易定位程序运行的位置。所以在外部辅助以PRINTF函数,当完成某项操作后,即输出提示信息,这样就能提示给调试者程序出错的位置了。


2、某些寄存器是不允许读的,或者写入数据与读出的数据本身就是不同的。针对这种情况,可以提供两种写函数。一个添加assert,另一个不添加。对这种情况的寄存器使用不添加assert的函数。因为在release模式下,assert命令是不编译的,所以两个函数在release版本的代码是相同的。


3assert函数放置在底层,由于调用量大,对读写速度会有一定的影响。


虽然assert函数的加入会对debug版本的运行速度造成一些影响,但是它能够比较完整的检查程序运行是否正常,方便测试员及早发现错误,从而加速程序的开发。整体来讲是利大于弊的。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]