国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

x210-2023-03-20

發(fā)布者:TranquilSmile最新更新時(shí)間:2025-01-13 來(lái)源: cnblogs關(guān)鍵字:移植  uboot 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

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ù)制備份好一份再開始。


關(guān)鍵字:移植  uboot 引用地址:x210-2023-03-20

上一篇:x210-2023-03-23
下一篇:x210-2023-03-15

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved