[问题] SPI Flash re-boot failed with 32MB

楼主: alvine   2015-06-10 00:04:05
各位前辈您们好,
小弟是刚接触嵌入式系统的菜鸟.
最近遇上一个奇怪的问题百思不解,苦无头绪,
希望能在这得到各位前辈的一些建议与方便.
小弟负责的板子是用SPANSION S25FL256S SPI-FLASH.(32M)
CPU是ARM Cortex-A9.
原先是用SPANSION S25FL128S SPI-FLASH(16M).
从开机一直到linux kernel带起来都正常.
换成32M的SPI FLASH之后发现只有第一次进kernel是正常的.
重新启动之后就不能开机了Orz...
小弟查了几个地方觉得有疑惑,希望各位前辈能给小弟一点建议.
1.现在使用的uboot发现只有支援到24bit位址定位.所以之能读取到16M最大.
超过0x01000000的位址就读取不到.
(可以用sf read addr offset size指令读到sdram上就可以知道)
对16M的flash来说OK,但对于32M的flash,不知道是否需要修改uboot?
source code在driver/mtd/spi/spi_flash.c等几支程式
查询flash datasheet发现有一个bank address register可以做设定
问题是因为bootloader和kernel image都烧在16M size范围内,
并没有用到超出16M以外的flash空间
不知道如果是32M的flash,uboot只能读取到16M范围是否合理?
还是要在spi_flash.c等几支程式做修改让uboot可以读取到完整32M的空间?
2.因为换成32M的flash之后,第一次开机进到kernel是正常的.
但是reboot或重新上电后,就开不起来了.....
小弟在想是不是mtd中spi flash driver在内核启动的时候,
设定了flash的bank address register.但是重新开机时uboot还是以
24bit寻址来做读取,所以造成无法开机?
小弟datasheet翻来翻去还是不知道以上两个问题该怎么解释
希望前辈们不吝赐教!! 感激不尽!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com