Hello 您好,
最近一直用C6657 的spi nor flash烧写程序一直没有成功,加载的gel 是在 C:\ti\mcsdk_2_01_02_06\tools\writer\nor\下的相关 gel 文件。
最近一直没有弄成功,请教是否因为下列问题:
1. PLL 初始化不成功(在 gel 文件)
2. DDR3 初始化不成功()在 gel 文件)。
3. SPI nor flash 用这个工程烧写C:\ti\mcsdk_2_01_02_06\tools\writer\nor\evmc6657l spi nor flash.
,SPI接口是否需要初始化在 gel 文件
5. SPI nor flash 是否需要ibl. norwriter 工程是否需要做SPI nor flash初始化。我看网上有的说有需要 ibl,有的说没有不需要,现在那个更大众一点,用的最广泛。 mcsdk的例程是 带 ibl 还是不带ibl的
6. norwriter 用这个工程操作必须在 no uboot mode下?
或者您那有更好的指导连接及文档,非常感谢。最早的时候有个 Andy Yin的连接关于spi nor flash的现在找不到了。
如果spi nor flash有ibl 和 非ibl两种模式,能否提供这两个的相应例程,非常感谢
Shine:
C665x没有PLL bug,可以不用IBL,直接从spi nor flash启动,请参考下面wiki网站上的例程,带DDR初始化的。例程里的SPIboot_with_DDR_UserGuide.docx文档有详细的步骤说明。
C6657 EVM SPI boot example with DDR initialization
processors.wiki.ti.com/…/KeystoneI_Bootloader_Resources_and_FAQ
Lingcon Meng:
回复 Shine:
Hello Shine, 非常感谢您的回复。 根据您的回复已经完成了烧写工作,但是boot起来后打印出来的数据是乱码,打印的是串口输出,而且数据的个数不对。 这个大概是什么原因。
另外我们的板子和评估板不同,需要注意那些方面? 特别是DDR3参数的设置,都需要注意那几些参数,这些参数在那个文件修改?
另外在 nysh.SPI.map 中的参数都是給SPI 进行参数配置,与DDR3 配置无关?
另外,关于DDR3 The DDR configuration table location defined by Boot ROM:
C6678: 0x00873500C6657: 0x008FFD20
这两个地址是固定的吗,还是自定义的? 我看了memory map 发现boot rom的地址不是这个地址,是否我理解有误?
我们目前的DDR3 输入基准时钟是 100Mhz,DDR3 是1333Mhz,修改PLLmult = 39, pllpostDiv =2 是否就可以保证是1333Mhz DDR3?
谢先!
BRS, Meng
Lingcon Meng:
回复 Shine:
Hello Shine,
根据您提供的连接,下载了最新的 非IBL的 直接 SPI nor flash 工程 C6657_directROM_Boot_example.zip。仔细看nor flash 的相关的代码,并执行操作,有以下问题请教: 1) 在emif4Cfg 表格中, pllPrediv 是否需要设置,PLL最新文档说,这一位已经没有? 2) 另外,我的外接时钟 是 100Mhz,DDR3 1333Mhz,pllMult 和 pllPostDiv 是 设置为 39和2,还是设置成 40和3? 0, /* pllPrediv */ 39, /* pllMult */ 2, /* pllPostDiv */ 3) spi boot.rmd 中的 memwidth = 32, romwidth = 32 两个宽度分别 指的谁的宽度,DDR3,还是 EEPROM,FLASH的? 我们用的 NOR Flash 是 N25Q128A11ESE40F,DDR3 是MT41J128M16HA-15EIT,DDR3提供的基本时钟是 100Mh 下表 是我们DDR3 参数设置,在CCS已经验证这些参数,可以正常初始化 DDR3,但是 根据文档及其操作,显示烧写成功,但是NOr flash一直不能正常启动,打开CCS 输入0x8000 0000地址,然后给DDR3 写数据,没有成功过 #pragma DATA_SECTION (emif4Cfg, ".emif4Cfg") const BOOT_EMIF4_TBL_T emif4Cfg = { BOOT_EMIF4_ENABLE_MSW_pllCtl | \ BOOT_EMIF4_ENABLE_MSW_sdRamTiming1 | \ BOOT_EMIF4_ENABLE_MSW_sdRamTiming2 | \ BOOT_EMIF4_ENABLE_MSW_sdRamTiming3 | \ BOOT_EMIF4_ENABLE_MSW_ddrPhyCtl1 | \ BOOT_EMIF4_ENABLE_MSW_sdRamRefreshCtl | \ BOOT_EMIF4_ENABLE_MSW_sdRamOutImpdedCalCfg | \ BOOT_EMIF4_ENABLE_MSW_sdRamConfig, BOOT_EMIF_ENABLE_SLSW_config0 | \ BOOT_EMIF_ENABLE_SLSW_config6 | \ BOOT_EMIF_ENABLE_SLSW_config7 | \ BOOT_EMIF_ENABLE_SLSW_config8 | \ BOOT_EMIF_ENABLE_SLSW_config9 | \ BOOT_EMIF_ENABLE_SLSW_config10 | \ BOOT_EMIF_ENABLE_SLSW_config18 | \ BOOT_EMIF_ENABLE_SLSW_config19 | \ BOOT_EMIF_ENABLE_SLSW_config20 | \ BOOT_EMIF_ENABLE_SLSW_config22 | \ BOOT_EMIF_ENABLE_SLSW_config12 | \ BOOT_EMIF_ENABLE_SLSW_config23 | \ BOOT_EMIF_ENABLE_SLSW_config21, /* Config select slsw */ 0, /* Config select lsw */ 0, /* pllPrediv */ 39, /* pllMult */ 2, /* pllPostDiv */ 0x63066AB2, /* sdRamConfig,0x62477AB2 */ 0, /* sdRamConfig2, dont care*/ 0x00001458, /* sdRamRefreshCtl,0x0000144F,0x80005161,0x00005161 */ 0x1113783C, /* sdRamTiming1,0x1333780C*/ 0x30717FE3, /* sdRamTiming2,0x30717FE3 */ 0x55BF86AF, /* sdRamTiming3,0x559F86AF*/ 0, /* lpDdrNvmTiming, dont care */ 0, /* powerManageCtl, dont care */ 0, /* iODFTTestLogic, dont care */ 0, /* performCountCfg, dont care */ 0, /* performCountMstRegSel, dont care */ 0, /* readIdleCtl, dont care */ 0x00081020, /* sysVbusmIntEnSet, dont care */ 0x70073DBB, /* sdRamOutImpdedCalCfg, 0x70074c1f,dont care */ 0, /* tempAlterCfg, dont care */ 0x0010010A, /* ddrPhyCtl1,0x0010010F,0x0010010D */ 0, /* ddrPhyCtl2, dont care */ 0x80005500, /* priClassSvceMap, dont care */ 0, /* mstId2ClsSvce1Map, dont care */ 0, /* mstId2ClsSvce2Map, dont care */ 0, /* eccCtl, dont care */ 0, /* eccRange1, dont care */ 0, /* eccRange2, dont care */ 0x0000070F, /* rdWrtExcThresh, dont care */ 0, 0, 0x6C, 0x6C, 0x7A, 0x73, 0, 0, 0, 0, 0x5C, 0, 0, 0, 0xB0, 0xB0, 0xBD, 0x03, 0, 0, 0, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0t };
4)是否我们烧写程序时,必须用该工程的norwriter_evm6657l.out ,而不是 用mcsdk 下面的norwriter 工程烧写?还有,这个norwriter_evm6657l.out 是针对 C6657 来操作的,能够可以用到C6655 SPI nor flash的烧写(不做改动)
5)另外,如何烧写应用程序,刚才这个应该是启动程序?
请给予帮助,谢谢
user5640622:
回复 Lingcon Meng:
你好:
我在做6655的spi-nor-flash加载启动,DDR和你的型号一样,时钟输入也一致,看TI提供的文档发现DDR table好像不用在加载时配置,用程序初始化DDR,请问你是这样操作的吗?
我用6678这样操作成功进行了spi-nor-flash加载启动,6655现在加载进去后串口收数不稳定,现在你的问题解决了吗,可以留下邮箱或者QQ交流一下。