转自: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型号的参数配置在参数配置表中即可。

[转]uboot中SPI Flash Booting配置的更多相关文章

  1. (四)ubuntu学习前传—uboot中对Flash和DDR的管理

    1.uboot阶段Flash的分区 (1)所谓分区,就是说对Flash进行分块管理.(2)PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮我们管 ...

  2. openwrt spi flash 分区适配过程

    openwrt spi flash 分区适配过程 这里基于 openwrt mt7620a 平台来跟踪,主要是想理清 dts 里的分区描述是如何一步步转化成内核分区行为. 先来看看 dts 中关于分区 ...

  3. 关于NAND flash的MTD分区与uboot中分区的理解

    关于NAND flash的MTD分区与uboot中分区的理解 转自:http://blog.csdn.net/yjp19871013/article/details/6933455?=40085044 ...

  4. 在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...

  5. OpenRisc-32-ORPSoC烧写外部spi flash

    引言 经过前面的分析和介绍,我们对ORPSoC的启动过程(http://blog.csdn.net/rill_zhen/article/details/8855743)和 ORpSoC的debug子系 ...

  6. uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试

    今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟 ...

  7. Uboot中start.S源码的指令级的详尽解析【转】

    本文转载自:http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analys ...

  8. Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系

    前言:    在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解.下面细说一下标题中的中Flash中的关系 一,Flash的内存存储结构    flash按照内部存 ...

  9. u-boot中分区和内核MTD分区关系

    一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4 ...

随机推荐

  1. 还没被玩坏的robobrowser(3)——简单的spider

    背景 做一个简单的spider用来获取python selenium实战教程的一些基本信息.因为python selenium每年滚动开课,所以做这样一个爬虫随时更新最新的开课信息是很有必要的. 预备 ...

  2. matlab入门笔记(七):数据文件I/O

  3. (面试题)如何查找Oracle数据库中的重复记录

    今天做了个面试题:查找Oracle数据库中的重复记录,下面详细介绍其他方法(参考其他资料) 本文介绍了几种快速查找ORACLE数据库中的重复记录的方法. 下面以表table_name为例,介绍三种不同 ...

  4. Android Studio 代码导航快捷键总结

    Android Studio 代码导航快捷键总结 这篇文章主要介绍了Android Studio 代码导航快捷键的相关资料,需要的朋友可以参考下   简评:作为一位 Android 开发者,Andro ...

  5. 安装 Express

    首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通过 npm init 命令为你的应用创建 ...

  6. logstash 中multiline插件的用法

    input { stdin { codec =>multiline { charset=>... #可选 字符编码 max_bytes=>... #可选 bytes类型 设置最大的字 ...

  7. 解决 SQL Server 所有帐号无 sysadmin 权限,且未启用 SQL Server 身份验证,sa 帐号也未启用的问题

    解决 未启用 SQL Server 身份验证 的问题: 1. 运行 regedit,进入注册表编辑器 2. 打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Micro ...

  8. 在 Windows Server 2008 中部署带 SignalR 的网站出错

    一直是在 Windows Server 2008 R2 或更高版本的 Windows 中进行部署,没有遇到过此现象,不知道是不是因为系统的原因. 现象为从浏览器访问配置 signalr 的地址返回 4 ...

  9. iOS上的http请求:get、post以及同步、异步

    1.get: view sourceprint" class="item about" style="color:rgb(51,51,51); text-dec ...

  10. 菜鸟学SSH(七)——Spring jar包详解

    Struts.Hibernate.Spring这类的框架给我们开发带来非常大的好处,让我们更加快速.有效的开发.所以我们在开发中通常都会用到各种框架,每个框架都有很多jar包,每个jar都有各自不同的 ...