一(八十二):笨一点点

“傻人有傻福”,曾经一直觉得这句话有些安慰的成份在里面——这不是典型的唯心论么?一帮loser智商不足,又无处充值,就拿这句话来掩耳盗铃自欺欺人。

不过,现在人老了,见的多了,慢慢地觉得这句话还是有道理的。

古希腊有一句谚语:

智慧,就是比聪明再笨一点点。

太聪明的人,往往幸福指数偏低;笨一点点的话,就很容易开心了。
image
图源:pixabay

俗话说:尽人事,听天命。

这就是教导我们,在努力了过后,就不要再强求一定要什么结果了。

人生不如意者十之八九,只要自己尽力了,就没有遗憾了,其他的事情,就不要太在意了。得之我幸,失之我命。

笨一点点,2B儿童欢乐多么。

在和人合作的过程中,也试着让自己笨一点点吧。

每个人总有犯糊涂的时候,只要对方的私心或过失没有触及到底线,那就睁一只眼闭一只眼算了吧。

水至清则无鱼,人至察则无徒。为了还能和小伙伴们一起愉快地玩耍,还是“难得糊涂”一下吧。

笨一点点,看到老太太过马路,去扶一下,整个一天可能都会有个好心情。赠人玫瑰,手有余香。

当然,也有可能因此纠纷不断生不如死,这取决于扶的老太太,是聪明还是“笨蛋”。

如果“精明”的老太太越来越多,最终影响的是她们自己。社会风气由此衰败,平时最需要得到帮助的群体,再也无人敢碰到,老太太们最终因为“聪明”而自掘坟墓。

这就是典型的聪明反被聪明误。

所以,还是笨一点点好,这样善终的可能性才会大一点。

人间不值得,不要耍小聪明,笨一点点,做个有大智慧的人吧。


零一系列汇总:
列表太长,具体请看:
一(八十一)


希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星5 cred stars,谢谢啦~
我的 @ReviewMe 凭证留言板!

Posted using Partiko iOS


This page is synchronized from the post: 一(八十二):笨一点点

谈谈我在研发生涯中碰到的甩锅侠

作为一个合格的研发工程师,不但要像斯图尔特·布兰德讲的那样:Stay hungry, stay foolish,还必须要有开放的心态,实事求是的精神。

以探索为乐的大部分研发工程师,他愿意拿出几乎所有的时间去探索未知,研究问题,这其实就是英文的RD的本意:

Research and Development engineer,研发工程师,对某种不存在的事物进行系统的研究和开发并具有一定经验的专业工作者,或者对已经存在的事物进行改进以达到优化目的的专业工作者。

不过,现在越来越多的RD,变得有些浮躁,缺乏Research的动力,也懒得Development项目,日常工作中更多地变成了design engineer,变成了单纯的“设计,绘制”项目。

越来越多的研发人员,失去了专研的精神,不再享受寻求真理的过程,碰到问题时动不动就找个借口,甩个锅,草草结案。

他们不愿意承认自己的设计缺陷,觉得“老子天下第一”,做得很棒,只要有问题,一定是别人的原因。

这其实是典型的婴儿思维:自己是全世界的中心,所有的对错真假都由自己的意志决定,这样的人注定成不了优秀的研发工程师,甚至不是合格的研发工程师,充其量只是一个甩锅侠。

下面就举几个例子。

我没错,一定是MCU设计缺陷:

我碰到太多的设计新人,费了九牛二虎之力,终于设计出一个可以动的Demo,但是发现偶尔关机电流偏大——正常情况下关机电流是几个uA,但是他设计出来的,有时候几个uA,有时候几十几百个uA。

几百个uA是什么概念?

一节碱性电池的电量一般是2000 mAH左右,如果是关机状态下500uA,也就是0.5mA时,电池能用
2000 / 0.5 = 4000小时。也就是关机状态下电池在半年以后就没电了。

问题倒是不大,但关键作为产品的父亲,研发工程师必须找出所有不确定的问题,才可能让自己的产品问题最少。

一个不负责任没有研究精神的工程师,面对这个未知的多出来的电流,在确认一些简单的可能性还找不到答案之后,往往会选择忽略:

虽然MCU的技术手册里面说休眠模式状态下的电流是1uA以下,但是,我们都知道,IC行业都有产品合格率问题,我现在碰到的这个关机休眠电流偏大的问题,应该就属于设计或生产缺陷。

肯定不是我的设计问题,因为硬件线路没有问题,我都检查过,该断电的都断了;如果软件程序有问题,因为休眠后程序停在固定的地方,没有道理有些电流大,有些电流小。

这一定是MCU的缺陷!! 我竟然找到了原厂的设计缺陷!!! 我好牛逼!!!!!!!

哈哈哈,每次我碰到这种问题,只能笑笑。

因为当初我也遇到过这种问题,我也认为自己比IC原厂的设计人员都牛逼——直到我的责任心驱使着我用示波器把MCU的引脚一根一根地量着来看。

这是我设计的一款产品的PCB图,IC的引脚如此细密,用示波器探头接触时手不能抖,眼不能花,一根一根量过来,没有责任心,是做不到的:

你会发现,在你用示波器探头量到某个引脚时,电流会减小,甚至于恢复正常。探头拿开,电流就又开始任性乱变了。

这可以用非常标准的科学原理来回答:
现在IC几乎都是复杂庞大的CMOS线路集成,而COMS管有一个特点:MOS管输入阻抗很大(栅极源极之间有一层氧化层),输入阻抗大,对微弱信号的捕捉能力非常强,所以悬空时很容易受周围信号的干扰。

CMOS电路有一个设计的原则,就是—— 任何输入口都不要悬空。

只要悬空,由于上述特性,就会造成MOS管的开关状态不稳定,从而引起IC消耗电流异常。

而没有经验的工程师,往往会让没有用到的MCU引脚空在那里,程序上又没有做任何处理,导致悬空引脚处于输入状态,引发异常。

看到没有?这就是经常被年轻人甩的锅,那些IC原厂,每年估计能够收到数以亿计的黑锅~~


还有一种是这样的:

我没错,一定是编译器/烧录器有问题:

上面说到,IC设计厂家经常会被冤枉,同样的,程序编译器,仿真器的提供厂家,下场也不会比窦娥好到哪里去。

相对来说,硬件问题比较容易确定,软件有bug的话,那可是千奇百怪,毫无规律可言了。

有些时候,bug很隐秘,同一批产品生产出来,有的始终没有问题,有的就经常出问题。

一个不负责任没有研究精神的工程师,如果碰到这种问题,一般会这样想:

肯定不是我的设计问题。如果是设计问题,这一批产品应该都有问题。而现在是A,B,C都很正常,只有D老是出错。

不是D用的元件有问题,就是D在烧录程序的时候,烧录器出错了,把程序给烧坏了。

有时候,重新烧录程序确实能解决问题,这就会更加坚定新手的信念——你看你看,重烧程序就好了,我就说是原来烧录过程中有问题么!

实际上,有些bug本就不是稳定规律地出现,可能是重烧程序以后,问题刚好没有出现而已。

以一个MCU测量信号周期/频率的例子来看:

从图上来看,MCU内部TIMER的第三次寄存器溢出发生在测量周期结束之后,因此在整个测量周期中,TIMER实际溢出了2次。

这里要介绍一个概念:

MCU的内部中断有好几种甚至于好几十种,这些中断是有优先级的,优先级低的中断,会被优先级高的中断打断,MCU优先处理中断优先级别高的中断服务程序。

上图中,因为中断1和中断2的时间间隔非常地短,如果中断2的优先级比中断1的优先级高的话,即使中断1实际是先发生的,但是程序优先处理了中断2,这样,在测量周期结束之后,程序判断TIMER溢出了3次。

就这样,实际的2次被记录成了3次,那么计算结果当然是错误的。

只是这样的问题发生的概率很小,不但和MCU内部程序周期有关,还和被测信号的频率有关,所以产品最终的表现就是不稳定,时好时坏,难以调试。

这种问题,就常常被新手甩给了编译器,烧录器等厂家,真的是六月飞雪啊!!!

结论:

这里只举了2个很典型的例子,一个硬件问题,一个软件问题。

我想说的就是:IC设计公司,和各种编译器/烧录器的设计厂家,特别是业界大厂,大公司,他们的研发能力相对于我们这些应用层面工程师的研发能力,高的不是一点点,有些差距可能要以“光年”来论。

设计了这么多年,我所看到的,听到的那些甩锅侠甩出的黑锅,99.99%都是自己的问题,和这些大公司毫无关系。

这是铁的事实,作为使用他们产品的研发工程师,只有保持虚心,保有责任感和清醒的头脑,严肃认真,大胆假设,小心求证,才能不停地打破自己的认知,求得最后的真相。

愿所有的研发工程师实事求是,不再当甩锅侠~~


希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星

,谢谢啦~
我的 @ReviewMe 凭证留言板!

Posted using Partiko iOS


This page is synchronized from the post: 谈谈我在研发生涯中碰到的甩锅侠

一(八十):清醒一点点

清醒,是一种状态。

要时时清醒,挺难的。

所以,大家要一直提醒自己,要时刻清醒一点点。

昨天在群里看到一个网友说了一段话,真的是很有道理。大意是这样的:

科比打篮球很厉害吧?
很多人喜欢他,但一提到说要苦练绝技变得和他一样,人们自动就退缩了,因为觉得自己条件不够,身体素质不如科比;

罗振宇其实也很厉害。
但很多人觉得自己通过努力,也能做到和罗胖一样——不就是个卖弄二手知识贩卖焦虑的小贩么!

这其实是一件很奇怪的事。

人们对于身体外在条件(身高,灵活性等)的限制认识得很清楚,觉得自己达不到顶尖运动员的条件;而对于认知水平的限制,就看不清楚了,认为自己只要稍稍努把力,就能和罗胖一样,甚至超越他。

对于物理限制,大家都看得很清楚,但对于精神限制,大家就看不清楚了。

这就是很不清醒的状态了。

人的差异在于认知。而认知水平这件事,很多时候不是靠“努力”就能解决的。
image
图源:pixabay

清醒一点点吧。

成功人士之所以能成功,绝不是简单的努努力就行了。

他们和常人的差别在于,他们能够意识到加在自己身上的桎梏是什么,并努力去打破它们;而常人只能坐在摇椅上慢慢摇,被某一种主义洗脑了而不自知。

人和人最大的差距在于认知,而认知是最难改变的。

你和罗胖之间,差的不是那点努力,那点运气,而是那点认知。

燕雀焉知鸿鹄之志。

世界上“鸿鹄”可能很多,但是大部分被上天安上了“燕雀”的身份,因此他们就过了“幸福”的燕雀一生。

当然,也有可能“燕雀”被安上了“鸿鹄”的身份,他们辛苦一生,最终还是一败涂地。

所以,大家只能再清醒一点点,认清自己的本来面目,打破身上那些被安装错误的枷锁,才能各得其所。


零一系列汇总:
太长了,列表请看:

一(七十九)


希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星5 cred stars,谢谢啦~
我的 @ReviewMe 凭证留言板!


This page is synchronized from the post: 一(八十):清醒一点点

一(七十八):慢一点点

现在的世界,节奏太快了。

吃东西要吃快餐,学习要速成,拍照用数码立即可见,就连结婚也要闪婚,似乎快乐稍纵即逝,不立马抓住就灰飞烟灭了。

可是,人不是机器,很难一直高速运转。

太快了,太快了,快到已经看不清路边的风景。

慢一点点吧,慢一点点吧,人生不是百米冲刺,而是一场没有终点的马拉松,现在快这一点点,有什么意义呢?

原来想念一个人,有好几个层次:

  • 突然上心头,沉思许久,傻傻微笑;
  • 焚香沐浴更衣,摊开信纸,书写思念;
  • 鸿雁传书,感情沉淀;
  • 遥想对象看信场景,继续傻笑;
  • 收到回信,心有灵犀,哈哈大笑……

而现在,想念一个人,微信视频一开:

  • 你在干嘛?我贼想你了
  • 我在拉屎,等我拉好了再找你啊!!!

诗与情怀,变成了油盐酱醋和排泄物。

看到孩子成长缓慢,懵懵懂懂,气就不打一处来:

你看看别人,老早就会穿衣/吃饭/背唐诗/奥数/钢琴了,TNND你啥球不会,真不知道像谁。

恨不得重蹈揠苗助长的覆辙。

可是,陪伴孩子成长,就像带着蜗牛去散步。
image
图源:pixabay

节奏不对,任何陪伴都是无效的。慢一点点吧,好好享受这段亲子时光,你和孩子在一起的时间,满打满算也只有10年而已,珍惜吧,时光一去不复返。

慢一点吧,慢一点吧,人生没有终点,慢慢享受过程,欣赏路边的野花吧~~


零一系列汇总
太长了,看这里:一(七十七)


希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星5 cred stars,谢谢啦~
我的 @ReviewMe 凭证留言板!

Posted using Partiko iOS


This page is synchronized from the post: 一(七十八):慢一点点

一(七十六):怪一点点

我们生活的这颗星球,生活了70多亿人口。

这是什么概念呢?也就是说,把你扔到人堆里,就像一滴水洒进了大海,除非火眼金睛,否则别人根本看不到你。

人生如此艰难,你又怎样才能出人头地,走上人生巅峰,赢取白富美,当上跨国公司总裁呢?

答案只有一个,就是——

怪一点点

image
图源:pixabay


只有与众不同,比别人怪一点点,才有可能被别人发现,比如鹤立鸡群,一枝独秀。

当别人刷头条的时候,你在学习;
当别人玩抖音的时候,你在学习;
当别人坐着发呆时,你在学习;
………………
这样,你不成功,还有谁能成功?

当然,凡是得有度,不能过度。

如果
当别人吃饭的时候,你在学习;
当别人睡觉的时候,你在学习;
当别人K歌的时候,你在学习;
当别人恋爱的时候,你在学习;
…………

这样的话,你不是英年早逝,就是千年孤独,活着也了无生趣,没意思啊!!

所以,该吃饭吃饭,该睡觉睡觉,该恋爱就恋爱,顺便结个婚生个龙凤胎,这样才能更好地享受生活,不然你要成功干什么呢?

所以说,怪一点点就够了,不能怪太多。

怪太多,要么真的能走上人生巅峰,但是上去之后,你会发现巅峰的落脚点只有针尖那么点大,在上面也挺痛苦的;但是,怪太多,更多的时候是和这个社会格格不入,被抛弃,被嫌弃,让人感觉“丑人多作怪”。

当然,你如果要选择“怪一点点”,前提是要有真材实料。

平原君的食客毛遂,就比别的食客怪一点点。
image
图源:pixabay

当拥有食客三千的平原君要挑选20智士干大事的时候,凑了19个人,还差一个补不齐,可是急坏了处女座平原君。

这时候毛遂就和别人不一样,老板挑不中我,我就自己推荐自己!!!

就这样,毛遂也入选了。

但是,如果毛遂没有真材实料,入选了又能怎样?只能加速自己被打脸。

好在他真的厉害,帮老板解决了很多难题,因此变得大红大紫。

所以,当你有足够实力的时候,不妨“怪一点点”,这个能帮助你快点成功。


零一系列汇总:
太长了,请看:
一(七十五)


希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星5 cred stars,谢谢啦~
我的 @ReviewMe 凭证留言板!


This page is synchronized from the post: 一(七十六):怪一点点

血淋淋的教训:研发过程中节约成本闯的祸

好多年前,我曾经设计过一款便携式血糖仪,才真的感受到成本压力。

原来我设计的都是一些工业用的仪表,一般只要不是太夸张的奢侈型设计,都能够通过公司的成本考核,因为工业仪表相对专业,利润率比较高,因此设计的时候更多的是追求精度和可靠性,硬件成本相对就较少考虑;而血糖仪属于大众消费性的产品,都是用户购买血糖试纸时赠送的,因此客户对于成本的要求近乎苛刻。

先说结果,因为硬件成本的限制,我自作聪明,结果被这张图给害惨了:

图源:9S08LL16 Reference Manual : 13.4.1.4.2

血糖仪的工作原理是这样的:

血糖试纸利用前端的酶与血液中的糖份进行反应,产生uA级的电流,血糖仪就需要测量出这微小的电流,并根据试纸的特性计算出被测血液的血糖值。

要测量大小多少,就必须有标准。比如测量程度需要尺子,测量重量需要称等等。

而测量电流,实际上就是测量电压(电流流过电阻产生电压)。那么,要知道电压的多少,就必须有一个标准的电压,被测值和标准值相比,才能知道被测值到底有多大。


线路设计,碰到问题:

对于血糖测量电路来讲,也需要有一个基准电压(大约1V左右的标准电压)来给线路提供标准参考。

但是,我是用的是FREESCALE公司(现在已被恩智浦NXP收购)的型号为MC9S08LL16的MCU,它只有内部的电压基准,并没有引脚可以引出这个标准电压,也没有D/A(数字/模拟)模块可以输出标准电压。一般情况下就要使用外部电压基准元件,比如LM385,

图源:LM385 DATASHEET: Typical Application

可是,LM385的成本要1块多人民币,这对于要把硬件成本的目标压缩在20元RMB以内来说,是一个巨大的开销,难以承受。

真是一分钱难倒英雄汉,到底还有什么省钱的解决方案呢?为此我想了好几天,一直闷闷不乐。

发现捷径,大胆假设:

直到有一天,我正盯着初步的电路原理图看的时候,感觉是神仙附体,灵光乍现:

9S08LL16自带LCD驱动模块,而LCD驱动的时候,需要很多不同的电压,像我使用的1/4占空比,1/3偏压驱动的LCD,其工作波形是这样的:

图源:9S08LL16 Reference Manual : 13.4.1.4.2

原理是把LCD的驱动电压(VLL3)分成3份,其中VLL1等于1/3 VLL3,VLL2等于2/3 VLL3,而在这个设计里,使用了LCD驱动模块的内部升压泵,VLL3被设定成3V,所以VLL1等于1V。

而VLL1,VLL2,VLL3因为要加外接界电容,在MCU上是有引脚输出的:

图源:9S08LL16 Reference Manual :Figure 2-1

这样一来,VLL1如果稳定的话(并不需要准确,因为可以用程序使用内部电压基准进行校正),就可以作为基准电压来驱动外部线路了。

保险起见,进一步查Reference Manual,看看VLLx的生成机制,发现只有模块图:

图源:9S08LL16 Reference Manual :Figure 13-2.

没有再详细的介绍,那就只能实际测量了。

用万用表测得MCU工作时,VLL1是1.1V,每一片MCU有些差异,基本在0.1V以内,再用示波器看VLL1的输出波形,几乎是一条直线,没有波动。

我这时感觉发现了宝藏:就这样,能节省1块多人民币,基本硬件问题就解决了。


冗余处理,小心求证:

因为在Reference Manual上并没有详细的VLL1规格介绍,比如温漂,误差等参数。

为了防止这个到来的误差,我在血糖仪每次测量前,都用MCU的内部基准校正一下VLL1的值。每一次血糖测量只需要几秒钟,在这几秒钟以内,VLL1是不会出现波动的。

我用这个特性做了设计:

还是把LM385放在了设计里面,只是生产时不用焊接。

就这样,我考虑了所有的可能性,将所能想到的潜在风险都一一针对做了处理,设计完成以后试产了几百台,都没有问题,我也松了口气,开始让工厂批量生产,第一批出货5000台,第二第三批都是几万台,也排好了出货时间。


闯祸了:

本以为是高枕无忧的享受时间,结果工厂传来了噩耗:大约有3%~5%的血糖仪,生产出来测试不良。而出货时间迫在眉睫,没办法,连夜飞往工厂,开始寻找不良原因。

最后,发现不良的血糖仪,MCU所输出的VLL1是在波动的,

  • 有像这样的三角波:

  • 也有像这样很任性的波形:

它们的共同点是,平均值是正常的1.1V左右,只是波动很频繁。

没办法,因为急着出货,只能采用原来预留的备用方案:焊上LM385,让成本增加了1块多钱。


追根溯源:

同时,联系了供应商和freescale原厂,几天后得到了回复:

VLL1的设计并不是要给设计者用来做外部基准的,仅仅供LCD驱动使用,而LCD驱动看中的是平均电压,些许的波动不影响LCD显示效果,因此MCU出现少部分比例的波动不属于质量问题,而且原厂并不保证VLL1出现波动的百分比。

也就是说,试产时运气好,没有碰到不良,这次批量我们碰到的是3%~5%的不良率,而下一批货可能是80%~90%,这都是没有保证的。

没办法,因为头几批货出货时间都很急,也为了节约生产成本,所以所有的血糖仪都焊接了LM385,公司损失了一些利润,我也少拿了一些奖金,真的是心痛啊!!!

而在这期间,我也找了很多种标准电压的方案,最后还是决定升级MCU,使用9S08LL36,这一款有基准电压的输出,其精度和稳定度是厂家设计保证的,成本多了大约0.4RMB。

总结:

作为设计者,一定要熟练掌握元器件的特性,datasheet上所有的特性最好都要去了解到,并在设计时充分考虑冗余工作。

而在datasheet上没有提到的功能,最好不要轻易使用,因为这属于超范围应用,很可能就落在了原厂设计考量之外,其性能是没有办法保证的。

这是关乎到自己奖金的血淋淋的教训,希望广大的设计工程师都能引以为戒。


参考资料:
LM385 DATASHEET

9S08LL16 Reference Manual


本文由 @julian2013原创,图片引用自元件datasheet,或者亲自绘出,实际拍摄,未经允许谢绝转载,谢谢!

Posted using Partiko iOS


This page is synchronized from the post: 血淋淋的教训:研发过程中节约成本闯的祸

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×