想从SPI Flash 启动。但找了两天资料,只在am335x u-boot user's guide这份文档里找到一小部分关于SPI的内容,我按照里面的描述编译出MLO.spi和u-boot.bin文件,但之后就不知道怎么做。所以,希望能推荐点参考资料,帮我解决一下如下问题:1、如何把bootloader、内核和文件系统烧写到SPI flash;2、烧写到SPI FLASH后,如何设置u-boot的启动参数。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
想从SPI Flash 启动。但找了两天资料,只在am335x u-boot user's guide这份文档里找到一小部分关于SPI的内容,我按照里面的描述编译出MLO.spi和u-boot.bin文件,但之后就不知道怎么做。所以,希望能推荐点参考资料,帮我解决一下如下问题:1、如何把bootloader、内核和文件系统烧写到SPI flash;2、烧写到SPI FLASH后,如何设置u-boot的启动参数。
可以通过sd 卡或者uart+usb烧写到spi flash,uboot的readme有说明
我用uart进行烧写时,输入sf probe 0给出了如下的提示信息:
开发板可以通过SD卡进行启动,进入u-boot命令行,但我按照am335x u-boot user's guide文档的说明,输入sf probe 0时,还是出现了和uart启动时一样的提示信息:
使用的板子是am335x,对应的SPI FLASH是:winbond W25Q64FV
你用这个看看http://processors.wiki.ti.com/index.php/AM335X_StarterWare_Booting_And_Flashing#Booting_Via_SPI
我这边没有ccs,只能用串口工具进行烧写。
当我在u-boot命令行下,输入:sf probe 0时,用示波器观察,只有SPI_CLK引脚会跳变出一个高电平,其他三个引脚的完全没有任何变化。
不知道您用的是 evm 還是 evm_sk ?
我使用的是 evm_sk , uboot 是 u-boot-2011.09-psp04.06.00.08
在mux.c裡, struct evm_pin_mux 對每個 board 的定義要注意一下有沒有加入這行:
{spi0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD},
如果你是使用 general_purpose_evm_pin_mux[] , 裡面的 spi0_pin_mux 是定義為 {spi0_pin_mux, PROFILE_2, DEV_ON_DGHTR_BRD} ,
修改掉應該就可行了.
有二種可能:
1. 您在 pin_mux 裡未定義 {spi0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, 或定義錯誤, 導致 spi0 無動作.
2. 您的 spi flash 硬體根本不正常?
如果是1, 建議您先用示波器量測, 在 sf probe 0 時, 您的 spi0 bus 應該要有動作的. 如果有動作, 再確認一下波形內容是否正確?
sf probe 0 僅是做 id read 的動作, 沒幾個 byte , 很容易就可以用示波器分析.
还是同样的问题:U-Boot# sf probe 0
SF: Unsupported manufacturer ff
Failed to initialize SPI flash at 0:0
我用的是自己做的板子,用的uboot是:u-boot-2011.09-psp04.06.00.08。想问一下uboot也和linux-3.2.0-psp04.06.00.08.sdk提供的uImage一样,需要先匹配一下板子上 的EEPROM里面的信息。只有匹配上了,才会执行对应的驱动,是这样的吗?
您好,不知道您的问题解决了吗?在include/configs/Am335x_evm.h中有#define CONFIG_SPI_FLASH_WINBOND的定义,从而导致在driver/mtd/spi/spi_flash.c中probe的是winbond的spi flash。这个我已经修改成我的SPI型号,而且. 您在 pin_mux 裡未定義 {spi0_pin_mux, PROFILE_ALL, DEV_ON_BASEBOARD}, 或定義錯誤, 導致 spi0 無動作.这个sf probe 0 僅是做 id read 的動作时示波器也有波形,但是就是还是出现上面初始化失败的问题。您能给点调试的思路吗?
如果在我们TI的EVM板上,不用修改任何软件,只要将CPLD的profile播码开关调整一下就好了
Hi Yao,
我用的是BBB 在上面Mount一个W25Q64, 下载进MLO.SPI和Uboot.bin后,LOG如下:
U-Boot# sf probe 0
SF: Detected W25Q64CV with page size 256 Bytes, erase size 4 KiB, total 8 MiB
U-Boot# sf erase 0 +80000
SF: 524288 bytes @ 0x0 Erased: OK
U-Boot# mmc rescan
U-Boot# fatload mmc 0 ${loadaddr} MLO.spi
reading MLO.spi
20640 bytes read in 6 ms (3.3 MiB/s)
U-Boot# sf write ${loadaddr} 0 ${filesize}
SF: 20640 bytes @ 0x0 Written: OK
U-Boot# fatload mmc 0 ${loadaddr} u-boot.bin
reading u-boot.bin
228052 bytes read in 17 ms (12.8 MiB/s)
U-Boot# sf write ${loadaddr} 0x20000 ${filesize}
SF: 228052 bytes @ 0x20000 Written: OK
U-Boot# reboot spi
Unknown command 'reboot' - try 'help'
U-Boot# run spiboot
Booting from spi ...
SF: Detected W25Q64CV with page size 256 Bytes, erase size 4 KiB, total 8 MiB
SPI RXS timed out, status=0x00000002
SF: 3547136 bytes @ 0xe0000 Read: ERROR
Bad Linux ARM zImage magic!
U-Boot#
U-Boot#
上面是烧录完后的信息
下面是重新上电后的信息,我的BOOT 配置是11000,卡在那里就不动了.请指教,谢谢
U-Boot SPL 2011.09-00000-gbb705f4-dirty (Jan 25 2015 - 19:02:35)
Texas Instruments Revision detection unimplemented
Hans, I Hope Your boot successed from SPI
SF: Detected W25Q64 with page size 4 KiB, total 8 MiB