[转]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的时候保证两点:
- Pinmux的配置要正常使能;
- 确保你的SPI型号的参数配置在参数配置表中即可。
[转]uboot中SPI Flash Booting配置的更多相关文章
- (四)ubuntu学习前传—uboot中对Flash和DDR的管理
1.uboot阶段Flash的分区 (1)所谓分区,就是说对Flash进行分块管理.(2)PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮我们管 ...
- openwrt spi flash 分区适配过程
openwrt spi flash 分区适配过程 这里基于 openwrt mt7620a 平台来跟踪,主要是想理清 dts 里的分区描述是如何一步步转化成内核分区行为. 先来看看 dts 中关于分区 ...
- 关于NAND flash的MTD分区与uboot中分区的理解
关于NAND flash的MTD分区与uboot中分区的理解 转自:http://blog.csdn.net/yjp19871013/article/details/6933455?=40085044 ...
- 在SRAM、FLASH中调试代码的配置方法(附详细步骤)
因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...
- OpenRisc-32-ORPSoC烧写外部spi flash
引言 经过前面的分析和介绍,我们对ORPSoC的启动过程(http://blog.csdn.net/rill_zhen/article/details/8855743)和 ORpSoC的debug子系 ...
- uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟 ...
- Uboot中start.S源码的指令级的详尽解析【转】
本文转载自:http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analys ...
- Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系
前言: 在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解.下面细说一下标题中的中Flash中的关系 一,Flash的内存存储结构 flash按照内部存 ...
- u-boot中分区和内核MTD分区关系
一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4 ...
随机推荐
- mvc 权限验证
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 【转】DSL
DSL DSL 时不时地会成为一个话题,所以今天想专门说一下. DSL 也就是 Domain Specific Language 的简称,是指为某些特定领域(domain)设计的专用语言.举个例子,L ...
- Sails入门指南
1.全局观:sails理念,框架结构 2.试用sails的scaffolding工具,创建model,创建controller, 3.启动server,试用blueprint, 4.进阶: 4.0 数 ...
- 记github上搭建独立域名的免费博客的方法过程
前提:拥有github帐号,linux上安装好了git. 全局路线: 1. 设计一个你想要的二级域名,并在git上创建一个以[二级域名.github.com]作为项目名的repository. 过程详 ...
- 数据库事务隔离级别+Spring 声明性事务隔离级别
数据库事务隔离级别 数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现. 在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低. 大多数数 ...
- [转]Servlet 单例多线程
Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...
- Android studio的一些常用快捷键
Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如g ...
- 常用代码之二:使用BackgroundWorker或Task让代码异步执行。
先要引用System.ComponentModel using System.ComponentModel; 然后创建backgroundworker private void backgroundW ...
- php反射获取类和方法中的注释
通过php中的反射机制,获取该类的文档注释,再通过获取其所有的方法,获取方法的注释 所用到的主要类及其方法 ReflectionClass ReflectionClass::getDocComment ...
- Kinect v2 记录
最多可同时识别跟踪 6 人,每人可识别到 25 个关节数据.可以根据上身 10 个关节数据来判断坐姿状态. 物理极限识别范围:0.5m – 4.5m,最佳识别范围:0.8m – 3.5m. 深度数据可 ...