|
這星期2接到老大分配下來的項(xiàng)目任務(wù),一聽是長按鍵開機(jī),當(dāng)時(shí)就想好像就只要一個(gè)gpio設(shè)置為輸入而已,貌似沒有什么的,就興沖沖的接了下來。當(dāng)老大細(xì)說:“長按鍵開機(jī)必須得區(qū)分復(fù)位按鍵和power按鍵”當(dāng)時(shí)我就懵了,這怎么區(qū)分嘛,復(fù)位了還能操作?而且復(fù)位按鍵怎么讀到呢?老大貌似看出了我的難題,提示了下說:“復(fù)位和power開機(jī)的區(qū)別在于復(fù)位僅僅是對cpu復(fù)位,這就給了我們可乘之機(jī)。板子上有個(gè)iic設(shè)備,可以利用他!
回到工位,哇,A8核哦。不懂,看了半天還是不懂。哎,沒辦法,不懂也得搞丫。硬著頭皮去硬件部叫硬件工程師焊了幾個(gè)重要的gpio,自己慢慢試驗(yàn)唄。移植了半天的lk終于可以啟動內(nèi)核了。興奮了一會會,慶幸自己以前做過uboot方面的東西,而且對arm啟動流程還很熟悉。終于可以調(diào)試i2c了。從內(nèi)核代碼里,找到了alc5621的驅(qū)動,二話不說趕緊摘下了,哇,1000多行代碼丫,而且還用到了總線操作。找啊找啊,終于找到了初始化alc5621的核心代碼。移植到了lk代碼里,上電下載,失!什么情況?又回到驅(qū)動研究了好半天,沒辦法,找老大。老大看會說alc5621芯片沒工作。喔?示波器一測還是真的哦,趕緊又看alc5621的datasheet,原來alc5621工作要mclk。怎么產(chǎn)生mclk?問老大說,用audio系統(tǒng)的spi。餓,怎么有多出個(gè)audio了呢?沒辦法,又看,找到驅(qū)動代碼,移植了下,竟然一下成功了。哈哈,MCLK有了,設(shè)備該工作了吧。tcc8803啟動操作的時(shí)候還是沒有什么東西?什么情況?示波器測試把管腳當(dāng)gpio的情況,成功。然后代碼跟蹤,找到i2c初始化,一不小心被我發(fā)現(xiàn)了clock,什么情況?1.2G?移植的代碼是tcc8902的,才800M。時(shí)鐘一改,呵呵!工作了,開心。但是數(shù)據(jù)讀取就是不對,用示波器仔細(xì)分析iic的數(shù)據(jù),發(fā)現(xiàn)有很大干擾。找硬件工程師,一起調(diào)試,最終還是搞完了。
小小的犒勞一下自己,哈哈。
|
|