依稀记得那日,一批设备集体上演“开机即关机”的摆烂行为。硬件组抄起示波器一顿操作,测完时钟测电源,发现全都没毛病。隔壁同款设备却在旁边嘚瑟:“看,我活得好好的!”。
碎碎语:
“测到这地步,是不是就觉得物料不会用错了吧?嘿嘿,其实这么对比下来还真没问题,但没用错料就代表没问题?天真!这就像你买了一包方便面,调料包没丢,但煮出来像洗脚水——问题可能出在水质啊亲!”
于是不得不用出看家本领——“拆家式维修法”:看哪里不爽或者觉得不正常,就动哪里;拆到只剩最小系统电路,设备依然稳如老狗——稳如老狗地不开机。
碎碎语:
“虽然都说工程师像医生一样,来解决设备的疑难杂症;但幸好不是真医生,不然病人昏迷不醒,然后随便拆解,想想就觉得恐怖!当然前期多踩点坑也是好事,都是为了练就一双火眼金睛,一步到位啦!”
事实上,到这地步纯硬件手段确实黔驴技穷了,必须由软件组逐一调试。当然难得不是调试,而是要让软件相信代码有问题,于是一番拉扯,终于发现设备卡死在uart初始化,屏蔽之后才能开机。软件组当然不服,因为之前从未出过,于是翻找物料信息、重新拆板、辅之以代码调试等等,结果仍无所获。所谓踏破铁鞋无觅处,又回到uart的问题上,因为直连的只有一个CH340,换成老的就能开机。
于是老老实实又测了一遍发现:新版CH340的TXD脚死活躺平(低电平),而老版却精神抖擞(高电平)。于是多种手段查证,发现两款确有不同,新版升级迭代了:
-
TXD脚睡眠模式切输入(装死模式):
“我睡了,别叫我,除非你喊我起来嗨!”
-
防倒灌设计(5V耐压):
“别想用外部电源灌我!我自闭了!”
真是一段奇妙的孽缘——软件:“开机必须等TXD高电平!”;新版CH340:“不,我要先睡到自然醒!”
教训总结:
-
硬件组的“三板斧”不够用了:
测信号?拆外设?换芯片?不如直接给芯片唱《Wake Me Up When September Ends》。
-
软件组的“代码信仰”崩塌了:
“代码没问题” ≈ “我手机没问题,是基站不行”。
-
芯片厂商的“升级惊喜”:
芯片功能升级,就像女朋友换发型——你以为更美了,结果她问:“你猜我剪头发是为了谁?”