作為電子研發(fā)的老兵,面對(duì)各種紛繁復(fù)雜的問題,加班加點(diǎn)是家常便飯,絞盡腦汁甚至抓狂是常態(tài)。經(jīng)常發(fā)現(xiàn)當(dāng)項(xiàng)目進(jìn)展到你想砸掉設(shè)備的時(shí)候,再堅(jiān)持一步你就成功了。但是有一個(gè)項(xiàng)目卻因?yàn)閳?jiān)持,到現(xiàn)在每每想起我都心痛郁悶不已。
2006年,我在上海中磐信息科技有限公司從事動(dòng)態(tài)令牌的研發(fā)生產(chǎn)工作。公司是一家純軟件公司,在我入職前沒有硬件部門。作為硬件部經(jīng)理,負(fù)責(zé)創(chuàng)建團(tuán)隊(duì)、樣機(jī)研發(fā)和后續(xù)大規(guī)模生產(chǎn)。工作壓力很大,但是工作氛圍很好,同事們相處很愉快。
當(dāng)時(shí)這個(gè)動(dòng)態(tài)令牌的技術(shù)正在快速在各行業(yè)推廣應(yīng)用,開始主要是用于保障跨國(guó)企業(yè)的網(wǎng)絡(luò)登陸安全,2002年就是通過NS的FAE首次接觸到這個(gè)東西,該技術(shù)的先行者是RSA,當(dāng)時(shí)NS就是RSA定制的。后來隨著銀行的賬戶密碼經(jīng)常被盜,各大銀行也開始推廣動(dòng)態(tài)密碼器;那幾年網(wǎng)絡(luò)游戲超級(jí)火爆,隨之而來的是游戲賬號(hào)安全問題,并因盜號(hào)而發(fā)生過幾起比較轟動(dòng)的訴訟,網(wǎng)游公司開始陸續(xù)采用動(dòng)態(tài)令牌來保障游戲賬號(hào)的安全。
當(dāng)時(shí)國(guó)內(nèi)從事動(dòng)態(tài)密碼器研發(fā)生產(chǎn)的公司并不多,而能擁有自主知識(shí)產(chǎn)權(quán)的公司更少。公司創(chuàng)始人是劍橋大學(xué)畢業(yè)歸國(guó)的海歸,擁有基于SHA256算法的動(dòng)態(tài)密碼的核心專利技術(shù),而SHA256在當(dāng)時(shí)比其他的公司的技術(shù)整整領(lǐng)先一代;公司的投資人是美國(guó)IDG和5173。
我當(dāng)時(shí)的主要工作就是采用合適的單片機(jī),實(shí)現(xiàn)基于SHA256算法的動(dòng)態(tài)密碼器。SHA256算法相當(dāng)復(fù)雜,有大量的矩陣和回歸迭代運(yùn)算,對(duì)于單片機(jī)實(shí)現(xiàn)基于時(shí)間的動(dòng)態(tài)令牌來說存在以下難點(diǎn):
1、 較大RAM空間;
2、 高速計(jì)算能力;
3、 超低功耗;
4、 超高可靠性;
5、 超低價(jià)格;
由于以上各項(xiàng)之間存在沖突,同時(shí)滿足這些相互矛盾的需求其實(shí)非常困難。
我先在PC機(jī)上用C語言編程實(shí)現(xiàn)算法,仿真后發(fā)現(xiàn)RAM的需求最精簡(jiǎn)最少也超過2KB,如果移植到單片機(jī)上加上各種初始化和控制代碼,RAM的需求接近3KB,2006年的時(shí)候能有3KB的RAM的單片機(jī)極為稀少而且價(jià)格極高。不得已,我選擇用匯編語言編程,綜合運(yùn)用很多編程技巧,如采用程序空間換RAM空間,多次迭代的RAM動(dòng)態(tài)分配回收等,最終花費(fèi)了一周時(shí)間,將RAM需求降到409Byte,因當(dāng)時(shí)已經(jīng)有不少單片機(jī)的RAM空間達(dá)到512Byte,徹底解決了RAM空間不足的問題。
硬件上采用激光焊接鋰電池以及晶振匹配和整體固定,軟件上由于采用的是匯編語言,計(jì)算效率和可靠性遠(yuǎn)超C語言編程;采用了深度睡眠等技術(shù)平均功耗降到3.4uA,一塊CR2032的電池可以工作超過3年,達(dá)到了超低功耗的要求。
當(dāng)時(shí)有三款滿足技術(shù)要求的單片機(jī),分別是TI和***某公司的8位機(jī)、富士通的16位機(jī),由于超低價(jià)格的要求,我們選擇了***的單片機(jī)。
很快樣機(jī)出來了,功能和性能測(cè)試OK,1K的樣品生產(chǎn)出來了功能和性能都OK,但是經(jīng)過一段時(shí)間后發(fā)現(xiàn)存在一定比例的樣機(jī)功耗很大,電池很快就沒有電了。拆開測(cè)試,未見異常,換裝電池后功能正常;期間懷疑過晶振停振、電池松動(dòng)、靜電干擾、電路板異常、軟件跑飛、芯片不良等;多次請(qǐng)供應(yīng)商及代理商的技術(shù)人員一起分析,甚至寄實(shí)物到***請(qǐng)?jiān)瓘S分析,結(jié)論均是未見異常。
在測(cè)試分析和不懈堅(jiān)持中,我又分別將代碼成功移植到TI和富士通的單片機(jī),但是這時(shí)國(guó)內(nèi)做動(dòng)態(tài)密碼器的廠商開始多起來,他們采用的都是上一代簡(jiǎn)單的加密算法,雖然安全性不夠,但對(duì)單片機(jī)要求很低,而且外觀上看不出任何差異。在成本的壓力之下,新的單片機(jī)導(dǎo)入工作在公司層面一直未能真正進(jìn)行,生產(chǎn)訂單開始源源不斷,又掩膜定制50K的Dice片。
堅(jiān)持了很久,通過對(duì)500套樣品的排查,終于發(fā)現(xiàn)是因?yàn)樵搯纹瑱C(jī)的內(nèi)在BUG,P64管腳IO口寄存器配置會(huì)在休眠期間發(fā)生反轉(zhuǎn),高低電平一旦反轉(zhuǎn)后就開始快速放電。
問題查清了,但是對(duì)公司來說損失已經(jīng)非常巨大,包括客戶流失和口碑等。這是我工作以來遇到的最難復(fù)現(xiàn)、最難模擬、最難分析的問題,也是對(duì)公司造成影響最巨大的問題。
教訓(xùn)主要有以下幾點(diǎn):
1、樣機(jī)開發(fā)階段過于考慮低成本方案往往會(huì)導(dǎo)致災(zāi)難性后果,優(yōu)先選擇口碑好的大品牌產(chǎn)品完成技術(shù)驗(yàn)證和生產(chǎn)銷售,然后逐步降本;
2、如果硬件問題沒有得到解決,一段時(shí)間后還沒有進(jìn)展需要及時(shí)止損,切換不同方案,這時(shí)一味的堅(jiān)持往往付出更加慘痛的代價(jià);
3、表面上的硬件問題有時(shí)其實(shí)是軟件配置導(dǎo)致,但深層次原因可能還是硬件不良,遇到這種極難復(fù)現(xiàn)的問題尤其要當(dāng)心;
4、不要迷信芯片公司,所謂原廠的技術(shù)支持其實(shí)是有限的,所謂的分析報(bào)告有時(shí)無非是一個(gè)免責(zé)的托詞,而且這種深層次的問題很難追責(zé)。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635408 -
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136863
原文標(biāo)題:20年經(jīng)驗(yàn)的電子總工程師回憶實(shí)錄之低成本方案導(dǎo)致的災(zāi)難性后果
文章出處:【微信號(hào):eedesigner,微信公眾號(hào):eeDesigner】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論