亞洲資本網(wǎng) > 創(chuàng)業(yè) > 正文
全球熱點(diǎn)!被一個(gè)gpio口搞死的一天
2023-06-25 22:47:06來(lái)源: 面包芯語(yǔ)

今天是新項(xiàng)目調(diào)試的第一天。

我起的很早,起早的原因很簡(jiǎn)單,我家楠哥要我送他上學(xué),他說(shuō)爸爸沒(méi)有起到一個(gè)當(dāng)爸爸的責(zé)任,他也想讓爸爸送他上學(xué),然后我就送了。


【資料圖】

7點(diǎn)30起來(lái),8點(diǎn)出發(fā),然后回來(lái)看了一下熱火對(duì)陣掘金的比賽,下樓,拉開(kāi)我的「法拉利」車(chē)門(mén)啟動(dòng)發(fā)動(dòng)機(jī)奔赴那該死的充滿(mǎn)誘惑力的調(diào)試戰(zhàn)場(chǎng)。

老劉是一個(gè)經(jīng)驗(yàn)老道并且冷靜沉著的硬件選手,當(dāng)我們第一把開(kāi)機(jī)成功后,老劉微微一笑對(duì)我說(shuō)「發(fā)哥,你再看一下,我給你準(zhǔn)備幾個(gè)板子給你帶回去」。

之后的事情就很美妙了,不管我怎么修改我的軟件配置,我們的PHY始終不能驅(qū)動(dòng)成功,從內(nèi)核日志里面就是讀不到PHY的ID地址。

我不死心,我覺(jué)得應(yīng)該不是軟件的問(wèn)題,然后找老劉討論,我說(shuō)「要不我們測(cè)量下波形吧,這里讀出來(lái)的ID是不對(duì)的」。

老劉說(shuō)「你現(xiàn)在設(shè)置的PHY ID是多少?是不是跟我們硬件上的配置不一樣」。

因?yàn)橹罢{(diào)試過(guò)PHY芯片,我說(shuō)「開(kāi)機(jī)的時(shí)候,驅(qū)動(dòng)會(huì)循環(huán)掃描PHY的ID,只要PHY ID 在我們掃描的范圍內(nèi),就肯定是可以?huà)呙璩鰜?lái)」。

然后我找了一個(gè)帥哥,這個(gè)帥哥是一個(gè)真正的帥哥,因?yàn)樗拿掷锩嬗幸粋€(gè)特別的帥字。

我找他的原因是因?yàn)樗掷镉幸粋€(gè)硬件設(shè)備,那個(gè)硬件設(shè)備的PHY芯片和我們正在調(diào)試的硬件設(shè)備是一樣的,我想用那個(gè)設(shè)備來(lái)看看內(nèi)核的開(kāi)機(jī)日志。

從這個(gè)日志里面看到的是可以讀到PHY的ID的。

之前在一個(gè)文章里面說(shuō)過(guò),PHY的作用就像I2S和功放芯片一樣。所以如果PHY芯片驅(qū)動(dòng)不正常,我之后的switch芯片也不能正常調(diào)試,是讓我挺頭痛的。

我跟老劉說(shuō),我們把這個(gè)板子上的MDC和MDIO飛線(xiàn)到那個(gè)可以的板子上讀下PHY ID吧,然后又是搗鼓了好長(zhǎng)一會(huì)時(shí)間。

讀到的ID也不正確,但是有數(shù)據(jù)出來(lái)了。

上午的時(shí)間過(guò)得很快,反復(fù)測(cè)試了好長(zhǎng)時(shí)間,有一個(gè)帥哥就叫我去吃午飯了。

下午1點(diǎn)30開(kāi)始搞事情。

老劉剛用上了示波器,剛開(kāi)始測(cè)量MDC和MDIO的信號(hào),老劉跟我說(shuō)「為什么MDC的信號(hào)高電平那么低?」

然后我又開(kāi)始搗鼓代碼,我從dts編譯生成的tmp文件里面不斷的查,把可能被復(fù)用的地方都注釋掉,然后再重新編譯出來(lái)燒錄進(jìn)去,因?yàn)橛布悬c(diǎn)奇怪的問(wèn)題,不能直接進(jìn)入bootloader 模式燒錄,每次需要把編譯出來(lái)的boot.img打包成整個(gè)update.img再燒錄,這個(gè)過(guò)程消耗了我非常久的時(shí)間。

然后發(fā)現(xiàn)無(wú)論怎么修改,MDC的電平總是上不去,我就干脆不讓PHY驅(qū)動(dòng)控制這個(gè)GPIO口,自己寫(xiě)了一個(gè)sys文件系統(tǒng)的驅(qū)動(dòng)來(lái)控制,可以用指令拉高拉低的「這個(gè)是我自己的調(diào)試驅(qū)動(dòng),正常用sysfs下的GPIO也可以」,測(cè)試一輪后發(fā)現(xiàn)還是有問(wèn)題。

這個(gè)時(shí)候老劉說(shuō)「可能我們這個(gè)示波器有問(wèn)題,我要換一個(gè)牛逼點(diǎn)點(diǎn)示波器」。

過(guò)了一會(huì),老劉搬來(lái)一個(gè)很大的示波器,這個(gè)示波器看起來(lái)很牛逼,探頭也很新,屏幕也很大,掃描的頻率也更高。

不過(guò)遺憾的是,那個(gè)GPIO口的電平還是上不去。

不過(guò)這個(gè)時(shí)候,老劉說(shuō),臥槽,好像這兩個(gè)地方反了。

本來(lái)是MDC連接GPIO14,MDIO連接GPIO15的,老劉的原理圖上把MDC接到了GPIO15上,MDIO連接到了GPIO14上。

當(dāng)然,我們想到的第一個(gè)辦法就是不要修改硬件,直接通過(guò)修改軟件配置把這兩個(gè)GPIO口換一下。

芯片原廠給出來(lái)的調(diào)試?yán)锩嬉矊?xiě)了幾個(gè)重要的調(diào)試手段。

然后就開(kāi)始修改GPIO口的映射,結(jié)果令人遺憾的還是不成功。

這個(gè)時(shí)候應(yīng)該去看看芯片的GPIO功能手冊(cè)的,但是時(shí)間比較晚了,老劉果斷找了一個(gè)板子把兩個(gè)GPIO 給調(diào)換了下,這調(diào)換可是廢九牛二虎之力,因?yàn)楫?dāng)時(shí)設(shè)計(jì)的時(shí)候就沒(méi)有想過(guò)會(huì)出問(wèn)題,里面有一個(gè)過(guò)孔,需要把過(guò)孔的部分給斷開(kāi)后再連接起來(lái)。

然后就繼續(xù)整。

老劉這個(gè)時(shí)候看起來(lái)已經(jīng)著急了,這樣的一個(gè)技術(shù)專(zhuān)家,被這樣的一個(gè)GPIO口給調(diào)戲了一整天,我這個(gè)時(shí)候還記得早上他說(shuō)的那句「發(fā)哥,這個(gè)是小問(wèn)題,今天一定能全部調(diào)通」。

我下樓去給老劉買(mǎi)水,我擔(dān)心一直在他旁邊他更著急了,10幾分鐘后回來(lái),老劉把東西幾乎整得差不多了,剛才不能開(kāi)機(jī)的板子也修理好了。

然后我們開(kāi)機(jī),我繼續(xù)看了下PHY ID ,還是沒(méi)有讀取出來(lái)。

我們繼續(xù)拿了那個(gè)最貴的示波器看了下,這個(gè)時(shí)候波形什么的都已經(jīng)是正常的,幅值也正確了。

然后,這個(gè)時(shí)候我想到了復(fù)位時(shí)序。

我說(shuō)等我修改下,我把復(fù)位時(shí)序加長(zhǎng)了一些,然后開(kāi)機(jī),終于看到了那個(gè)該死的PHY ID。

因?yàn)槊總€(gè)PHY芯片對(duì)復(fù)位的時(shí)間不同

我們用的這個(gè)RTL8201芯片的復(fù)位時(shí)序要求如下:

如果那個(gè)低電平小于10ms,那是不行的。

這個(gè)時(shí)候,已經(jīng)是晚上11點(diǎn)30了,幸好公司離我家很近,這個(gè)時(shí)候的晚風(fēng)吹起來(lái)也夠舒服。

不知道明天又會(huì)遇到怎樣的問(wèn)題,不過(guò)我相信老劉都能搞定的,畢竟有人說(shuō)過(guò),萬(wàn)物之中,希望至美。

關(guān)鍵詞:

專(zhuān)題新聞
  • 視焦點(diǎn)訊!一線(xiàn)城市房地產(chǎn)投資吸引力依然領(lǐng)先
  • 世界新動(dòng)態(tài):河北三河:新農(nóng)人用葡萄產(chǎn)業(yè)托起興農(nóng)夢(mèng)想
  • 粽子平均毛利率約40% 新老品牌把握端午商機(jī) 動(dòng)態(tài)焦點(diǎn)
  • iPhone成日本手機(jī)銷(xiāo)量王:55%市場(chǎng)份額、10天賺夠買(mǎi)iPhone 14
  • 精選!以書(shū)為媒,溝通世界
  • 【大美中國(guó)】荒漠化治理的“世界樣板”|快播報(bào)
最近更新

京ICP備2021034106號(hào)-51

Copyright © 2011-2020  亞洲資本網(wǎng)   All Rights Reserved. 聯(lián)系網(wǎng)站:55 16 53 8 @qq.com