uboot mmc驅動移植

2021-10-05 01:24:16 字數 1967 閱讀 2756

將三星官方uboot的mmc驅動移植到uboot官方的uboot中。

需要一致的c原始檔有如下幾個

1,呼叫mmc_initialize()函式,這個函式在mmc.c中

2,在mmc_initialize()函式中呼叫cpu_mmc_init()函式,這個函式在cpu.c中

3,在cpu_mmc_init()函式中初始化了mmc的gpio,時鐘,並呼叫了smdk_s3c_hsmmc_init()這個函式,在這些函式中通過use_mmc0,use_mmc1等巨集來決定初始化哪個mmc。(對應的函式在setup_hsmmc.c中)

4,而smdk_s3c_hsmmc_init()這個函式,通過呼叫s3c_hsmmc_initialize()這個函式來將對應mmc的引數和初始化函式賦值給對應的mmc結構體中的變數,並將這個mmc的結構體註冊到mmc裝置列表中。

5,呼叫mmc_initialize()函式,還呼叫了mmc_init()函式初始化具體的mmc裝置,這個函式就是通呼叫在s3c_hsmmc_initialize()函式中註冊的初始化函式來初始化mmc。

修改對應資料夾下的makefile,使得uboot編譯時編譯對應的檔案

從三星移植過來的那些.c原始檔中一些沒有被定義的函式和巨集,需要將這些函式和巨集移植過來(其中包括將對應的.**件拷貝過來)

修改的內容:

1,在配置標頭檔案中新增#define use_mmc0,#define use_mmc2這兩個巨集

2,uboot官方沒有提供get_mpll_clk()這個函式,用get_pll_clk(mpll)來替代。

3,uboot的官方的**中沒有reg.h這個標頭檔案

4,在需要新增clk.h的地方新增這個標頭檔案

uboot的cmd_mmc.c檔案中定義了和mmc相關的命令,這些命令是通過呼叫mmc驅動檔案中的函式實現的。

所以,移植完三星的mmc驅動後,還需要用替換成三星uboot的cmd_mmc.c替換uboot官方原有的cmd_mmc.c檔案,這樣才能呼叫對應的mmc驅動程式。

mmc_write.c檔案依賴於cmd_mmc.c等檔案,所以會報錯。

我們移植的三星uboot的mmc驅動中沒有對應的檔案,所以我們不需要編譯這個檔案,直接把該檔案從對應的makefile中去掉。

Alsa驅動移植

華清遠見嵌入式學院講師。二 預設情況下核心已經支援alsa驅動,保險情況下先去確認一下,如下圖 device drivers sound card support advanced linux sound architecture alsa for soc audio support soc aud...

Alsa驅動移植

華清遠見嵌入式培訓中心講師。二 預設情況下核心已經支援alsa驅動,保險情況下先去確認一下,如下圖 device drivers sound card support advanced linux sound architecture alsa for soc audio support soc a...

MTK fm驅動移植

如果硬體新增更改了一塊fm晶元,而驅動往往是由晶元 商提供,我們需要做的工作是移植。假設 商提供的驅動是 qndriver.c qndriver.h 以下分4個步驟完成,看好 1.更改晶元id 在檔案 gprs.mak make目錄下,與平台有關 中找到 fm radio chip ar1000 n...