大家好,
我们的板卡是C6670+Spartan6,C6670与S6之间有I2C连接,计划将C6670设置为I2C slave boot模式,由S6完成对C6670的boot。
但是我对Boot有一些疑问,希望大家帮助解答~
******************************************************************************************************************************************************
问题1:如果将C6670的Bootmode引脚置为I2C slave模式下,上电后RBL将“bypass PLL and runs the CorePacs at the reference clock frequency and also configures the I2C bus at the lower rate to start with“。
我的疑问是:在连接仿真器在线调试状态下,是GEL负责完成了main PLL的配置以实现工作在1GHz或者1.25GHz之类的。
那么在非在线调试I2C slave boot方式下,main PLL是怎么配置起来的?
或者说是在非在线调试I2C slave boot方式下,那个文件或者什么东西,替代了GEL的功能(比如配置main PLL、初始化DDR3等等)?
需要在程序中加上mian PLL的配置代码吗?还是说用boot parameter table完成对main PLL的配置?
如果是用boot parameter table的方式,那么如何编写或者生成boot parameter table?
比如,我想设置main PLL使得C6670 Core工作在1GHz,那么怎么编写对应的boot parameter table?
******************************************************************************************************************************************************
问题2:在连接仿真器在线调试状态下,有着CMD文件指定了程序中各种变量的物理存放地址。
那么在非在线调试I2C slave boot状态下,在DSP内部运行中的程序在某个时刻生成的局部变量,是如何知道应该在哪生成的呢?
难道CMD文件的信息其实也融合进了.out文件中去了?然后使用hex工具转换后,这些信息仍然存在?
******************************************************************************************************************************************************
问题3:在I2C slave模式下,是不是只要使用hex工具将.out文件转换成boot table,然后把这个boot table文件给FPGA,当C6670上电后,FPGA负责把这个boot table一个一个byte地传给C6670,就能最终boot起来?
******************************************************************************************************************************************************
希望大家帮助解答,谢谢哈~~
Feng Jin:
还有一个问题:
我参照了http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/46608.aspx这个页面的文档,打算实现I2C slave boot。
按照keystone bootloader文档,romparse是用于在boot table上连接上boot parameter table的。
在0601.Booting from the SPI NOR on C6670.pdf这个文件中的Step 4,使用了nysh.spi.map这个文件。这个文件的内容大致如下:
section { boot_mode = 50 param_index = 0 options = 1 core_freq_mhz = 800 exe_file = "simple.i2c.ccs" next_dev_addr_ext = 0x0 sw_pll_prediv = 5 sw_pll_mult = 32 sw_pll_postdiv = 2 sw_pll_flags = 1 addr_width = 24 n_pins = 4 csel = 0 mode = 1 c2t_delay = 0 bus_freq_mhz = 0 bus_freq_khz = 500}
这里面的符号,比如boot_mode肯定是能够被romparse识别的。
但是哪个文档说明了这些符号的具体含义?与boot parameter table中的参数是一一对应的吗?
还有一些boot parameter table中有的参数,而这个文件里面貌似没有对应符号的,应该从哪里去找到对应的能够被romparse识别的符号?
Allen35065:
1. 建议你看看bootloader这篇文档,i2c boot main PLL是bypass的,之后怎么配文档上有详细的说明;
2. cmd文件指定的是段的存放,编译out文件时调用
3. 参看bootloader文档I2C boot
Allen35065:
回复 Feng Jin:
你要去6670的页面上下载最新的bootloader文档来作为参考