[转]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 ...
随机推荐
- zookeeper注册中心安装(单机版)
下载zookeeper-3.4.9.tar.gz wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar. ...
- 第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题
1.简述位.字节的关系 位(bit)是计算机中最小的表示单元,数据传输是以“位”为单位的,1bit缩写为1b 字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B 8bit = 1Byte ...
- Python 文件 next() 方法
描述 Python 3 中的 文件 对象不支持 next() 方法. Python 3 的内置函数 next() 通过迭代器调用 __next__() 方法返回下一项. 在循环中,next()方法会在 ...
- 【转载】Spring @Async 源码解读。
由于工作中经常需要使用到异步操作,一直在使用@Async, 今天抽空学习了一下它的执行原理,刚好看到一篇写的很棒的文章,这里转载过来做个记录,感谢原作者的无私奉献. 原文章链接地址:https://w ...
- 安装 Express
首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通过 npm init 命令为你的应用创建 ...
- Vue(五):Vue模板语法
1.{{...}}(双大括号) 文本插值 <div id="app"> <p>{{ message }}</p> </div> 2. ...
- asp.net 中用easyui中的treegird的简单使用
几乎每个‘数人头’项目中都会用到的功能,这里先记下来,以后直接到这里复制代码就行了,ASP.NET MVC中的使用 数据库用户表中的除了有个parentid父级ID外,我还多加了以个字段,parent ...
- Atitit Loading 动画效果
Atitit Loading 动画效果 使用才场景,加载数据,以及显示警告灯.. 要有手动关闭按钮 <div class="spinner loading_part" sty ...
- iPhone-获取网络数据或者路径的文件名
Phone中,在网络中的数据流中提取链接中的文件名称时,有很多方法,这里总结一些. 方法一:最直接. 1 NSString * urlString = @"http://www.ba ...
- IBM研究院找到度量安全性方法:容器与虚拟机,谁更安全?
https://zhuanlan.zhihu.com/p/40446759 虚拟机比容器更安全吗?你可能会有自己的答案,但IBM研究院发现容器的安全性与虚拟机一样,甚至更加安全. 一般来说,从接口宽度 ...