'
我有个同事开发单片机程序不用仿真器,他可是个编程高手。
他自己在单片机程序中加入调试语句,用条件编译定制。等调试好了,做个条件编译标识,一切就ok了。基本做法是:利用单片机的uart输出各个模块的各调试点的数据(可以是ram的所有数据),直接由pc机显示调试信息。如果有项目要用到uart也没关系,可以错开项目与调试输出信息的波特率,这点很重要!据说是我国国防战线上的调试方法。基本是可行的,我一直没有去做,亲眼见过,挺有效的。
bg5sbh
'
现在很多做arm/linux系统的也这样做,使用串口调试,但是在条件允许的时候,还是建议用标准的开发工具,而且一般的ham也还没有掌握那样的方法。所以,还是建议刚开始学单片机的爱好者,沿用通用的开发方法,不用一些较特殊的方法。等到能够自己随心所欲的时候,那时想怎样就可以怎样了。
最后,从工程管理的角度来说,现在做东西已经是靠集体组织来做了,尽量强调标准和统一。个人英雄主义的时代已经过去了。虽然我们还是渴望王志东和求伯钧那样的英雄。
还要说明的一点就是,现在很多研发过程中的方法,都是在特殊的条件下产生的。以arm开发为例,一套arm公司原厂的开发系统要10万元人民币左右。现在绝大部分的手机里边都是用的arm芯片,而做手机的厂商,不论国内和国外,都要大量购买和装备这样的开发系统。而其他一些规模相对较小的公司,却没有力量这样做,只能使用一些国内做的开发系统,甚至不用开发系统,就像刚才说的用串口调试的方法。但是应该承认,这并不是常规的方法,更不是最好的方法,但是,这些比较原始的方法在国内用的还是比较多的。当然是用这种方法对人的要求就比较高了。但是这是违背科学技术的规律的,而且更不符合现在工程化,标准化的要求。
工欲善其事,必先利其器。这个道理大家都明白,这也是我们国内现在和国外先进技术存在差距的一个地方。这一方面是我们的经济实力造成的,但是另一方面也跟我们的工程管理有很大的关系,我接触的很多客户,这些开发工具虽然比较贵,但是绝对也没有到买不起的地步,但是很多人都不愿意买,都认识不到好的工具的价值。不能从投入产出比的角度去考虑,而更多的只看到了他的成本比较高,却看不到他提高工作效率的一面。
很多好的技术企业,包括国内的,和国外的,他们的优势并不在于他们有多少多少高手,而在于他们有一套行之有效的工作制度和工作方法,每一个普通的工程师,按照这样的方法都可以做好工作。如果接触一些大公司的研发人员,你可能会发现,他们也不过如此。
所以,我还是建议大家在开始学单片机的时候,买几本标准的指导书,按照正规的方法一步一步的学习。只要可以做同样的事情,你不会比那些高手们差的。相反,你的基础更扎实,更有发展。
最后,我多次接触军工系统的单位,我的很多同学和朋友也在军工和航天的科研院所工作,相反,国家每年都要下拨大量的资金用于先进的开发工具和测试设备的采购。如果他们都用那样的原始方法开发航天飞船,战斗机里的实时系统,那是不可想象的。但是,有些科研单位,没有国家任务,资金比较少,这就很正常了,和前边说的问题一样,其实他们也不是买不起好的开发工具,只不过钱都干别的去了。
-----------------------------------------------------------------
用条件编译进行调试,在一些情况下是可以的。但是,为了发现某处的问题,必须进行多次条件编译和运行,才能确定问题的所在,即使经验丰富,也要反复几次,但是,如果使用硬件仿真器,一次就可以确定问题在什么地方。在调试硬件的过程中,仿真器的用处是很大的。如果调完硬件,有的时候就可以直接写程序,烧mcu了,但是也要比较熟练的程序员才可以。并不是刚开始学的ham就能做到的。