邮件里把各个模块相关的软硬件文档以及硬件支持人员都详细列好了表格,因为太长,即使邮件头部有红标,很多人都懒得仔细看,遇到问题还是习惯性地去问组长。
但是组长听完问题,都是头也不抬地告诉他们,去看红标邮件,甚至规定了他们解决这个问题的时间,到时查看。
新人们敢怒不敢言,他们的态度大体上分三种:
有的人仔细看了,按图索骥,从文档中顺利找到问题的答案,同时发现原来文档里几乎什么都有,通过看文档自行解决问题的热情也提高了。
有的人走马观花地看了,还是没办法解决问题,等韩邵晨查看进度的时候,两眼一瞪说没找到解决方案。韩邵晨当面翻出邮件,指着列表里的文档让他打开,再从文档里两三下就找到了解答相关问题的技术点。因为韩邵晨一向不说废话,面无表情,连委婉表达都不会,直截了当的态度让稍微好点面子的人也知道不好意思。
个别油盐不进的人,那就只能单独对待了。
终于韩邵晨不再那么频繁地被打扰了。而这些新人面对这种改变的态度,基本上也决定了他们将来工作能达到的高度。
第一种人,是愿意钻研技术的骨干,第二种人,是还能挽救一下的员工,最后一种人,将来加入末位淘汰的裁员大军几乎是板上钉钉的了。
这些都是林宇秘密教导,韩邵晨默默学习处理的结果,等他不再焦虑这些日常事务时,这才能专注于USB Type-C的调试。
作者有话要说:
本文主要时间点在几年前,所以有些技术在目前来看已经落后了,成长就要伴随着工作,我已经努力精简比较专业的内容了,哈哈
第 29 章
USB Type-C目前使用的配套软件调试代码是韩邵晨在硬件准备好之前,根据协议原文,再参照Linux源代码中相关的框架代码写出来的。
通俗来讲,当带有USB接口的设备插到电脑上时,电脑通过USB插座上的电压变化,发现有USB设备接入,会和设备进行一系初始化数据通讯,之后再根据设备类型进行对应格式的数据传输。
李志刚做出来的这个硬件逻辑,是模拟一个带有USB Type-C接口的设备,把硬件逻辑下载到FPGA调试板上,调试板本身和电脑通过串口连接,用来打印调试信息,再连上一根USB Type-C数据线接到电脑的USB3.0接口上,接入USB时电脑发出询问,但是总是收不到设备端正确的反馈信号,最关键的USB设备描述符获取不到,那就压根认不出这是个USB Type-C的设备,身份都不能认证,那就没办法进行下一步的数据传输。
李志刚还是有点怀疑韩邵晨的代码问题,韩邵晨在反复对照协议,甚至把硬件验证代码拿过来对比之后,确认自己的代码起码在前期初始化流程上没问题,不应该存在无法响应的情况。
还好串口的前例摆在那,李志刚也知道韩邵晨的专业能力一向过硬,没敢把责任全推到他身上。但是这个问题卡了几天,再卡下去后面的进度很难保证,硬件组长也很关注这个问题,限定他一周内必须解决,眼看着时间就要到了,李志刚只能跟韩邵晨商量通宵调试。
韩邵晨没有犹豫地答应了。
之前忙的时候,韩邵晨最晚加班到两三点,回去稍微休息一下,早上也是按时上班的,通宵还真没试过。
林宇惯常十二点的问候微信,收到了韩邵晨需要通宵的消息。
尽管他自己也通宵过不少次,但还是心疼韩邵晨忙成这样,直接打了个电话:“晨儿,怎么这么忙,晚饭好好吃了吗,有给你们准备加班餐没?”
“嗯,进度慢了,需要赶一下。晚饭吃了,项目组有买一些零食。”尽管已经是深夜,韩邵晨还是一板一眼地有问必答,丝毫没有错漏。
“那就好,半夜要是实在太困,你就稍微睡一会儿,你在公司里放午休床没?”林宇不放心地问。
“有的。”韩邵晨在致力于像一个普通人那样工作的道路上,一点儿也没有跑偏。软硬件工程师人手必备的午休床或者地垫,即使不用也要随大流一起买上。
“多喝点水啊,加班干活心浮气躁,最容易缺水。”林宇接着叮嘱。
“嗯,”韩邵晨答应着,却还是补了一句,“我没有心浮气躁。”
“哈哈,好嘛,你最淡定了。”林宇笑了出来,但是没笑两下,声音有些低沉下来,“我好心疼你啊,这么忙,我都不能在你身边照顾你。”
韩邵晨面对恋人这种状态的关怀,着实有些不会应对,沉默了下才道:“没事的,很晚了,你先休息吧。”又想了想,还学着安抚对方,“说不定很快问题就解决了,你也不用太担心。”
“嗯,你那么厉害,肯定是有人拖后腿才要通宵的,”林宇理所当然地这样认为,虽然差不多没错啦,“要是别人的问题,你就偷偷懒多休息一会儿。”
韩邵晨看看正等着他加载软件调试的李志刚,摇了摇头,“我要工作了,晚安。”
“好好好,不打扰你了,晚安。”林宇叹了口气挂上电话。
李志刚有些八卦地盯着韩邵晨笑:“韩工,你这是给老婆报备吗?”
韩邵晨一怔,随即摇了摇头:“我没结婚。”
“哦哦,那就是女朋友咯。”李志刚随口说着,让开了点位置,“我刚才优化一下线路,看看这一版能不能通过。”
韩邵晨没有理会李志刚不走心的八卦,专心开始调试。
USB设备端软件要做的事情其实不多,基本上都是硬件自动响应的,但是李志刚始终认为验证已经通过的硬件代码没问题,总希望通过软件调试来解决无法响应的bug。
在韩邵晨花费时间制作了符号表,加载了函数信息,用仿真器进行了复杂的单步调试之后,终于确认是软件在等待硬件信号时卡住,命令发出去之后石沉大海。
李志刚再自信也没办法说是软件有问题,只能苦着脸去看硬件代码,模拟流程进行验证,挨个数据波形抓取下来看。
韩邵晨也没闲着,坐在一边帮他看波形,一串数据看下来之后,确实没发现哪里有问题,突然问:“时钟信号拉出来没?”
李志刚楞了楞,“没单独拉出来,没时钟设备也不会工作啊,那个应该没问题。”
“再跑一版验证,时钟波形也拉出来。”韩邵晨用不容置疑的语气说。
李志刚虽然不以为然,但是反正都通宵了,脑子都木木的,有人指挥就照做吧。
等时钟的方波放大再放大,两个人一起发现了问题所在。原本时钟方波应该稳定的一高一低电平交错有序的,但是他们看到的方波每间隔一段时间,两个高电平连在了一起。这就解释了设备虽然能上电工作,但是时钟线都不对,数据线上的数据即使没问题,综合起来返回的数据也不会正确,难怪得不到正确的设备描述符。
李志刚一脸“卧槽”,也顾不上没面子了,抹了一把脸问韩邵晨:“你是怎么想到的啊,韩工?你不是搞软件的么?”
韩邵晨有些莫名其妙:“搞软件的就不能稍微懂点硬件了么?我只是想让你把波形抓得全面一些。”
“大佬,真是大佬。难怪我之前说我没弄过USB担心搞不定的时候,组长说跟韩工合作,没有搞不定的东西呢。”李志刚有些服气的,“我还总觉得软件有问题,真是不好意思。我现在才明白组长怎么会那么说,韩工你是真牛啊。”
韩邵晨有些无语,只是点了点屏幕:“发现问题不代表解决问题了,还是看看哪里出错导致时钟混乱。”
李志刚挠挠头,“知道原因离解决问题就不远了嘛,韩工跟我一起看看吧,反正硬件语言你也懂,干坐着也是等,软件又没什么问题。”
这话说的其实并不合适,既然确认是硬件问题,韩邵晨去睡一会儿都是应该的,又怎么会干坐着。但是韩邵晨也想不到这么多,而且李志刚毛毛躁躁的工作风格,谁知道让他一个人查得查到什么时候去,韩邵晨也没拒绝,两个人一起盯着屏幕看起了硬件代码。
三点多的时候,还是两人打开了硬件文档,一行一行互相对比,这才发现了是硬件初始化部分少配置了一bit,等改过来之后,终于顺利通过。
看到电脑上串口打印出设备描述符,USB Type-C Device的字样出现时,李志刚忍不住欢呼起来,反正实验室空荡荡,也不怕吵到别人。
韩邵晨也被这个年轻人的情绪感染到,尽管大脑已经疲惫不堪,心情却是难得地轻松起来。
一看表已经五点了,李志刚伸了个懒腰说:“搞定了,我写个邮件然后回家睡觉去了,醒了再过来,谢谢韩工了,要不你先回?”
韩邵晨点点头:“那我走了。”
等强打精神到了家,东方已经泛起了白,韩邵晨稍微洗漱了下,躺到床上看看手机,这才发现林宇临睡前还给他发了消息:“要是问题解决了跟我说一声啊,不管是几点都行,还有你可别那么傻通宵完了继续上班,跟领导说一声,要回家休息的。”
虽然有点纳闷他解不解决问题和林宇有什么关系,但还是老实回复:“解决了,刚到家躺下。”