您好:
我目前在研究SPI BOOT PARAMETER TABLE 时,希望用16bit表示其所有时钟频率的映射关系,其中已经知道CPU时钟频率为5MHZ时,16bit
0x0320 0000;//CPU频率,默认5MHZ
0x01f4 0000;//bus 频率
有几点求助:
1、希望高手给出spi boot parameter table的针对不同频率的16bit 映射关系图。
2、我算下来最高频率能达到40M左右,但映射关系表就乱了
请高手帮忙,谢谢!
Andy Yin1:
不太明白你的问题,boot parameter table的各个字段的定义见RBL中的tiboot.h如附件,其中cpuFreqMhz字段是16bit,单位是MHz,0x320代表的是800MHz
0x00500000 length checksum
0x00320000 boot_mode portNum
0x40140002 swPllCfg_msw swPllCfg_lsw
0x00010018 options addrWidth
0x00040000 n_pins csel
0x00000000 mode c2tdelay
0x03e80000 cpuFreqMhz busFreqMhz
0x01f40051 busFreqKhz read_addr_msw
0x04000000 read_addr_lsw next_csel
jun zhang27:
回复 Andy Yin1:
您好,我是初学spi boot parameter table的内容,现在想获得busFreqMhz及busFreqKhz所有可取的频率值及对应的16bit映射关系
例如 0x03e80000 cpuFreqMhz busFreqMhz 中后四位0000,为默认值5MHZ。我想知道:对于spi bus 的所能取得频率值,比如40Mhz,20Mhz,10Mhz等等,它应该用xxxx表示,那对应的xxxx是哪些值及可取的频率值?
0x01f40051 busFreqKhz read_addr_msw,也是一样的,需要获得busFreqKhz的频率取值范围及对应的xxxx值。麻烦您了。谢谢!
Andy Yin1:
回复 jun zhang27:
十六进制转换为十进制对应的就是频率值,没有什么转换关系。如0x03e80000 cpuFreqMhz busFreqMhz,其中前16bit为cpuFreqMhz,对应的就是cpu主频1000MHz,0x01f40051 busFreqKhz read_addr_msw前16bit为busFreqKhz,对应就是500KHz。
jun zhang27:
回复 Andy Yin1:
您好,我的问题可能还没描述清楚,给您带来理解的不便,sorry。
为什么我对你的回复不解呢,在如0x03e80000 cpuFreqMhz busFreqMhz,后16bit为0x0000,可它默认的频率值是5MHZ,这就与16进制转换为10进制的结果不一样了(5Mhz对应0x0000,无法理解)。
我现在想知道spi bus Freq可取的频率值及范围,和对应的16进制表示。
Andy Yin1:
回复 jun zhang27:
"后16bit为0x0000" 对应的是0MHz,5MHZ的话后16bit应该是5;SPI bus clock取值如SPI user guide下面截图所述,SPI module clock=CPU clock/6
jun zhang27:
回复 Andy Yin1:
你好,SPI module clock=CPU clock/6,即对CPU clock进行6分频,在配置spi boot parameter 之前,那么CPU clock实际的时钟频率是多少?
Andy Yin1:
回复 jun zhang27:
如bootloader user guide所述,SPI boot mode是PLL是bypass的,即corepac是工作在参考时钟频率,之后可以根据boot parameter table中的PLL参数进行配置的。