[原创] 【有烟有故事】用一个新MCU平台是一种怎样的体验

辛昕   2017-2-24 00:26 楼主
       准备发帖子,选到【单片机】,忽然感慨,这是有多久没到这版块发帖子了,但今晚说的事还非得到这发不可,于是点了一根烟,开始讲故事~
       最近,工作上,不知是倒霉还是幸运地接到了一个项目,用的是以前公司没人用过的新单片机,这种事说起来在我们这公司并不奇怪,因为经常有代理厂商甚至原厂到我们公司拜访,类似的会议,从MCU到sensor模块不知道被拉着参加了多少回(不得不回想到以前在小公司的光景......这种差别,在以下还会提到)

      但是,在这家公司混久了,因为这家公司是一家凡事以出货订单为绩效考核不二标准的公司,是的,即使我们研发也一样,所以,用新平台的新项目,往往是先驱,也是先烈。
      这两个词通常是一个意思,关键是在什么时候,在怂恿忽悠你接下这个项目的时候,你的小boss一般会用 先驱 这个词,碰到麻烦或者最后项目又被不幸移走时,没错,是又,的时候,一般就会用 后者。

       在这家公司混久了,我才发现以前自己真的很天真,因为以前我对于用一个新平台这种事就算不是兴奋不已至少也是满不在乎,但在这里,至少到了最近的这个还在煎熬着不知前路如何的项目,我才明白自己是有多么的幼稚。

       并且终于在又一次——是的,是 又,又一次在寒风中郁闷抽着烟思索的时候,终于想明白了一些道理:
       那些什么兼容,什么理论上来说没问题,都TM是扯淡(对不起,我又爆粗了)。唯一可信的,说起来,只有一个通用法则:用的人多了,坑自然就少了~
       ——因为都被他们探过去了,所以,下次谁让我用新平台我跟谁急!

      没看我现在,都直接放弃nrf51822,用回stm32f0做我自己的业余小玩意了么~~
    (这个故事在这里:https://home.eeworld.com.cn/my/space-uid-115166-blogid-460167.html

      我发誓,我一定会把故事写完的,并且把之前那个 早该这么干 的 关于 串口的故事写完,不过,我还是无耻的:
          如果您觉得我的回复/帖子/博文有价值,感谢您的打赏(v0.95)

此内容由EEWORLD论坛网友辛昕原创,如需转载或用于商业用途需征得作者同意并注明出处


强者为尊,弱者,死无葬身之地

回复评论 (10)

前面似乎开了个大坑,其实故事挺简单的,至少我会提到让我很郁闷的事情,其实只是一两个很小的小细节,但这两个小细节,却让我在提供一个产品样机并且deadline只有区区十天左右的 紧急的进度里 足足耽误了 两三天!

但,而且,楼主贴我没忍住又啰嗦了,其实我本来的想象里,这只是一个很简短很整洁的只有几百字的小帖子。
好吧,当我雷声大雨点小也好,当我迷途知返也罢,总之,接下来的内容不会太长,但愿你不会后悔或者放弃打赏~~~
强者为尊,弱者,死无葬身之地
点赞  2017-2-24 00:30
先把坑说完~

因为项目是我一个人在 廖化作先锋,属于敢死队性质,暂时阶段,都是在做初期的驱动移植和调试。
直到最近因为要为一个老客户提供一个参展的样机,所以呢,有了一些比较小的功能需求。
说起来并不难做,前提是把外部 spi flash调通,然后配合以前做好的显示驱动,就可以完成。

但是问题就出在 spi flash 和 显示驱动 一起作用的时候。

我当然是一个一个模块的做,前期的显示我早就做好了,乃至更复杂的图形变换效果我也都做好了。
但是,当我把单独调通的spi flash 和 LCD显示加到一起的时候,发生了奇葩的事情.......

这里,其实也确实是我比较点背的原因,因为项目和部门的很多关系,我这个项目,其实一直不是主要项目,所以除了我一个敢死队在前面冲,后面基本看不到人跟着,虽然我经常能拉着 啥项目都包的硬件和结构协助我。

但这首批板子都是手帖的,因此焊接质量有限。
但那时候我根本没意识到有这个问题,因为我不懂硬件,一直也不关心硬件,当初MCU选型的时候,我也只是个旁听,也不知道这颗芯片在焊接,制造方面有什么难度。
所以,前面我在出现 spi flash读写不稳定的时候,丝毫没有怀疑过是 焊接问题。

直到被时间逼得不行,被boss,客户逼得不行,抓了所有同事一起讨论之后,硬件的哥们才帮我考虑到这个问题,随后焊工牛的一逼的硬件助理小哥,帮我补焊了几块目前质量最高的板子。

然而,如果你以为坑到此结束,那你就错了,因为,这实在和标题扯不上任何关系。
焊接不良,自然不能赖什么新平台
强者为尊,弱者,死无葬身之地
点赞  2017-2-24 00:37
当我满怀信心拿着这焊工好的一逼的板子,意气风华的打算继续调的时候.......

数据终于从spi flash里读出来了,然而,显示的图像又让我傻了.......

我接连折磨了助理小哥几次,尝试了几块缝缝补补又三年的板子之后,终于不忍再折磨自己,并且,我那帮被客户逼得集体在几乎吼的帮助解决问题的同事,在我发的一封基本都在赖“没一块硬件好”的邮件之后,集体把我围在电脑前,可怜他们对这项目和代码基本一无所知,只能一个劲的问我,问到我几乎不耐烦,然而,他们一个两个,比我绩效好,比我资历老,比我.......

我也就只能乖乖忍着。

然后其实他们也没找到什么好的想法(后来就明白这真的不怪他们,因为我这个最熟悉这个MCU的都没想到)
这时,我得到了这次苦逼经历中的另一个最有价值的教训:既然有一帮你一个电话就能从深圳拖过来的技术支持,就不要客气,不要羞于随时随地找他们搬救兵——当然,我那是开玩笑的.......

我旁边的哥们是我们固件三人组的老大,他替我打通了 原厂技术支持(可怜我一直没注意这哥们的存在,一直在愉快的和代理技术支持交流)
这哥们果然牛逼,虽然做图形驱动还没我快,但事实证明,他真的是第一个一开始就想到问题关键的人(虽然我到现在为止都没有就他给的解决方案,正式移植到我的项目里去)

他说,你们的 gpio映射是不是没做好啊?

我当时说,肿么可能?
我可是按照你们的驱动来的.......
结果他blablabla.....其实那个电话也不是我打的,我当时也没耐心听我小boss和他电话聊了啥,我只是抱着试试的想法,和他沟通了一些细节,然后把我这边的项目配置,该截图的截图,该发代码的,整理成一个简单的文件夹压缩包发给他。

虽然他手上有我们的原理图和硬件板,但他毕竟是不了解,而且他还是个供应商,所以,在他当天下午给我发来完整的解决方案之前。
我们公司另一个资深的软件老大(他是负责那个客户的)
他跑过来问了我问题,然后提出了类似的怀疑,并给了我一个很简单很暴力的 临时解决方案——因为,天可垂怜,我们当时是赶着当天拿出样机,去深圳给客户看。

这个办法就是,既然你怀疑是gpio复用冲突了,那你就每次显示之前,重新初始化一次io呗~~

我照着办了。
然后,问题,解决了~~~

在我快要接着把样机需要的小功能做完的时候,原厂技术支持给我打来电话并发来解决方案邮件,我也告诉她我这边的成果,并告诉他,他的怀疑是对的。
但是,我没空搭理他,我直接说,我这回没时间管这个,我要先把东西做完先......

好了,故事到此结束~~
强者为尊,弱者,死无葬身之地
点赞  2017-2-24 00:48
这到底是一个什么样的坑?

我这里,先简单说说,这是一颗未量产的MCU,以至于我们现阶段也就刚刚拿到原厂给的100片样片,甚至在短短的一个来月前,我们手上其实只有5片样片。
但这并不是原厂欺负我们订单小,事实上,我们虽然不是他们的前三家 阿尔法客户,但他们是很重视我们的,否则也不可能我一个电话就能让他们周六周日都从深圳跑过来陪我加班。

所以我已经习惯了有啥麻烦的事(主要是前期调驱动或者遇到什么我初步判断为和MCU本身有关的坑),我都会第一时间打电话,相当不要脸的要他们给我搞定,我坐享其成,只管继续做我的业务逻辑。
这是我在这边养成的一个毛病,事实上,我也被鼓励这么做,因为我们不是来研究MCU的,我们是来给公司快速做产品去卖去赚钱的。

而虽然我此前联系的并不是这个看起来更胜一筹的原厂支持,但我一直骚扰的那个代理支持,也不是个饭桶。
他在前面一个多月里其实帮我解决了不少麻烦。

所以,我说的 新平台的坑,坑就坑在这里。

如果连一个经验丰富的MCU代理的技术支持,都会被这个问题坑到
——我还没仔细研究这其中的细节,所以我也说不清这里面具体的技术问题。
但就我所看,大凡关于底层配置,类似gpio这种事情,说来说去,就是看MCU原厂提供了一个什么样的底层封装有关系。

这个事情,其实我已经吐槽过很多次了,所以这里就不吐槽了。
从我目前有限的认知里,这个底层库的写法不算奇葩也不算特立独行,它其实和我见过的某几个我还没有怎么用过的MCU平台很像,但却不是我所熟悉和欣赏的一种(不是卖广告,我个人真的颇为欣赏STM32底层的寄存器映射方式,注意,只是寄存器映射,不包括ST库!!)

也就是说,即使你只是要简单配置一个IO口做spi clk,你都要调用超过三个的gpio_xx函数,你需要宏定义几个定义为不同数字的 gpio号,这真是让我这等刚刚用这个MCU的人难受。

尤其,在刚刚提到的那个故事里,我写到这里,才发现,我忘了注明,这个问题的具体技术细节,所以你可能会认为我只是脑残到没注意io口复用...........所以我决定在下一层,单独用大字写先
强者为尊,弱者,死无葬身之地
点赞  2017-2-24 00:56
前面说到的 io口复用冲突,是一种什么样的 复用冲突呢?

并不是说我们,从硬件到软件的人都脑残到没有注意到同一个IO口被两个不同的外设占用——如果真这样,我觉得硬件那哥们一定会拖出去轮奸10分钟的。

事实上,这里面的复用冲突,指的是,那个gpio背后的设置号冲突了。
怎么说呢?
虽然我还没去细看,但按照我以前类似的经验,大概就是
gpio14可以配置为 定时器4的3通道,gpio24 可以配置为 定时器2的3通道。
然后,你同时把 gpio14 和 gpio24都作为 定时器3通道用了,于是...........

强者为尊,弱者,死无葬身之地
点赞  2017-2-24 00:59
一点了,先睡觉~~~
强者为尊,弱者,死无葬身之地
点赞  2017-2-24 01:00
好大一碗辛拉面
点赞  2017-2-24 07:39
有烟有故事~
物致DIY 欢迎你的加入~ QQ群:646461928 公众号:智物知心致成 小店
点赞  2017-2-24 08:12
没看懂……
点赞  2017-2-24 09:01
搞多了就会明白换平台只是一种套路。和搬砖没啥本质区别
要666
点赞  2017-2-24 09:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复