|
以前用TMS320DM3730做過(guò)設(shè)計(jì),重新做了一個(gè)方案。系統(tǒng)使用TF卡啟動(dòng)。X-Loader和Uboot及Linux內(nèi)核都正常啟動(dòng),但文件系統(tǒng)加載的時(shí)候總是報(bào)無(wú)法識(shí)別文件系統(tǒng)。
看前面的文件系統(tǒng)分區(qū)已經(jīng)識(shí)別到,但加載時(shí)就說(shuō)不支持的文件系統(tǒng)。
查看內(nèi)核配置,確認(rèn)是支持的文件系統(tǒng),而且,相同的TF卡放到原設(shè)計(jì)平臺(tái)上就能正常加載……對(duì)比了核心系統(tǒng)和TF卡的原理圖,沒(méi)有錯(cuò)誤。
后來(lái)想到加載文件系統(tǒng)的時(shí)候或許讀寫速度會(huì)加快,導(dǎo)致數(shù)據(jù)錯(cuò)誤。加上示波器,的確看在加載文件系統(tǒng)的時(shí)候速度提高了幾倍,但從信號(hào)看數(shù)據(jù)應(yīng)當(dāng)算正常,不至于出錯(cuò)……于是在TF卡附近加了幾顆瓷片電容,發(fā)現(xiàn)問(wèn)題依舊。
然后就用笨方法了,從軟件入手。查L(zhǎng)INUX內(nèi)核!經(jīng)過(guò)兩三天的跟蹤,終于發(fā)現(xiàn)故障碼居然提示“TF卡為只讀”。再細(xì)看LINUX啟動(dòng)信息,居然在TF卡啟動(dòng)后有一個(gè)提示“(RO)”。瞬間木掉了,這兩三天跟代碼,LINUX啟動(dòng)信息看了N多遍,居然沒(méi)注意到它……
TF卡可以看成是SD卡的縮小版,但卻沒(méi)有寫保護(hù)引腳。
因?yàn)橹按a是支持SD卡的,所以有一個(gè)寫保護(hù)狀態(tài)的讀取。原先工作正常的設(shè)計(jì)在這個(gè)讀取狀態(tài)的管腳有一段3厘米的PCB走線,連接到一個(gè)插座,但插座上的腳是懸空的。而新的方案里去掉了這個(gè)插座,同時(shí)刪掉了這段“懸空線”。然后主芯片在讀取這個(gè)信號(hào)狀態(tài)的時(shí)候就讀到兩個(gè)不同的值。有“懸空線”的板子上認(rèn)為讀保護(hù)無(wú)效,而新方案里認(rèn)為讀保護(hù)有效。把內(nèi)核里相關(guān)代碼改一下,文件系統(tǒng)終于正常掛載了!
這個(gè)故障的定位過(guò)程我做了簡(jiǎn)寫,實(shí)際過(guò)程更為曲折。3cm的一段PCB線差點(diǎn)導(dǎo)致新方案流產(chǎn)……
現(xiàn)在處理器的速度越來(lái)越高,信號(hào)電平也越來(lái)越低,管腳阻抗也非常高,管腳外連的引線接收到的細(xì)小干擾或?qū)苣_負(fù)載的改變,都可能導(dǎo)致異常。在處理輸入管腳的時(shí)候,即便管腳內(nèi)部有上拉或下拉,也需要格外注意,盡量不要留多余走線,重要輸入信號(hào)要加上拉或下拉電阻。
|
|