课程分类

课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • 掌握某些知识点
  • 学会某些技巧(或思路)

教学服务

  • icon

    1v1专属答疑服务

  • icon

    BAT专家面试辅导

讲师介绍

  • 王真星老师有近30年的一线研发经验,毕业于复旦大学,清华博士后经历,担任过美国UNL外聘副教授,是国际IEEE高级会员,上海科委专家库成员,上海政府采购专家,深圳科技局专家库成员,《计算机应用研究》特邀审稿专家,出版过专著《嵌入式产品分析与设计》电子工业出版社。在上海第二工业大学从事国内外学生的嵌入式教学。

  • 课程详情

    学习嵌入式系统必须动手做硬件,虽然对大部分学习者而言硬件设计开发比较头疼,但这是必须去做的。不做硬件将无法真正深入嵌入式开发。当然,这里的硬件是指采用当代比较先进的处理器,基本相当去做一台手机。因此有一定的难度。但是,实际并没想的那样复杂。为此,本课程前面2堂课是硬件的设计,然后其余的都是软件设计。软件设计相对来说比较复杂,本课程将基于freeRtos进行设计,从而学员可以学习到基于实时操作系统的嵌入式系统设计。
    王真星原创文章,不得复制!

    我们将以设计糖度检测仪产品为主线进行讲解。该产品的设计包括了各种驱动的开发和GUI图形界面的开发,涉及到的基础知识是c和c++。

    研发新产品,就是要不断研究、洞察要开发的对象,找出规律,研究出对应的设计思路以及具体的实现方法。当实际实现的效果和设计要求不一致的时候,需要修改前面的思路,或者用替代的方案解决问题。
    研发可靠稳定的新产品,需要付出大量辛苦的脑力劳动。产品从研发开始到稳定可靠,相对完美是一个循序渐进的迭代过程。除功能特别简单的产品以外,希望一次性就设计出完全符合设计需求的,并能大批量生产的产品是不现实的。产品的研发有自身的客观规律,开发时间和投入都有其内在的规律。稳定性和研发投入成正相关性,以很低的投入要获得非常满意的效果是不太可能的。当产品的原型出来以后,并不表示开发成功。在某种情况下,如果已经完成了85%的研制工作,并且已经做出了原型,另外的15%可能花的时间和费用是前面工作的几倍。
     
    新产品研发的过程是充满曲折的过程,当你克服所有困难的时候,就是产品研发成功的时候。产品的研发需要经过客户的使用和建议,并据此多次改进,最终才能达到满意的效果。
     
    目前很多公司以外包开发的方式进行嵌入式产品的开发,但成功率并不高,效果也不满意。主要原因是研发过程的不可控,这和研发人员的经验以及投入时间密切相关。不少外包设计公司完成原型设计,需求方初步验证,但当在现场长时间试验后,问题便暴露出来,这时候要继续修改,但研发人员不大会在没有额外报酬的情况下无休止修改。而需求方则认为开发的产品不稳定,不愿意继续多给钱。最终导致产品无法成功。当然这在目前我国嵌入式开发市场是普遍现象。因为我国嵌入式开发费用普遍不高,从开发公司的角度,除非客户大量生产,否则仅仅收取研发费是无法维持运转的。
     
    从公司的角度而言,从事嵌入式产品的开发是一项高风险的活动。因为涉及到产品成功推向市场,不确定因素很多。除了产品开发本身的风险以外,市场的风险更大。嵌入式产品涉及的投入包括:设备端硬件开发的成本,软件开发的成本,服务器软件开发的成本,手机应用程序开发的成本,系统性能测试成本,外观设计费用,模具加工设计费用,产品生产成本,市场推广成本,销售成本等。但是,当这些问题一一克服以后,迎来的将是胜利的喜悦以及财富的回报。
    随着物联网,车联网,智慧城市,智慧工厂,智慧农业等需求的不断扩大,嵌入式应用也越来越广泛。我国高校的计算机相关专业的嵌入式系统专业存在的主要问题是:很大部分高校还是停留在多年前的51单片机阶段,一部分迁移到ARM平台的大学购买了不少实验设备,比如从10年前的嵌入式linux平台,主要针对QT的C++和wince的C#开发,基本不会涉及到底层硬件和驱动开发;到目前的物联网开发实验箱,只是许多模块的组合。比如蓝牙,zigbee,2G模块,4G模块,人体感应模块,再放个步进电机,学习简单的控制执行。首先要注意的是,QT和wince已经基本过时。这里说的过时不是技术层面本身,而是社会和技术的发展导致的过时。比如我在最近几年发现,打电话给我咨询能否将原有机械设备的程序从QT或者wince迁移到安卓上的客户明显增多。原先我是反对将安卓应用到工业领域的。但是互联网+是目前企业的发展方向,企业生产的设备不再是单独工作,而是和上下游紧密联系的。举个例子,生产铆压机的设备商如果采用传统的工控屏或者PLC控制,这台设备和市场不会有任何关系。但如果采用安卓开发,情况就不一样,可以在安卓的控制界面上加上网上商城的功能。一旦用来生产铆钉的旋铆机材料用完了,屏幕上可以自动提醒客户采购,引导客户进入网上商城,而网上商城就是设备供应商新的盈利模式。可能设备本身价格不高,利润可以低一些,但以后客户一旦使用,就可能会从和设备生产商相关联的网上商城购买原材料。这是QT无法实现的。
     
    另外,这些实验箱有个共同的特点,就是硬件驱动都是做好的,学员只需要在已有的方案上修改软件,课堂实验失败的风险小,在做好准备的前提下一切都很顺利,教师和学生都能顺利完成该门课程。而按照我多年的研发和教学经验,上课做实验不成功的风险对老师而言不是什么好事情。但这样的问题是,学生无法对嵌入式系统开发中的细节了解,只是学了而已,如何独立开发则是另外一回事。因此国内目前该专业普遍存在的问题是知识无法和社会发展同步,毕业生直接切入公司开发的水平较差。
     
    实验箱对学生而言只是掌握一个初步,对产品的研发整个流程以及内部可能遇到的困难一无所知。嵌入式的开发其实就是和困难作斗争的过程,从来没有什么一帆风顺的时候。掌握嵌入式整个开发流程对于我国研发人员而言是极其缺乏的。懂软件的不懂硬件,懂硬件的不懂软件,两者之间的鸿沟较大。本书的目的就是培养产品的独立设计能力,要求最终能在没有他人帮助的情况下独立设计硬件,软件,后台服务器,以及安卓应用程序。
     
    经过我多年对工程师,国内学生以及留学生授课的尝试,发现学生对亲自动手做比较感兴趣,虽然难度有点高。但从零开始做产品,则是培养学生独立开发能力的一个非常重要的方面。
     
    嵌入式产品开发不是一件容易的事情。从我和诸多要求开发的客户公司的交谈中发现,大部分公司对要开发的产品本身缺乏非常清晰的细节定义。他们是从大致要完成功能的角度来定义产品开发的难度,没有考虑到实施的细节可能导致的问题和风险。比如,我一个客户是美国通用的供货商,他定义的设备特性还是比较清楚,但是当整个设备和控制系统完成以后,使用单位提出要提高产量,将几十吨的铆压机整个铆压的时间压缩为0.8秒,机械精度要保证0.2mm,而当把加工速度提高以后,发现有机械振动会干扰行程传感器的检测精度。要提高精度,势必要解决机械振动对传感器的影响问题,同时要加数字滤波,消除影响。但前期设计考虑到成本选择的处理器已经无法满足数字滤波的高速度的要求,因此要改进将大大增加研发成本和投入。再举个例子,有客户打电话说要求开发软件,硬件已经在另外一家公司设计做好了,软件并没有真正在实际环境中测试。这种情况不能说明研发是成功的。根据我多年的统计,发现真正实施生产的占比小于30%。
     
    产生这种情况的原因很多:
    • 研发周期赶不上市场需求的变化,可能产品出来的时候市场需求的高峰已经过去,生产产品的公司无法对同类公司形成壁垒。
    • 产品研发过于仓促,没有严格测试,反复测试,性能不稳定。
    • 产品研发投入资金不足,开发到一半被迫终止。
    • 后期资金不足,销售能力较弱。
    • 不愿意继续投入资金进行进一步完善。 
      从技术角度看,嵌入式产品开发最核心的问题就是稳定性。不稳定的产品必将失败。但是也要掌握一个度,绝对完美的产品是不存在的。对于实力不强的公司,稳定性应该掌握在产品在客户那边基本没问题,一些极少的偶发问题只有在发生后才能了解,并根据实际发生的情况进行改良解决。如果一味追求稳定,最后的结局就是项目失败。因为高稳定的产品意味着高研发投入,没有足够的研发投入而要求达到完美的稳定是不可能的,这是不以人的意志为转移的客观规律。只有在良性的销售、使用、反馈中不断完善才是合理的解决方式。这对我国近年来涌现的大量创业公司是有参考意义的。
       
      嵌入式开发其实是当今很多新技术开发的核心,CPS,NB-IOT,智能家居,人脸识别,人工智能,许多场景在前端都会用到嵌入式,要以不变应万变,因此要学会掌握最核心的技术。嵌入式包括电子电路设计,数电模电设计,PCB设计,实时软件设计,实时操作系统,文件系统,网络通信。从开发工作量而言,一般正常的嵌入式设备硬件工作量占15%以下,软件工作量占85%以上。而且开发是个反复的过程,一次硬件设计正常是极少发生的事情,往往要做两次到三次改版,软件也是反复调整。