打印

**盲调的大概只做过简单的封闭系统

[复制链接]
楼主: McuIsp
手机看帖
扫描二维码
随时随地手机跟帖
21
McuPlayer| | 2009-5-17 01:08 | 只看该作者 回帖奖励 |倒序浏览

仿真器的定义也是在发展变化的

从早期仿真器的的概念来看,ULINK和JLINK以及MultiICE这类东西是不叫做仿真器的。
因为早期的MCU内部是没有调试内核的,所以必须要用完整的仿真器,有些是用FPGA有些是用专用的仿真芯片。
现在能看到的,比如Boundout技术的51仿真器、义隆合泰中颖的8bit单片机仿真器,亦是如此的架构。


现在因为工艺的发展,调试模块在IC中所占的比例越来越小,对IC成本的影响几乎可以忽略了,于是很多厂家把调试模块都做了进来,比如Moto的BDM,ARM的JTAG、飞利浦的Hook,ST的SWIM等等,这时候外部只要有很简单的电路配合就可以实现调试功能。
这时候,仿真器已经从原来的整IC仿真进化为一个Bridge,一个吧USB协议转成JTAG等协议的Bridge而已。
这也是为什么D版的JLINK的已经有了五六十块钱的单价了,因为从硬件上讲,一个USB接口的单片机就可以实现此仿真器的功能。
当然,为了速度,JLINK做了很多技巧,比如利用SPI和SSC结合来实现JLINK等。
而具有这些资源的ARM单片机也不过二三十个*币。

使用特权

评论回复
22
McuPlayer| | 2009-5-17 01:19 | 只看该作者

调试技术并不仅仅是仿真器

GDB的开放架构更是为仿真调试提供了更为广阔的舞台

GDB的调试,上面的GDB命令以及GUI不谈,且说这个Debug Stub就是个非常Open的接口。在此接口下,可以实现各种调试工具。
比如定制的Debug Stub把GDB的命令,透过USB传输到Bridge上,而这个Bridge再把它转换成JTAG协议,以进行对ARM调试内核的控制。

而嵌入式系统的引入,更是让调试系统增色不少,现在已经有很多的商用调试系统,提供Embed OS Probe功能,可以观察内核的关键变量、消息泵的工作状态,甚至任务调度的的优先级算法排队的细节,都可以透过宿主机来watch到。

就像写WDM驱动一样,我们可以盲调,也可以用SoftICE等工具进行Trace,显然后者是高效的。微乳更是提供了Remote调试WDM的工具,否则动辄蓝屏,还无法Trace到故障不是很郁闷。
有了一系列的调试工具,我们可以更快的定位BUG,真正改bug是相对比较Easy的事情了。

使用特权

评论回复
23
huangqi412| | 2009-5-17 07:59 | 只看该作者

微乳...位软?

使用特权

评论回复
24
McuIsp|  楼主 | 2009-5-17 10:53 | 只看该作者

不用仿真器,可逼迫写出bug少的代码。

代码架构也会更明晰

使用特权

评论回复
25
lsqdesign| | 2009-5-17 11:22 | 只看该作者

冒个泡泡

 McuIsp 发表于 2009-5-17 10:53 侃单片机 ←返回版面    

24楼: 不用仿真器,可逼迫写出bug少的代码。 

代码架构也会更明晰

 
 
=====================
代价是多掉头发,haha! 

McuPlayer兄弟: 今年的项目多,基本上是两眼一睁忙到熄灯.很久没正经修过周末了.东西上正轨后.找机会喝下茶聊聊天

使用特权

评论回复
26
lost1421| | 2009-5-17 11:36 | 只看该作者

绝大部分是盲调。

使用汇编编程时,偶尔会用仿真器。

使用特权

评论回复
27
SeaSun| | 2009-5-17 11:47 | 只看该作者

用好工具才能提高工作效率,不是逞强的事,而是节省脑力

当然,没有好工具就另当别论了。

使用特权

评论回复
28
NE5532| | 2009-5-17 12:13 | 只看该作者

我已经帮你做了一点研究了

《脱离仿真器玩单片机》

使用特权

评论回复
29
李冬发| | 2009-5-17 14:34 | 只看该作者

盲调可不仅是烧片子看现象。

有串口的,盲调很容易的啦。
把调试代码写入片子,把需要的观察的变量或中间变量的值通过串口送出。就能知道得一目了然。

使用特权

评论回复
30
ayb_ice| | 2009-5-17 15:35 | 只看该作者

现在已经很少以前那种仿真器了

现在一般都是片内硬件仿真,价格也很便宜了,不会超过500RMB,在一百至三百之间,方便的很,当然也还有一些既不支持硬件调试,也没有ISP功能的IC,只能看效果,通过IO,LED,UART间接调试了.

使用特权

评论回复
31
刘前辈| | 2009-5-17 19:07 | 只看该作者

俺真的不理解。

各位都是在私企老板下工作?那倒是可以理解。老板是不把员工当人的。

一个项目20W,要求一个月完成,公司里只一个工程师小A负责技术设计,包括硬件、软件编程。小A要求老板配置一台仿真器,1,000¥左右。老板同意还是不同意?

“工欲善其事,必先利其器 。” 老板还想不想赚钱?

还有另一情景:如果老板待俺不错,7k 以上一个月,那咱也不提这事,自己掏钱买一个就是了,非公司财产,还能拿回家做实验。不过没有仿真器,一个月绝对完不成也做不好。好程序是依靠工具调试出来的。




使用特权

评论回复
32
McuIsp|  楼主 | 2009-5-17 19:15 | 只看该作者

用仿真器并不会更快的做出一个项目

1个盲调的电工与一个依赖仿真器的电工,我相信出活更快更好的是盲调的。

一方面,盲调本身代表这个电工更资深。
另一方面,胸有成竹,则下笔如有神。能盲调的,一定会胸有成竹。

使用特权

评论回复
33
一级菜鸟| | 2009-5-17 19:25 | 只看该作者

无知者无畏

试试去受一次建设部金融POS标准时序测试,一个ETU一个ETU的对准,校验协议内所有的可能情况,就是上仿真器你都找不着北,还盲调?8个小时6000大洋的检测费,盲调?几十个仿真器都让你废了。

说盲调比仿真器快的,基本没玩过严格的时序类,复杂的协议类,和资源严重紧缺的设计。

有工具不用和没有工具是两个概念。

使用特权

评论回复
34
刘前辈| | 2009-5-17 19:30 | 只看该作者

32楼是否能对外接项目?

看来是资深编程员了。有项目能否有偿帮助?介绍一下费用级别?

例如:这个20W的项目,程序不到2K汇编。一个月内完成,价格?下次有求一定请帮忙。



俺是菜鸟级别,没有仿真器的事情能做也不做,趁机捞一把拿回家学习玩是不是。

使用特权

评论回复
35
linqing171| | 2009-5-17 20:40 | 只看该作者

33楼的工具不是仿真器了吧?

33楼的复杂时序类,不是仿真器和isp能解决的吧?
复杂协议栈似乎用仿真器也就是速度能加快,而不是离了他不可以吧?

用过一个单片机,51内核的,不支持调试,也就是没有调试接口,全用keil支持的ISD51调的,把头文件和初始化加上,占用一个串口,哪里要中断,直接在哪里调用ISD_Break(); 一样在keil里可以看变量。

这个单片机就是 ,TUSB3410,性价比奇差,当时就因为他带usb和硬i2c才选的。

使用特权

评论回复
36
刘前辈| | 2009-5-17 21:08 | 只看该作者

再有:

像我们公司是做CAN网络的,通常只用51外挂SJA1000CAN控制器那种节点。

我看他们编接口软件的程序员,一个人在一个CAN网络上同时挂3、4个51仿真器,每个距离二、三米远;3、4个笔记本终端在实验室里来回轮流转来转去分别编程,挺佩服的。

不用仿真器?能同时考虑4个节点之间的通信协议关系?资深电工大概一个SJA1000接口程序也没做过。所以只是在谈自己曾经从事过的简单项目,不用仿真器也可以完成的项目。有没有不用仿真器就能完成一个CAN网络的资深电工?我们公司马上要。

简单的项目要求可以不要仿真器,可是资深电工是从事简单项目的吗?让学生去做就行,资深电工做资深的项目。

使用特权

评论回复
37
yewuyi| | 2009-5-17 21:34 | 只看该作者

过去严格意义上的那种仿真器很少用

但简易的调试器弄一个用用也不错,特别是USB口的,既可以当编程器用同事还可以偶尔做简易调试用用,用编程器烧写后用UART的方式并没有优点,呵呵 ,这还是一个简易调试器罢了,只是换成自己做UART部分罢了,但可比专用的调试器麻烦多,光那么多线连接就比较麻烦,而且UART也不如USB来的方便不是。。。


完全的盲调就是用编程器烧写后直接观察实际运行的结果,呵呵,如果没有工具或工具不好用,我有的时候也会这么办,但这显然不是一个很好的选择。

有工具不用确实是一个很笨的选择。。。

使用特权

评论回复
38
一级菜鸟| | 2009-5-17 21:35 | 只看该作者

有米之人一般盲调

我相信有人盲调可以解决问题,但是我要强调当代码到了一定的复杂度后,盲调一定比仿真器的效率低,进一步复杂时,效率就更低。

这个比方好比上海到苏州,乘汽车可能比乘飞机要快,若是上海到乌鲁木齐,两者的差距就显著增大,到美国,乘汽车就几乎(我是说几乎)是不可能的任务。

而资源非常紧张代码又不简单的情况下,盲调就几乎成为不可能的任务,你已经没有任何可以浪费的资源来支持你的盲调手段了。

盲调的中间手段导致代码与实际运行环境有差距,例如ISD51,它占用串口外,还占用堆栈,另外单步时占用大量中间时间,单个指令周期的STEP可能需要额外的上百个指令来运行,对于时序有要求的应用,这是致命的。


最后,盲调无法灵活的STEP BY STEP的了解整个代码在每一个过程的状态,很可能遗留相当的BUG,你看到的只是一个结果,而不是代码真正运行的实质。

当你你有足够多的资源,甚至你的应用里存在OS,那么你不妨试试盲调。当你的应用足够简单,不涉及复杂时序与协议,那么你不妨试试盲调。

总之,强调盲调能方便的解决一切的,多是有米之人,起码他的资源让我羡慕,菜鸟没那么好的命,菜鸟需要在256的字节RAM的资源下完成中文无字库点阵LCD界面、ISO14443;ISO7816全部协议、3DES算法、20个键的键盘、实时语音、IIC、计时处理、小型数据库写入读出与查询,与PC交换数据。这其中好几个是需要并发处理的,整个MCU包括寄存器就是256个字节。盲调?算了吧。

使用特权

评论回复
39
McuPlayer| | 2009-5-17 21:55 | 只看该作者

McuISP做过的项目绝对有一把了,这点不用怀疑,哈哈

虽然我在条件允许的情况下会选择用仿真器,但现实也经常无奈不是。
一定要掌握盲调的技术,即使不经常用。

比如说现在的JLINK的D版的市场价只要五六十块钱,你用还是不用?
要知道JLINK可是比ULINK还稳定啊,而且支持IAR、Keil、GDB等诸多调试平台。


还有个现实就是,某种情况下,你的板子上没有JTAG接口,你想不盲调都不行。
比如我去客户那边看情况,我只带着一台笔记本,其余的工具全在公司。
而且产品板上jtag口或者被一些东西占用了,或者没引出来。
正好我们的产品是有IAP的,USB既是user的通讯接口,又是升级接口。
我就改一些自己怀疑的bug然后升级进去,发现故障变了,再改下再灌进去,
折腾几次,问题就搞定了,终于可以躲开交通高峰回公司了,哈哈。

使用特权

评论回复
40
McuIsp|  楼主 | 2009-5-17 22:04 | 只看该作者

呵呵,我用sh67P33写的汇编,就没有浪费任何资源。

仅仅是代码模块化一些。
但我也不排斥仿真器,有就用,当编程器,观察变量,还是比盲调方便啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则