(原创)DSP Sharc 21565笔记

2022/12/06 DSP

SPI Master boot mode

外挂一颗16Mbytes的SPI FLASH,设置boot mode为SPI Master boot mode:

CS和MISO信号需要上拉到VDD,SCK下拉到地。

SYS_BMODE1/2/3脚根据上图配置,选择SPI2 master模式。

boot检测

上电后,DSP会尝试发送SPIX_MOSI数据,LDR文件默认首字节(BCODE)为1,因此一旦读取到1,就可以自动检测地址长度是24bits还是32bits,这里我们使用GD25Q127芯片,16Mbytes,地址是24bits,因此到第5个字节就能收到1。

如果SPI FLASH型号不一样,甚至要提高速度,比如采用DUAL MODE,或者QUAD MODE,那需要将BCODE做对应的修改。

下图是GD25Q127的操作命令,可以和BCODE吻合。

Boot block

LDR文件都是采用如下格式组成。

每个block包含4部分,总共16bytes,每部分4bytes。

  • Block code 每个位段不同含义,0-3位就是BCODE的值
  • Target address 目标地址,必须能被4整除,方便DMA操作
  • Byte count 字节数,必须能被4整除
  • Argument field 参数

LDAR文件包含一个BFLAG_FIRST段,包含一个BFLAG_FINAL段。

BFLAG_FIRST段中Target address为程序的入口地址。

当内置boot读取完毕BFLAG_FINA段之后,就会跳到BFLAG_FIRST段中Target address地址开始运行程序。

综上,总共有以下几个block types:

  • Normal Block
  • First Block
  • Final Block
  • Indirect Block
  • Ignore Block
  • Fill Block
  • Init Block
  • Callback Block
  • Save Block

当然最简单的boot stream当属 sigle block模式,加上First block和Final block就3个block。

启动的时候还可以通过CRC32来校验数据的完整性,可以在开始加入init block,然后TARGET ADDRESS指向adi_rom_Crc32Init() ROM函数,ARGUMENT填写CRC32的多项式,一旦这个block被执行,后续所有的block(除了ignore和first)的payload都会使用CRC32来校验


知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

站内搜索

    撩我备注-博客

    joinee

    目录结构