[轉]uboot中SPI Flash Booting配置


轉自:https://e2echina.ti.com/question_answer/dsp_arm/sitara_arm/f/25/t/124834

最近和人一起調試SPI FLASH的配置問題,做個小結記錄,也方便后續人員開發的時候來使用。考慮到物料的多元性,目前的需求是使用不同品牌的SPI flash,是否都可以通過相同的image來啟動。答案是可以的,但是需要在原始的SDK中加以改動。

在AM335x的Linux UBOOT的配置流程中,主要涉及到了兩點:一是關於SPI的pinmux定義,還有一個就是SPI flash對應的driver。下面讓我們以SDK7.0為例,先看看SPI FLASH的關鍵參數點在哪里配置。

1. SPI的pinmux定義

在board/ti/am335x/mux.c文件的如下函數中

void enable_board_pin_mux(struct am335x_baseboard_id *header)

當板卡為GPEVM板,且PROFILE設置為2的情況下才會使能的便是對SPI0的SPI FLASH的管教配置使能。如果需要使能SPI FLASH,可以直接在這里把相關條件判斷去掉,直接使能即可。

  • configure_module_pin_mux(spi0_pin_mux);

 2. SPI FLASH driver的配置。

這個部分的修改,涉及到有人使用的是SPANSION的,有人用的是WINBOND的,不同的SPI FLASH在配置上參數是略有差異的,所以driver中會通過讀取SPI FLASH的相關ID,從而進一步進行驅動的配置。

這部分的使能,我們是直接在include/configs/am335x_evm.h頭文件定義中,通過相關宏定義來控制的。

例如,我們的GEPVM板上使用的是WINBOND的,所以配置文件的宏定義中通過

“#define CONFIG_SPI_FLASH_WINBOND”進行了相關的設定。

讓我們更進一步,明確這個部分是如何工作的,track到這個宏定義生效的地方:

drivers/mtd/spi/sf_probe.c文件中,事實上,這個宏定義主要是決定了下面這個參數表里的內容:static const struct spi_flash_params spi_flash_params_table[] 

這個參數表是通過manufacture ID和device ID來確認當前flash的型號和配置參數。

例如,如果是使用的WINBON的W25Q80 FLASH,其flash手冊如下

AM335x在driver probe的時候,便會根據讀取到的 EF + 4014就是上面的倒數第二行配置來進行SPI FALSH的參數,從而使能WINBOND的W25Q80。從而完成對flash的配置。

所以要是使用的flash型號可以被正常識別,只要保證了你的flash配置在這個表里面有對應的ID和參數信息即可。

於是,若是即准備用SPANSION的flash又打算用WINBOND的,或者是其他品牌的,只要將對應的宏定義釋放開就可以了。簡單暴力點的就是把宏定義的限制去除掉完事兒咯。

 

綜上,調試SPI flash booing的時候保證兩點:

  1. Pinmux的配置要正常使能;
  2. 確保你的SPI型號的參數配置在參數配置表中即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM