目录
一、研发方向与出路
二、大公司与小公司研发项目差异
三、项目开发实践
四、器件选型
五、资料检索
六、出现问题时的解决思路:
七、产品测试(逻辑、性能、稳定性)
九、产品研发的一些经验总结
往期系列文章: 1、裸机项目开发经验分享 – 完整开发流程介绍(项目规划与执行、器件选型、资料检索、产品测试思路等) 2、裸机项目代码设计与管理 – 项目程序的组织管理、设计优化思路等经验分享 3、裸机编程与调试 – 在项目中遇到的各类问题,解决经验分享(常见新手问题) 4、在实际开发项目中总结的硬件调试经验分享 – 调试目标、方法,以及常见调试问题解决 5、基于AltiumDesigner软件的PCB,原理图设计完整介绍,项目经验分享 [硬件开发设计] 6、硬件开发设计 – 焊接电路板,介绍焊接概念,焊接步骤,常见错误,难点等 7、电池供电应用中的电源设计:干电池特性了解、LDO与DC-DC选型设计、电流检测方案要点
一、研发方向与出路
二、大公司与小公司研发项目差异
1、小公司的技术路线:小公司一般业务会比较多,但产品周期一般较短(公司承受不了预研、耗时的项目,追求高产出,快回 ),因此重业务轻技术,涉及的产品范围会广一些,注重个人能力,偏向于横向发展; 2、大公司的技术路线:大公司一般业务会比较专一,单一产品继承,因此轻业务重技术,能熟悉一项大型项目所需要的技术知识、研发工具以及有效的管理流程,能够得到深层的技术锻炼,以及高层的项目眼界,注重的是技术团队管理和产品的高质量,偏向于纵向发展; 3、根据个人情况选择,毕业可以去小公司,能够发挥个人能力,找到职业成就感,此时横向发展多种技术(杂乱的知识体系),注意切勿激进和浮躁,适当总结输出;后面根据所涉及的知识域,选择一个方向,挤进大公司,此时做的是知识深化沉淀;在大团队重熟悉一套完整的解决方案和解决具体问题的方法论,培养技术格局和眼界,最后根据个人状况再次选择技术管理或作为主导团队之一进行创业;
三、项目开发实践
*清晰设计思路很重要,请务必先设计好思路,再动手; *对一项技术付出越多的时间,做得越多,必然会精,在每一次重复中精进; *对待所有的技术,都必须以实际的项目来实践试验,在解决问题中进步; *前期的每一个步骤需要十分小心并且经验至关重要; *一个产品的完整生命周期浓缩概况:需求说明 -> 开始设计 -> 器件选型-> 主芯片熟悉-> 原理图的搭建 -> PCB板绘制 -> 开发板上开发驱动 -> 整个程序的框架搭建(构建系统)-> 焊接 -> 上机调试(程序的核心编程)-> 软硬联调->测试修改->产品老化稳定性测试->产品出厂维护; 项目的开发一般流程: *每一步都需要精雕细琢;用思维导图记录把控整个项目流程的细节; 1、系统规划(立项:重点和难点) a、针对系统功能、各项技术指标、操作方法(参照现有产品)、系统升级和维护、产品机构、产品生产等做规划; b、设计各种文档作为产品开发、验收、生产指南和依据; 2、系统硬件设计 a、根据需求指定系统功能、产品指标等; b、参考现有设计,设计原理图,PCB绘制,制作目标板; 3、系统软件设计 a、搭建系统框架、设计程序流程图, b、初步在开发板上调试驱动例程,最后在产品板上完成所有功能程序; 4、系统调试 a、将各种驱动程序、应用程序调试完善,整个一个系统内; b、整个项目的难点在于协同各个模块(避免互相干扰); 5、系统的优化(难点) a、优化系统工作的效率和质量,提高系统的稳定性、准确性和可靠性; 6、对所开发的产品要精益求精、反复修改,使之不断完善(难点) a、开发的产品都需要经过市场、用户的实验;在产品的整个生命周期中,需要开发者不断维护和完善,三分开发,七分维护; 实施项目过程中的几点注意: 1、积极与芯片、模块方案商的交流; a、与方案商的技术洽谈十分重要; b、有效的沟通和充分准备是提高效率的最主要途径; 2、与客户的结构、进度配合; a、客户的需求可能会不断修正和更改,必须明确合同的流程; b、在与客户结构的配合过程中,必须给出专业的解决,而这也恰恰是重点和难点; c、进度的配合十分关键,必须提前做好准备;这样的事情才会高效率; d、在客户前面调试和演示的注意: 1)各种情况都可能会出现,必须要有快速发现问题的能力; 2)大事化小,小事化无的能力(解释说服的能力); 3、项目组内的人员交流配合,虚心请教与积极讨论; 4、项目的规划和把控,及时反馈项目进度;
四、器件选型
五、资料检索
六、出现问题时的解决思路:
1、良好解决问题能力在于解决思路,而思路在于经验的积累、以及过程中总结; 2、解决问题的重要要素: a、首先思维风暴,再把握整体思路,避免重复; b、从最简单开始,不要漏掉每一个小细节; c、从最开始把控整个项目的细节,更容易找到突破点; 3、常用的问题解决方法:对比法、问题列举法、排除法、细节分析法; 4、最难解决的问题只是时而出现的现象,如; a、AD检测时好时坏问题,原因是原理图出错,电容元器件参数不一); b、J-link下载问题(芯片深度睡眠了)(每台电脑不一致); c、建议:不能放过任何一个细节; 5、关于开发解决问题的能力和速度问题: a、解决问题的能力在于你对这项技术研究的深浅程度; b、开发速度问题在于你对这项技术的熟悉程度; 6、遇到问题先自己解决,再请教他人的良好习惯;
七、产品测试(逻辑、性能、稳定性)
1、许多BUG都是异常操作导致的,采用非惯性思维进行测试;会发现很多潜在BUG; 2、测试思路: a、先用正常逻辑测试一遍->接着用非正常逻辑测试(乱操作、重复操作、强度操作); b、在正常操作下加上外界干扰; 3、诚然,每个产品都要应该有不同测试思路,不能一概而论; 4、一个产品必须经过老化、极限测试要确保产品的稳定性和长期使用质量;
九、产品研发的一些经验总结
1、功能容易实现,但是产品的稳定性则难以实现; 2、项目进度的快慢,决定于你对该知识的熟练程度; 3、必须对产品问题执着,因为越是不重视,后面的问题也是不断地随之而来; 4、解决问题一定要沉得住气,相信问题一定会被解决的信心; 5、标准很最重要,基础很重要。这决定你可以走多长多远的路; 6、做技术的,必须是经验能力以及设计能力并重; 7、硬件永远指导着软件,软件的每一步操作都与硬件息息相关; 8、前期的重要任务:理解开发文件架构以及硬件架构; 9、资料&视频&实验需要多次反复认证,每一次看都会有不同的效果与收获; 10、把握程序的思想与流程(技术变的是表达方式与表达规则),思想还是一致的; 11、每个新产品必定有自己的特有逻辑流程 ; 12、理论与实践并行,只有自己亲自动手才会有效地记住; 13、习惯用自己的语言总结一些理论、晦涩难懂的书本语言、以及实践现象; 14、程序只是一种描述流程以及指导内存布局的一种形式,很多时候编译器已经替我们办了很多事情; 15、通讯协议分为 a、标准协议;b、私有协议; 16、开发就是不断地接触新事物,对待新事物的应该的心态: a、新事物都有一个特征:概念化,没有实际特征,难以捉摸; b、第一阶段:理解为主;记忆为辅; c、第二阶段:记忆为主;理解为辅; 17、对新物件的认识,从以下三方面入手: a、基本的实现原理:能形成基本形状,对基本概念掌握并熟记; b、知识结构组成:原理与实物联系,对原理的再掌握;了解就好 c、使用注意以及操作流程:记忆注意事项以及原因,将其流程化,实操一遍; d、实际操作 :能巩固知识,加强理论; 18、如何对待新技术:a、不要崇拜牛逼的算法与协议;b、产品心态,着重项目与功能;c、建立理论框架与结构; 19、对待新事物切莫不能急躁;更要冷静与理性分析; 20、技多不压身,总会有人走在你前面; 21、很多时候技术知识很多,很广,但实际应用时用到的却是简单的部分; 22、有时间自己立项目去试验,这才是最有效的学习方法; 23、认识新的分立元器件:应当从原理、电路应用、命令等入手; 24、很多时候,你并不是没有解决问题的能力,而是没有解决问题的耐性,心态很重要,面对问题应该积极 理性 逻辑对待; 25、以项目经理的角度去看待问题(整体产品思考:包括软硬件、成本控制) 26、程序并没有想象中复杂: 单片机硬件程序 = API + 操作流程控制; 27、稳定的硬件最重要,这样软件才有机会落地(开发板最好的例子) 28、如何对接自己负责的部分很重要;a、搭建硬件环境;b、封装软件,提供可调用接口;c、测试调试目标板; 29、所有外围器件的原理都大致相同,不同单片机之间的区别在于开放的“指标”接口(如AD的采样率、通道、对应引脚);书籍对其原理与指标有明确的详细说明,而手册则单独针对自身资源的描述; 30、写程序能贯彻操作思想,掌握每个细节;看程序只能看出操作规范与基本流程; 31、程序的两大要素:a、操作流程(显性); b、状态与状态切换(隐性); 32、学习靠突击是不扎实的,需要做的就是持之以恒,切勿急进; 33、学习代码方法其实很简单(重复):多写、多看、多练; 34、注重第一次接触新技术的时机,在这个时机中尽可能去掌握更多的知识点,形成自己的知识 络; 35、快速发展的电子技术要求每个人必须快速适应新技术,新技能(在于方法和技巧);
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!