1、先前移植好的uboot由于是從uboot官網(wǎng)下載一步一步改出來(lái)的,所以第一個(gè)問題會(huì)發(fā)現(xiàn)無(wú)法保存ENV(通過測(cè)試setenv和saveenv bootdelay參數(shù)即可知道,saveenv失敗,不過MMC0還是能識(shí)別到的),另一個(gè)問題是沒有把DM9000網(wǎng)卡驅(qū)動(dòng)做進(jìn)去(傳輸kernel得用tftp服務(wù),后面移植根文件系統(tǒng)大概率需要使用到nfs,用于邊改邊看掛載點(diǎn)的變化,不過這點(diǎn)就需要開啟內(nèi)核的nfs支持才可以了反倒和uboot關(guān)系不太大),其余問題像需要修改默認(rèn)400MHz時(shí)鐘至1000MHz、沒有打印各時(shí)鐘頻率具體信息等,這次針對(duì)的是第一個(gè)問題,主要完成MMC驅(qū)動(dòng)移植并能實(shí)現(xiàn)ENV參數(shù)保存(后面移植發(fā)現(xiàn)還需要做多一步保存ENV到特定扇區(qū)17,這個(gè)相對(duì)簡(jiǎn)單不贅述),芯片平臺(tái)為S5PV210,uboot源碼是2012.10版本的,移植用到的源文件譬如mmc.c、s3c_hsmmc.c等取自三星android_uboot_smdkv210.tar.bz2(其實(shí)可以直接從三星評(píng)估板所用uboot開始而不必從裸uboot開始,但是由于前面學(xué)習(xí)過程已經(jīng)從裸uboot開始并得到了半成品所以選擇補(bǔ)充未完成功能然后繼續(xù)使用)。
首先是第一次移植,結(jié)果是沒有移植成功,總結(jié)來(lái)看,問題出在,一次把多個(gè)移植步驟都做了(因?yàn)榫W(wǎng)上參考的文章大多數(shù)是一些網(wǎng)友已經(jīng)移植過后的總結(jié),所以他們的文章往往會(huì)告訴你后續(xù)步驟,所以自然而然地多做了),導(dǎo)致出的錯(cuò)誤多,并且有些錯(cuò)誤屬于連環(huán)扣,其實(shí)可以不用處理,但是必須要找到真正的錯(cuò)誤點(diǎn)入手改正,其余相連的錯(cuò)誤也能一起消除,但是由于前面提的原因,導(dǎo)致眾多錯(cuò)誤混雜在一起,可能結(jié)果是改不完,或者改的時(shí)候發(fā)現(xiàn)有些錯(cuò)誤就是死胡同(譬如提示有個(gè)系統(tǒng)頭文件出了錯(cuò),但是這個(gè)頭文件明明都沒改動(dòng)過而且是源碼本身自帶的,怎么可能有錯(cuò),但編譯之后的確就指向這個(gè)文件有一堆錯(cuò)誤)。
接著是第二次移植,這次的思路是先找出最基本的init入口函數(shù)(一般僅由幾個(gè)函數(shù)構(gòu)成),然后從第一個(gè)函數(shù)開始找其所在源文件,然后拿過來(lái)放到需要被調(diào)用的文件同層文件夾中,根據(jù)編譯提示逐個(gè)解決然后再進(jìn)行下一個(gè)函數(shù)或者文件的移植,經(jīng)過第一次移植的摸索,除了要在配置文件開啟或定義宏內(nèi)容之外,會(huì)發(fā)現(xiàn)必須要注意到有些源文件會(huì)有頭文件(有頭文件的需要一起配套移植,不過一般需要放到源碼包頂層目錄底下的include文件夾,而不是放到被調(diào)用的文件同層文件夾,查看是否有配套頭文件可以在sourceinsight的project file list中看),而有些文件譬如cmd_mcc.c則是沒有配套頭文件,那么拿過來(lái)之后只需要在Makefile中添加好.o依賴確保文件能被編譯進(jìn)工程即可;另外,sourceinsight這次通過relation window查看函數(shù)的被調(diào)用樹依賴變得比較遜色了,因?yàn)橐粋€(gè)同名內(nèi)容有很多個(gè)文件或板子都包括有(并且sourceinsight中根據(jù)提示錯(cuò)誤字符串搜索時(shí)要注意,還原通配符內(nèi)容才有可能搜索得到錯(cuò)誤的出處,譬如raise:Signal #8 caught就要寫成raise:Signal #%d caught才能放進(jìn)搜索框),而通過ubuntu的uboot源碼包grep -nr查找反而更方便,下圖是根據(jù)cpu_mmc_init()移植完之后的現(xiàn)象。
2、移植完mmc.c后,如下圖所示,當(dāng)然期間也已經(jīng)處理完了cmd_mmc.c的移植,但是會(huì)發(fā)現(xiàn)在MMC部分的打印信息多了raise:Signal #8 caught,網(wǎng)上查了基本說是timer或者時(shí)鐘配置部分的問題(也就是被除數(shù)不能為零需要修改timer.c或者可能沒有配置成最佳的時(shí)鐘頻率等),改過timer.c發(fā)現(xiàn)不行,所以接下來(lái)就是配置成1000MHz,看能不能解決問題,但是嘗試過移植三星評(píng)估板源碼包里的system_clock_init,會(huì)發(fā)現(xiàn)需要?jiǎng)h改,因?yàn)橛幸徊糠謨?nèi)容是相同的只是針對(duì)的板子不同而已,而且有些宏需要自己手動(dòng)展開放到匯編代碼里頭去,要不然就只能包含所依賴的頭文件,但是無(wú)論是自動(dòng)展開還是通過包含頭文件的方式都相對(duì)麻煩,再一種方式就是用網(wǎng)上整理好的匯編文件,直接.global把標(biāo)號(hào)聲明到外部然后調(diào)用,但是結(jié)果都是到UART和DDR初始化信息打印完就沒再繼續(xù)往下跑。
3、由于前面嘗試無(wú)果,所以使用自帶的system_clock_init調(diào)用,先測(cè)試800MHz確實(shí)能跑下來(lái),然后改成1000MHz的,但是實(shí)際顯示現(xiàn)象就是和原來(lái)沒有變化,所以應(yīng)該不是時(shí)鐘問題導(dǎo)致的;再接下來(lái),補(bǔ)充了缺少的MMC相關(guān)宏到s5p_goni.h主配置文件,因?yàn)橐婚_始追蹤代碼沒查到是哪的問題,后面實(shí)在沒思路了于是去搜索MMC驅(qū)動(dòng)移植這幾個(gè)關(guān)鍵字,通過看文章獲得的思路提示到其實(shí)自己移植過程中有些宏沒定義上(恰好移植編譯的過程并沒有出錯(cuò)提示這方面的信息,所以比較難發(fā)現(xiàn)少定義了),譬如USE_MMC0、MMC_MAX_CHANNEL等,添加好以后再編譯燒錄就得到下圖所示。
4、EXT_CSD問題的解決辦法網(wǎng)上有,解決完發(fā)現(xiàn)已經(jīng)可以保存參數(shù)了,不過可以看見在沒有進(jìn)行第一次參數(shù)保存設(shè)置會(huì)有一個(gè)bad CRC警告,當(dāng)經(jīng)過第一次參數(shù)保存設(shè)置之后這句警告就再?zèng)]出現(xiàn)了。
5、最后,要補(bǔ)充說一些內(nèi)容,就是解決s3c_hsmmc.c和setup_hsmmc.c移植過程,會(huì)發(fā)現(xiàn)從三星評(píng)估板移植過來(lái)的文件用到了一個(gè)和現(xiàn)在uboot某個(gè)相同名字的頭文件,也就是頭文件沖突,但是打開發(fā)現(xiàn)其實(shí)這個(gè)頭文件hardware.h只是名字相同但存放路徑在uboot下并沒有,所以只需要在uboot下創(chuàng)建好路徑并放進(jìn)去即可;使用saveenv能保存ENV參數(shù)以后需要多嘗試幾次看是否也能保存;還有就是每次在對(duì)一個(gè)文件或者一個(gè)特定問題進(jìn)行解決、修改之前,一定要復(fù)制備份好一份再開始。
上一篇:x210-2023-03-23
下一篇:x210-2023-03-15
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- LTC4304 的典型應(yīng)用 - 具有卡死總線恢復(fù)功能的熱插拔 2 線總線緩沖器
- DC104B-C,演示板,通用低噪聲 8 階濾波器構(gòu)建塊(100:1,fc 至 50khz)
- PSoC1 - 使用 CY3210 套件的 32.768-kHz 外部晶體振蕩器應(yīng)用電路
- TWR-KL25Z48M、Kinetis KL1x 和 KL2x 48 MHz MCU 塔式系統(tǒng)模塊,用于 MKL25Z128VLK4 MCU
- Ts4890 軌到軌輸出 1W 音頻功率放大器的典型應(yīng)用,具有待機(jī)模式低電平有效
- 使用 Omron 的 S8VS-18024BP 的參考設(shè)計(jì)
- DER-259 - 薄型36.3W電源
- REF195 精密微功耗、低壓差電壓基準(zhǔn)的典型應(yīng)用
- 原神15CM直尺
- 使用 ON Semiconductor 的 STK416-090-E 的參考設(shè)計(jì)
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標(biāo)桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動(dòng)駕駛安全性
- 曉鶯說:線控制動(dòng)變革風(fēng)云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴(kuò)展為游戲機(jī)
- 福州大學(xué)發(fā)明新機(jī)器視覺傳感器 可使機(jī)器人對(duì)極端光照做出超快反應(yīng)
- 蘋果獲沉浸式虛擬顯示器相關(guān)的專利
- 英特爾汽車“折戟”,十年布局一夜歸零
- 寶馬自動(dòng)充電機(jī)器人概念驗(yàn)證成功,引領(lǐng)無(wú)人充電新時(shí)代
- 智駕模式下LQR最優(yōu)算法在EPS中的應(yīng)用研究
- 6月超17款人形機(jī)器人新品推出
- 榮耀9X Pro渲染圖:后置雙攝,前置升降式設(shè)計(jì)
- 天貓精靈調(diào)侃小米:moji表情長(zhǎng)得和別人像,名字和我一樣
- 一加為“哈哈哈”通知推送致歉:工作人員測(cè)試失誤所致
- 美國(guó)議員再出“奇葩”言論!將要立法維持對(duì)華為禁令
- OCA品質(zhì)異常致Mate X推遲發(fā)布?華為除名3M
- 中芯國(guó)際:決定終止美國(guó)預(yù)托證券一級(jí)計(jì)劃
- 光芯片廠商源杰半導(dǎo)體擬A股IPO 已獲華為哈勃等機(jī)構(gòu)投資
- 三星將在2021年開發(fā)可卷曲與可滑動(dòng)顯示屏
- 泰晶科技:部分晶振產(chǎn)品供不應(yīng)求,去年曾四度漲價(jià)
- 東旭光電預(yù)計(jì)2020年凈利虧損27億元-40.5億元