[問題] 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