[转]uboot中SPI Flash Booting配置

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

最近和人一起调试SPI FLASH的配置问题,做个小结记录,也方便后续人员开发的时候来使用。考虑到物料的多元性,目前的需求是使用不同品牌的SPI flash,是否都可以通过相同的image来启动。答案是可以的,但是需要在原始的SDK中加以改动。文章来源地址https://www.yii666.com/article/754208.html

在AM335x的Linux UBOOT的配置流程中,主要涉及到了两点:一是关于SPI的pinmux定义,还有一个就是SPI flash对应的driver。下面让我们以SDK7.0为例,先看看SPI FLASH的关键参数点在哪里配置。文章地址https://www.yii666.com/article/754208.html

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”进行了相关的设定。网址:yii666.com

[转]uboot中SPI Flash Booting配置

[转]uboot中SPI Flash Booting配置

让我们更进一步,明确这个部分是如何工作的,track到这个宏定义生效的地方:

drivers/mtd/spi/sf_probe.c文件中,事实上,这个宏定义主要是决定了下面这个参数表里的内容:static const struct spi_flash_params spi_flash_params_table[]

[转]uboot中SPI Flash Booting配置文章来源地址:https://www.yii666.com/article/754208.html

这个参数表是通过manufacture ID和device ID来确认当前flash的型号和配置参数。

例如,如果是使用的WINBON的W25Q80 FLASH,其flash手册如下网址:yii666.com<

[转]uboot中SPI Flash Booting配置

AM335x在driver probe的时候,便会根据读取到的 EF + 4014就是上面的倒数第二行配置来进行SPI FALSH的参数,从而使能WINBOND的W25Q80。从而完成对flash的配置。

所以要是使用的flash型号可以被正常识别,只要保证了你的flash配置在这个表里面有对应的ID和参数信息即可。

于是,若是即准备用SPANSION的flash又打算用WINBOND的,或者是其他品牌的,只要将对应的宏定义释放开就可以了。简单暴力点的就是把宏定义的限制去除掉完事儿咯。

综上,调试SPI flash booing的时候保证两点:

  1. Pinmux的配置要正常使能;
  2. 确保你的SPI型号的参数配置在参数配置表中即可。

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png