百姓大小事,一呼百应!

百姓网 | 百姓知道

硬件

题主从业两年,为什么觉得从事单片机相关行业写程序的人,写程序的水平普遍不高?

不懂rtos的人就放倒一片,用上rtos的人,写的代码还是前后台那种的,不懂事件驱动机制的又放倒一片,模块化开发,程序解耦思想基本没有。。。这不是开发程序中最基本的吗?更不用提什么是堆什么是栈,数据驱动模式了。。 对了,不过他们都会一点硬件,虽说硬件不用他们专干吧,但都会设计些电路,放大驱动,滤波啥的。 ——————分隔线———— 我电子信息工程出身,非科班,并不是像几个答案所说,科班出身,干嘛鄙视嵌入式…

2 个回答

  • jxk | 2017-10-16 14:44:01

    实名反对~

    看见评论中一边倒的情况,忍不住来说两句。

    先抛开题主的问题,我就简单举个例子。

    为紧跟潮流,产品中要用到USB接口的4G模块,Linux可能只需要简单配置下,驱动都是现成的。
    而我们需要:
    1、需要移植TCP/IP协议栈,这个有LWIP还好说。
    2、需要自己实现USB复合设备驱动,做linux 的可能熟悉USB那一套驱动,但有几个需要自己读USB协议来实现一遍。
    3、PPP拨号,linux下只需移植过来配置下参数,这里得自己实现它与ucos的接口,甚至拉来PPP协议一个一个字节对每个流程的数据。
    4、要加个4G转wifi功能,linux下的NAT转发只是一条指令,而这里需要修改lwip源码来支持双网卡。
    5、以上都是驱动层要做的,应用层自己做socket管理,自己实现FTP协议来做软件升级等就不说了。

    这只是一个模块的开发,再换个角度,怎么保证整个系统的稳定性?

    1、ucos已经开了二十多个任务,这些任务的运行情况怎么样,怎么监控管理?
    修改ucos源码,做任务管理器。
    2、产品中有数百个参数供用户修改设置以满足不同的功能,这种关键参数的修改配置,怎么做能靠谱?
    没有数据库,要用数据库思想基于flash实现一套简单的数据库功能。
    3、用户不同,功能不同,外部配件不同,一套代码怎么管理 ?
    结合宏机制,用批处理实现Makefile做一套自动化编译功能。
    等等。。。

    这是上家公司团队其中一个人做的事情,他也不是科班出身,但我不相信,不懂模块化,不懂事件驱动能做出很好的产品。


    一定程度上,我认同题主说的他们代码不规范,他们没有互联网行业的完善的开发流程,我有时也看不过去,也经常提。

    但是要看到这些是锦上添花而不是根本。

    他们不懂单元测试不意味着他们不懂测试。他们没学过操作系统课程也不意味着他们完全不懂操作系统。很可能这些理论你是课堂上学习,而他们是在实践中吸收。最近在聊他们想兼容两个主芯片,用软件描述硬件,我一听这不就是DTS的思想嘛。

    做单片机很大的特点就是什么都要自己干,很多别人拿来就用的东西都得自己实现。从这个角度讲单片机开发还是有难度的。

    当然任何一个成熟的产品,十几万代码,必然有烂的,我们干嘛要看烂的呢,我们要向好的学习,不是嘛→_→

    本问答由jxk提供

  • jxk | 2017-10-16 14:39:19

    模电数电就够他们折腾的了,哪有时间啊

    本问答由jxk提供

* 本站部分内容来源自网络,仅作分享之用,侵删。