來源:學(xué)習(xí)web前端 發(fā)布時(shí)間:2019-03-30 17:10:29 閱讀量:1313
回想起這個(gè)bug,仍然讓我有些痛苦。作為一個(gè)程序員,在發(fā)現(xiàn)bug時(shí),你學(xué)會(huì)了首先在自己代碼中找問題,或許在測試一萬次之后,你會(huì)把問題歸咎于編譯器。只有在這所有的都不起作用之后,你才會(huì)把問題歸咎于硬件。
這是我遭遇一個(gè)硬件bug的故事。
拋開別的不說,我曾為《Crash Bandicoot》寫存儲(chǔ)卡(讀寫)代碼。對(duì)于一個(gè)自大的游戲程序員,這就像是在公園里散步一樣輕松愉快,我認(rèn)為只要幾天就寫完了。我中止調(diào)試六個(gè)禮拜。在此期間我做一些其他的事情,但我一直回來處理這個(gè)bug——幾天內(nèi)每天幾個(gè)小時(shí)。這個(gè)bug實(shí)在煩人。
那個(gè)工程師給我打電話了,他用著他的爛英語,我用著我更爛的日語,我們爭論一會(huì)。我最后說:“我給你一個(gè)30行的測試程序,讓你在動(dòng)手柄的時(shí)候能夠 出現(xiàn)這問題。”他答應(yīng)了。他向我保證,這是浪費(fèi)時(shí)間,而他正在一個(gè)新項(xiàng)目上很忙,但因?yàn)槲覀兪荢ony很重要的開發(fā)者,他會(huì)試的。
第二天晚上(我們?cè)诼迳即?,而他在東京,所以對(duì)于我來說是晚上而他是到了第二天),他給我打電話,不好意思的向我道歉。這是個(gè)硬件問題。
我還是沒有完全搞清楚問題到底在哪,但是我的印象中,從Sony總部的反饋聽到的是,如果將可編程計(jì)時(shí)器設(shè)置到足夠高的時(shí)鐘頻率,會(huì)影響到主板上時(shí) 鐘晶振附近的一些東西。這些東西之一就是存儲(chǔ)卡的波特率控制器,同時(shí)也設(shè)置手柄的波特率。我不是搞硬件的,所以對(duì)于細(xì)節(jié)我相當(dāng)模糊。
但是主旨是主板上兩個(gè)獨(dú)立部分的串?dāng)_,以及手柄接口和存儲(chǔ)卡接口數(shù)據(jù)發(fā)送的結(jié)合在1kHz的時(shí)鐘頻率下會(huì)導(dǎo)致丟位,從而數(shù)據(jù)丟失,以致卡損壞。
這是我全部編程生涯中,唯一一次因?yàn)榱孔恿W(xué)debug的問題。