如果不少的话,就值得花些时间去进一步研究,提供更多方便。
貌似stc51就是靠这个流行起来的!?
现在的eagleCom+mcuisp联动方式,已经使stm32达到了stc下载的方便性。串口ISP下载的速度,甚至高于低端的仿真器。
初步列一下用ISP调试的优越性:
1、仿真度高,排除了仿真器对时序的干扰。
2、没有仿真器系统bug带来的困扰。
3、可将调试环节扩展到实际运行期。
4、低成本,只需串口线,及软仿真、编译环境。
5、无需引出JTAG,可节省口线,简化PCB布线。
缺陷:
1、观察、调试能力较低。
2、对编程要求稍高。
网友评论:使用汇编编程时,偶尔会用仿真器。
网友评论:当然,没有好
工具就另当别论了。
网友评论:《脱离仿真器玩单片机》
网友评论:有串口的,盲调很容易的啦。
把调试代码写入片子,把需要的观察的变量或中间变量的值通过串口送出。就能知道得一目了然。
网友评论:现在一般都是片内
硬件仿真,价格也很便宜了,不会超过500RMB,在一百至三百之间,方便的很,当然也还有一些既不支持硬件调试,也没有ISP功能的IC,只能看效果,通过IO,LED,UART间接调试了.
网友评论:各位都是在私企老板下工作?那倒是可以理解。老板是不把员工当人的。
一个项目20W,要求一个月完成,公司里只一个工程师小A负责技术设计,包括硬件、软件编程。小A要求老板配置一台仿真器,1,000¥左右。老板同意还是不同意?
“工欲善其事,必先利其器。”老板还想不想赚钱?
还有另一情景:如果老板待俺不错,7k以上一个月,那咱也不提这事,自己掏钱买一个就是了,非公司财产,还能拿回家做实验。不过没有仿真器,一个月绝对完不成也做不好。好程序是依靠工具调试出来的。
网友评论:1个盲调的电工与一个依赖仿真器的电工,我相信出活更快更好的是盲调的。
一方面,盲调本身代表这个电工更资深。
另一方面,胸有成竹,则下笔如有神。能盲调的,一定会胸有成竹。
网友评论:试试去受一次建设部金融POS标准时序测试,一个ETU一个ETU的对准,校验协议内所有的可能情况,就是上仿真器你都找不着北,还盲调?8个小时6000大洋的检测费,盲调?几十个仿真器都让你废了。
说盲调比仿真器快的,基本没玩过严格的时序类,复杂的协议类,和资源严重紧缺的设计。
有工具不用和没有工具是两个概念。
网友评论:看来是资深编程员了。有项目能否有偿帮助?介绍一下费用级别?
例如:这个20W的项目,程序不到2K汇编。一个月内完成,价格?下次有求一定请帮忙。
俺是菜鸟级别,没有仿真器的事情能做也不做,趁机捞一把拿回家学习玩是不是。
网友评论:33楼的复杂时序类,不是仿真器和isp能解决的吧?
复杂协议栈似乎用仿真器也就是速度能加快,而不是离了他不可以吧?
用过一个单片机,51内核的,不支持调试,也就是没有调试接口,全用keil支持的ISD51调的,把头文件和初始化加上,占用一个串口,哪里要中断,直接在哪里调用ISD_Break();一样在keil里可以看变量。
这个单片机就是,TUSB3410,性价比奇差,当时就因为他带usb和硬i2c才选的。
网友评论:“有工具不用和没有工具是两个概念。”
32楼的意思,不用工具的人比用工具的人还要快?咱实在弄不懂如今的资深编程员怎么一个比一个厉害。估计肯定没做过一级菜鸟所做的工作,8小时6000¥的检测费,建议下次一级菜鸟聘请32楼不用仿真器的资深电工来帮忙。
还有,不用仿真器的比用仿真器的出活更快,那全国那么多研究开发仿真器的公司都要改行办“资深电工培训班”啦?
网友评论:像我们公司是做CAN网络的,通常只用51外挂SJA1000CAN
控制器那种节点。
我看他们编接口软件的程序员,一个人在一个CAN网络上同时挂3、4个51仿真器,每个距离二、三米远;3、4个笔记本终端在实验室里来回轮流转来转去分别编程,挺佩服的。
不用仿真器?能同时考虑4个节点之间的通信协议关系?资深电工大概一个SJA1000接口程序也没做过。所以只是在谈自己曾经从事过的简单项目,不用仿真器也可以完成的项目。有没有不用仿真器就能完成一个CAN网络的资深电工?我们公司马上要。
简单的项目要求可以不要仿真器,可是资深电工是从事简单项目的吗?让学生去做就行,资深电工做资深的项目。
网友评论:但简易的调试器弄一个用用也不错,特别是USB口的,既可以当编程器用同事还可以偶尔做简易调试用用,用编程器烧写后用UART的方式并没有优点,呵呵,这还是一个简易调试器罢了,只是换成自己做UART部分罢了,但可比专用的调试器麻烦多,光那么多线连接就比较麻烦,而且UART也不如USB来的方便不是。。。
完全的盲调就是用编程器烧写后直接观察实际运行的结果,呵呵,如果没有工具或工具不好用,我有的时候也会这么办,但这显然不是一个很好的选择。
有工具不用确实是一个很笨的选择。。。
网友评论:我相信有人盲调可以解决问题,但是我要强调当代码到了一定的复杂度后,盲调一定比仿真器的效率低,进一步复杂时,效率就更低。
这个比方好比上海到苏州,乘汽车可能比乘飞机要快,若是上海到乌鲁木齐,两者的差距就显著增大,到美国,乘汽车就几乎(我是说几乎)是不可能的任务。
而资源非常紧张代码又不简单的情况下,盲调就几乎成为不可能的任务,你已经没有任何可以浪费的资源来支持你的盲调手段了。
盲调的中间手段导致代码与实际运行环境有差距,例如ISD51,它占用串口外,还占用堆栈,另外单步时占用大量中间时间,单个指令周期的STEP可能需要额外的上百个指令来运行,对于时序有要求的应用,这是致命的。
最后,盲调无法灵活的STEPBYSTEP的了解整个代码在每一个过程的状态,很可能遗留相当的BUG,你看到的只是一个结果,而不是代码真正运行的实质。
当你你有足够多的资源,甚至你的应用里存在OS,那么你不妨试试盲调。当你的应用足够简单,不涉及复杂时序与协议,那么你不妨试试盲调。
总之,强调盲调能方便的解决一切的,多是有米之人,起码他的资源让我羡慕,菜鸟没那么好的命,菜鸟需要在256的字节RAM的资源下完成中文无字库点阵LCD界面、ISO14443;ISO7816全部协议、3DES算法、20个键的键盘、实时语音、IIC、计时处理、小型数据库写入读出与查询,与PC交换数据。这其中好几个是需要并发处理的,整个MCU包括
寄存器就是256个字节。盲调?算了吧。
网友评论:虽然我在条件允许的情况下会选择用仿真器,但现实也经常无奈不是。
一定要掌握盲调的技术,即使不经常用。
比如说现在的JLINK的D版的市场价只要五六十块钱,你用还是不用?
要知道JLINK可是比
ULINK还稳定啊,而且支持IAR、Keil、GDB等诸多调试平台。
还有个现实就是,某种情况下,你的板子上没有JTAG接口,你想不盲调都不行。
比如我去客户那边看情况,我只带着一台笔记本,其余的工具全在公司。
而且产品板上jtag口或者被一些东西占用了,或者没引出来。
正好我们的产品是有IAP的,USB既是user的通讯接口,又是升级接口。
我就改一些自己怀疑的bug然后升级进去,发现故障变了,再改下再灌进去,
折腾几次,问题就搞定了,终于可以躲开交通高峰回公司了,哈哈。
网友评论:仅仅是代码模块化一些。
但我也不排斥仿真器,有就用,当编程器,观察变量,还是比盲调方便啦。
网友评论:我没怎么用过
不过我看一半一半的排除很笨和慢吧
为何不用普通IO口仿真PWM
在外看占空比呀
网友评论:这跟你用的mcu和代码错误的级别有关系。
假如你用的at89c51单片机,仿真器很贵,公司不肯出钱买,那没办法,只能硬着头皮上了。还有些单片机,比如msp430,arm7,都有jtag的接口,那些调试器很便宜,简单的调试器上面就一个244,diy也很方便,这个仿真就很方便了。
代码的一些运算错误,这个用仿真器看比较容易发现,但是一些关键代码段运行错误,这个错误有的时候几天才能重现一次,那推荐用串口把信息打印出来,这样更容易发现。
网友评论:作为“调试器”现多数都已嵌入到目标IC中,所以只要有相应的软支持,配备一定的硬件接口,就可方便的调试目标系统了。
网友评论:随机应变吧
网友评论:如ls某位所说
涉及到协议,接口的问题,多少还是需要仿真的
网友评论:同意48楼!
网友评论:因为盲调的调试周期能延伸到运行期。即能够在实际运行中进行调试。
而协议、外部接口的问题,很多需要在运行时才反映出来。
我调试某GPRS系统终端时,有切身体会。当时GPSR系统的问题都是出在移动网络那边,但是表现的却像终端的不稳定现象。
最终使用盲调,不但抓出问题,还证实给移动方,并提出解决方法,避免了继续无休止的扯皮。当然,题外话,飞鸟尽,良弓藏,咱们电工解决了大问题还是要留点小问题,要不...呵呵。
而如果用仿真器,抓这种大系统的问题是不可能的。一方面现场运行时每个终端都挂仿真器,怪异而可笑,不可实施。另一方面,仿真器根本不能在复杂现场稳定运行。
网友评论:用串口写入,再用串口读出想要看的数据.
网友评论:2秒钟报废1根针。仿真器是“事后控制”,做事应该“事前控制”。
网友评论:IO输出固定电平时你的线圈就死烧?还真的胆子挺大!佩服!
说说仿真器怎么个属于“事后控制”法?
网友评论:日本人搞这个的时候确实加了硬件保护电路,我们给他取了,因为俺写的程序,死机概率不到几万分之一,所以就把那对看起来烦的电路给PK掉了。
表说偶做滴东东不可靠,那么多台在加油站(内行知道其打印机的工作量)里7x24小时工作了2年多,没见因为死机烧针的。
仿真器的作用是:出了bug,放到你面前给你看。
盲调的意义是:你一次性认真写,不就没事了。
与其除了错来改错,不如一次把事情做好。我师傅说的:程序要装在自己脑袋里,不要装在仿真器里!
网友评论:比较低端,公司小不舍得配置仿真器,一直就是直接写片调试。
我的习惯是通过LCD来观察和测试代码,结果就是落下了一个通病。几乎我经手得每个项目都会保留一个LCD驱动接口,无论是否需要。LCD是串行的那种,只需要2个IO。
每次开始写代码的时候,首先就是移植LCD的驱动!
说来也怪可怜的,有时真有自己掏钱买台仿真器的冲动!!好在到目前为止,手头的活都还能过得去,一直就这样凑合着过!!
网友评论:盲调麻烦.
特殊情况,需要盲调.
网友评论:还好有了C8051F,连仿真器都省的买了...
网友评论:记得最初搞51的时候用的可是通用烧录器,烧一下,运行一下...
网友评论:写tcpip的人用ice吗?反正我写音视频相关的代码不用ice,要求的高实时性,用了反而会影响到程序的正确性。调试基本靠猜,哦,不对,靠打印。
网友评论:”因为俺写的程序,死机概率不到几万分之一“
55的设计的产品可靠性以代码质量来做为保证,按55楼的逻辑,“因为代码可靠,所以不会死机”
殊不知代码可靠只是产品可靠性中一个必须但不是充分的条件,怪不得国人的东西总是做不过小日本,因为国人认为日本人加的“硬件保护电路”“看起来烦”,可以“PK掉”。
现在我认为不仅你的设计不合格,你同样不是一个合格的电工。
网友评论:现在jtag仿真器很便宜,基本上百把块钱就可以搞定了。
就算你是高手,用不到断点、单步,写程序一气呵成,总不会一个bug没有吧。
用仿真器可以很快找到问题,盲调的话你要反复看代码才能发现。
当然盲调的好处就是你会多阅读代码,代码会很熟。
但是一般情况下,自己写的代码自己再看n遍也很难找到问题。。。。
就像打字,自己校对往往校对不出来的。
另外,烧片ok未必就ok了。
花个百把块钱节约几个小时就回来了,仿真完了还可以烧片测试,2不误
网友评论:我也是使用盲调,
用过STC
也用过S3F9454
网友评论:估计大多数也是被逼的、并被逼出来的
网友评论:也更直接
适合小成本的系统
网友评论:盲调的好方法
//调试代码的条件编译,测试完后不编译调试代码
#defineTEST_DATA_CODE1
一个任务设置一个测试变量,如:
#if(TEST_DATA_CODE)
typedefstruct
{
ucharGPS;
ucharGSM;
ucharGPRS;
ucharADC;
}TEST_DATA,*pTEST_DATA;
TEST_DATATD;
#endif
每个任务都定义很多
测试点,测试点的值从串口输入
#if(TEST_DATA_CODE)
if(TD.GPS==0x00)//调试点
{
//测试代码
}
#endif
网友评论:人都是逼出来的
网友评论:越简单的东西越可靠。任何附加上去的东西都会有他带来的负面效应,多的不讲了。
网友评论:有关系的是相关性……
网友评论:俺好象从事这行(七年)以来就没有用过仿真器,嗯,最喜欢的是通过电脑串口来查询MCU的运行状态,有MCU主动发数据出来的,也有用串口助手发代码查询MCU的。
不过现在电脑都没有串口了,逼的俺现在都是Keil里软仿真Debug解决了。
网友评论:但是有些地方还的用仿真。
盲调的好处是不至于有个问题,仿真了很长时间也没有发现问题,后来才发现仿真器不连接就好了。