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.

am335x spi boot



想从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给出了如下的提示信息:

    U-Boot# sf probe 0
    SF: Unsupported manufacturer ff
    Failed to initialize SPI flash at 0:0
     
    还有一个问题,你叫我读uboot的readme,你的意思是不是要修改uboot,然后才能从spi flash启动。
  • 有相应的编译选项

  • am335x u-boot user's guide文档一部分关于SPI的说明:
    In this example we initially boot from an SD card and use that to transfer the files to write to SPI flash.
     
    U-Boot# sf probe 0
    U-Boot# sf erase 0 +80000
    U-Boot# mmc rescan
    U-Boot# fatload mmc 0 ${loadaddr} MLO.spi
    U-Boot# sf write ${loadaddr} 0 ${filesize}
    U-Boot# fatload mmc 0 ${loadaddr} u-boot.bin
    U-Boot# sf write ${loadaddr} 0x20000 ${filesize}
     

    开发板可以通过SD卡进行启动,进入u-boot命令行,但我按照am335x u-boot user's guide文档的说明,输入sf probe 0时,还是出现了和uart启动时一样的提示信息:

    U-Boot# sf probe 0
    SF: Unsupported manufacturer ff
    Failed to initialize SPI flash at 0:0
  • 应该没有这个问题啊,你用的是哪个板子?

  • 使用的板子是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} , 

    修改掉應該就可行了.

  • 您好,我现在也遇到这个问题

    U-Boot# sf probe 0
    SF: Unsupported manufacturer ff
    Failed to initialize SPI flash at 0:0

    请问你解决了吗   能否告知一下  谢谢

  • 从log信息看,应该是SPI 的型号不支持

  • 你可以查看uboot,

    在include/configs/Am335x_evm.h中有#define CONFIG_SPI_FLASH_WINBOND的定义,从而导致在driver/mtd/spi/spi_flash.c中probe的是winbond的spi flash。

    你可以根据你的spi flash型号对定义进行修改

  • 有二種可能:

    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里面的信息。只有匹配上了,才会执行对应的驱动,是这样的吗?

  • 是的,因為u-boot會去讀取eeprom內的識別碼,用以判斷是那塊evk board.

    如果無eeprom或是資料不正確的話,會使用 board_id 為 GP_BOARD.

    建議修改 board/ti/am335x/evm.c 裡的 board_init() 以符合您的板子需求.

  • 您好,具体该怎么修改呢?请指教

  • 如果是AM335X的EVM板的话,需要将PROFILE开关中2脚打到on,其他off,可看到

    SF: Detected W25Q64 with page size 4 KiB, total 8 MiB

  • 您好,不知道您的问题解决了吗?在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

  • 您好,请问您所说的profile开关是指的哪个开关,我在原理图上没有找到,是指的sysboot开关吗?

  • profile开关是个4pin的小开关,在板子正面下方