嵌入式驱动调试几大难题

vic_chang 2013-06-18 09:02:20
1. 开发工具。常见的嵌入式开发工具基本上都比较蛋疼,一方面没有好的编辑器,另一方面,编译出来的代码经常出各种问题。 同样的code,一分钟之前编译是好,而下一分钟就编译不了了。相比之下,Microsoft的开发tool还是相当不错的。

2. 调试工具。驱动级别的调试不同于应用,大多数主要还是通过printf打印跟踪调试。如果想拥有好的调试工具,那好付钱啦。

3. 问题定位。由于驱动是介于硬件与软件之间。所以出了问题不太好定位。你的硬件可能会出错,你的软件也可能写得有问题。咋办? 凉办! 硬件上使用示波器,万用表等设备来分析信号。对于高速信号的分析,可得花大价钱才行,准备一台买奥迪车的钱来买这种高端设备吧。软件上,慢慢用来调试工具调吧。
4. 参考资料。驱动这玩意,有些时候参考资料很少的。你只有CPU Data Sheet 和 IC Data Sheet. 如果熟悉这些资料,OK,那没有多大的问题。但是不熟悉的时候,就惨了。要在数百页中找到你想到的东西,那你就得慢慢看吧。更可恶的是,你会经常发现资料他娘写得就是错的。BT吧
5. 代码阅读。我想没有几个程序员喜欢阅读大量别人的code吧。对不起,驱动开发却刚好要求你读别人的代码。一行一行地读吧。没有什么好办法的。
6. 工作量。驱动工程师的工作量大不?恐怕比较难衡量。如果你对某个知识点比较熟悉,几分钟就搞完了,如果不熟悉,请准备几天的时间去研究吧。另外,是不能是代码量来衡量工作量的。因为驱动工程师,一个月能写100行代码就很了不起了。
...全文
574 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
火斯 2013-07-01
  • 打赏
  • 举报
回复
调试手段仅靠printk,功能实在有限啊
蝉时雨 2013-07-01
  • 打赏
  • 举报
回复
还没遇到过Data Sheet写错的情况 国内的书和资料倒是经常有错 现在查资料都优先找外文的 实在没有才去看中文的 而且发现很多日文写的资料特别清晰
yc_first 2013-07-01
  • 打赏
  • 举报
回复
linux驱动应该是printk吧
Carl_CCC 2013-06-30
  • 打赏
  • 举报
回复
不赞同第一点。
YXFLINUX 2013-06-29
  • 打赏
  • 举报
回复
支持! 1. 工具:vim,ctags,sourceinsight,find,grep,lsmod,fdisk,modprobe,/proc/devices,/sys 2. 调试:读懂Spec和原理图前提下:HW-示波器,万用表;SW-printk, while(1), return -1, #if xxx #endif 3. 中断模型,platform bus等总线搞熟 4. 常用ioremap, kmalloc等用法
流水恋歌 2013-06-29
  • 打赏
  • 举报
回复
搞驱动,代码阅读量很重要,最后一点说的好!
duloveding 2013-06-29
  • 打赏
  • 举报
回复
代码量不大,理解能力和阅读能力很重要,要涉及到不同领域的知识。开发难度还和公司提供的平台有关。
xiaohezi003 2013-06-28
  • 打赏
  • 举报
回复
同感,书里基本都没有
F599GTB 2013-06-27
  • 打赏
  • 举报
回复
引用 楼主 vic_chang 的回复:
1. 开发工具。常见的嵌入式开发工具基本上都比较蛋疼,一方面没有好的编辑器,另一方面,编译出来的代码经常出各种问题。 同样的code,一分钟之前编译是好,而下一分钟就编译不了了。相比之下,Microsoft的开发tool还是相当不错的。 2. 调试工具。驱动级别的调试不同于应用,大多数主要还是通过printf打印跟踪调试。如果想拥有好的调试工具,那好付钱啦。 3. 问题定位。由于驱动是介于硬件与软件之间。所以出了问题不太好定位。你的硬件可能会出错,你的软件也可能写得有问题。咋办? 凉办! 硬件上使用示波器,万用表等设备来分析信号。对于高速信号的分析,可得花大价钱才行,准备一台买奥迪车的钱来买这种高端设备吧。软件上,慢慢用来调试工具调吧。 4. 参考资料。驱动这玩意,有些时候参考资料很少的。你只有CPU Data Sheet 和 IC Data Sheet. 如果熟悉这些资料,OK,那没有多大的问题。但是不熟悉的时候,就惨了。要在数百页中找到你想到的东西,那你就得慢慢看吧。更可恶的是,你会经常发现资料他娘写得就是错的。BT吧 5. 代码阅读。我想没有几个程序员喜欢阅读大量别人的code吧。对不起,驱动开发却刚好要求你读别人的代码。一行一行地读吧。没有什么好办法的。 6. 工作量。驱动工程师的工作量大不?恐怕比较难衡量。如果你对某个知识点比较熟悉,几分钟就搞完了,如果不熟悉,请准备几天的时间去研究吧。另外,是不能是代码量来衡量工作量的。因为驱动工程师,一个月能写100行代码就很了不起了。
第一点不是很赞同
nadleeh 2013-06-27
  • 打赏
  • 举报
回复
有同感,官方出的资料有时都是错的,好像现在不和硬件打交道,而且大多数驱动设备厂商都有sdk
  • 打赏
  • 举报
回复
同感! 不过要做这行就得了解这所有方面的资料吧。
cirrusdev 2013-06-20
  • 打赏
  • 举报
回复
有同感。不过对于编译的问题,看清了makefile的编译流程,把相应的object都清除了,应该重新编不会有难题吧。 遇到过芯片原厂的代码有bug,老是crash,那才头疼呢。
vic_chang 2013-06-19
  • 打赏
  • 举报
回复
对啊, 另外驱动知识点比较多,零散性大。需要掌握很多东西才行。
王鹤翔 2013-06-19
  • 打赏
  • 举报
回复
我怎么那么有同感呢。痛苦的不是大量写代码,是写代码之前的构思和之后的调试。。
kevinxYangQi 2013-06-18
  • 打赏
  • 举报
回复
good,look up

21,619

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧