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.

dm368 spiflash



        你好,我用dvsrdk_dm368_4_02_00_06的软件包,以前是用的nandflash存储,现在想改为spi norflash启动,芯片MX25L51245G,我现在内核做的移植测试,可以挂载mount挂载jffs2。

      1   但是当我移植uboot时,发现我用的uboot-2010.12,我发现davinci_dm365evm.c没有提供SPI的支持,请问你们有那个uboot版本支持SPI吗?

      2  还有我发现ubl源码,没有看到支持SPI启动相关源码,请问UBL如何将UBOOT从SPI启动

      3  请问有什么工具可以支持我将UBL uboot kernel等拷贝到SPI norflash

     谢谢!!!

    

  • 请看下面的wiki网站关于如何从SPI flash启动。
    processors.wiki.ti.com/.../SPI_flash_boot_and_flashing_tool_for_DM36x

    可以用serail flash utility烧写工具。
    processors.wiki.ti.com/.../DM36x_Software_Design_Guide
  • 你好 

          根据第一篇文档只讲述了内核如何修改为SPIflash,我现在关于UBL和UBoot出现问题如下

          1   但是当我移植uboot时,发现我用的uboot-2010.12,我发现davinci_dm365evm.c没有提供SPI的支持,请问你们有那个uboot版本支持SPI吗?

          2  还有我发现ubl源码,没有看到支持SPI启动相关源码,请问UBL如何将UBOOT从SPI启动

          3 将UBL uboot kernel等拷贝到什么地址,尤其是UBL

  • user4722282 说:
     还有我发现ubl源码,没有看到支持SPI启动相关源码,请问UBL如何将UBOOT从SPI启动

    你可以参考nand启动的代码,把读取nand的操作更换为读取spi flash的操作。

    user4722282 说:
      3 将UBL uboot kernel等拷贝到什么地址,尤其是UBL

    建议你看看ARM subsystem guide里面关于ROM启动的相关部分。下面的帖子也可以参考:

  •          感谢您的回答,我还有一个问题想问一下,目前dm368的性能再启动速度是用nandflash快还是SPI norflash快(CS CLIK SIMO SOMI),因为我发现在SPI norflash存储文件系统的情况内核挂载文件系统速度极慢?

           谢谢!!!

  • 你好,

    你是否有把spi的时钟在ubl里面配置硬件可以支持的最快时钟速率(spi flash也需要支持)。使用DMA模式读取数据,速度还可以提升。
  • 你好,我看过ARM subsystem guide里面关于ROM启动的关于SPI启动,并把UBL用objdump反汇编分析,我发现有的资料说RBL默认从0x02000000读取,而反汇编时发现这个地址是selfcopy函数,而根据ARM subsystem guide里面关于ROM启动关于SPI部分,第一个字节决定16bit还是24bit,然后读取文件描述,然后加载UBL到SRAM。

    我现在不清楚RBL启动UBL流程,推测

    配置SPI启动-》读取第一个字节-》读取描述-》拷贝-》移交进入点执行UBL

    请问是上述流程吗,如果是

    1 描述文件放置地址

    2 拷贝如何实现,是RBL实现拷贝,还是RBL读取selfcopy执行拷贝,同时selfcopy函数地址,

    3 拷贝流程是RBL拷贝UBLselfcopy 函数并执行吗

    4 拷贝完成后是执行的boot()还是start.s

    5 SPI norflash DM368有移植成功案例吗,能否提供相关文档参考,谢谢

  • 你好,

    在spi里面00地址存放的就是magic number,具体请参考arm subsystem guide里面的Table 122. User Bootloader (UBL) Descriptor for SPI Mode。
    RBL会先以24bit地址的方式读取SPI的值,如果发现是magic number,那就认定使用的spi地址是24位的。如果发现不是magic number,会尝试使用16 bit地址读取00地址的值,看是否是magic number的值。
  • 你好,

            关于这里我看到了,但是第一个字节确认魔鬼字,其后字节存放相关描述,那么slefcopy函数放在那里,我看到GNU目录下ubl.lds代码如下

       .selfcopy : AT(0x0)

     {

    *(.selfcopy)

     . = 0xe0

    }

    .=0x100

    .boot

    。。。。。。。

    这里的含义是将selfcopy函数存储地址制定为ox0,也就是绝对地址0x02000000,还是说这段代码无用,?

  • 你好,

          上面问题是我理解错了,现已明白。

         我现在在用的的spi norflash芯片是MX25L51245G,大小为512Mb,我看到关于nandflash启动,有这样的说明"RBL读取nand ID 相关消息根据自己的列表进行配置,所以硬件选型选择nand ID列表支持的芯片",那么SPI norflash是否有相关要求,如何确认我这款芯片是否被RBL支持?

  • 你好,

    就我的理解,SPI Flash没有像nand flash有各种各样不同的page size,block数量,所以一般都不看id的。只要满足下面的条件的spi flash,应该是可以使用的。下面的信息也是在ARM subsystem guide里面可以找到。

    • Support for 16-bit and 24-bit addressable EEPROMs through the UBL descriptor
    • Support for 4-pin SPI (CS, CLK, serial input, serial output)