TMS320C6678开发笔记---IBL编译与分析4

9.3.13修改app.out在nor flash的起始地址

C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\util\iblConfig\src\device.c

 

9.3.14 NOR FLASH IBL使用烧写步骤

  1. 最终编译出来的NOR Flash的IBL镜像为spiRom.bin(C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\make\ibl_c66x)
  2. 使用norwriter_evm6678l.out将IBL烧写到NOR 0地址处
  3. 使用norwriter_evm6678l.out将app烧写到NOR 0x100000地址处,
  4. 将开发板设置为NOR flash启动,重启开发板即可看到如下打印:

  • 两种模式下nor_writer_input.txt文件内容如下:

烧写IBL:

烧写app (start_addr = 1048576)

9.3.15 4TI-64bit DDR初始化

  • 上一节发现IBL中DDR初始化失败
  • 修改方法:将创龙提供的DSP_C6678.gel文件中的IBL DDR配置参数拷贝来,重新编译

C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\util\iblConfig\src\device.c 函数c6678_ibl_config

9.3.16 黑边-32bit DDR初始化

ibl_t c6678_ibl_config(void)
{
	ibl_t ibl;
    memset(&ibl, 0, sizeof(ibl_t));
    
	ibl.iblMagic = ibl_MAGIC_VALUE;
	ibl.iblEvmType = ibl_EVM_C6678L;

	/* Main PLL: 100 MHz reference, 1GHz output */
	ibl.pllConfig[ibl_MAIN_PLL].doEnable      = 1;
	ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
	ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
	ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 2;
	ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;

	/* DDR PLL: */
	ibl.pllConfig[ibl_DDR_PLL].doEnable       = 1; 
	ibl.pllConfig[ibl_DDR_PLL].prediv         = 1;
	ibl.pllConfig[ibl_DDR_PLL].mult           = 12;
	ibl.pllConfig[ibl_DDR_PLL].postdiv        = 1;
	ibl.pllConfig[ibl_DDR_PLL].pllOutFreqMhz  = 800;

    /* Net PLL: 100 MHz reference, 1050 MHz output (followed by a built in divide by 3 to give 350 MHz to PA) */
	ibl.pllConfig[ibl_NET_PLL].doEnable       = 0;
	ibl.pllConfig[ibl_NET_PLL].prediv         = 1;
	ibl.pllConfig[ibl_NET_PLL].mult			  = 21;
	ibl.pllConfig[ibl_NET_PLL].postdiv        = 2;
	ibl.pllConfig[ibl_NET_PLL].pllOutFreqMhz  = 1050;


	ibl.ddrConfig.configDdr = 1;
	ibl.ddrConfig.uEmif.emif4p0.registerMask = ibl_EMIF4_ENABLE_sdRamConfig | ibl_EMIF4_ENABLE_sdRamRefreshCtl | ibl_EMIF4_ENABLE_sdRamTiming1 | ibl_EMIF4_ENABLE_sdRamTiming2 | ibl_EMIF4_ENABLE_sdRamTiming3 | ibl_EMIF4_ENABLE_ddrPhyCtl1;

	ibl.ddrConfig.uEmif.emif4p0.sdRamConfig				= 0x63066A32; //0x63066A32
	ibl.ddrConfig.uEmif.emif4p0.sdRamConfig2			= 0;
	ibl.ddrConfig.uEmif.emif4p0.sdRamRefreshCtl			= 0x000030D4;
	ibl.ddrConfig.uEmif.emif4p0.sdRamTiming1			= 0x1113783C;
	ibl.ddrConfig.uEmif.emif4p0.sdRamTiming2			= 0x30717FE3;
	ibl.ddrConfig.uEmif.emif4p0.sdRamTiming3 			= 0x559F86AF;
	ibl.ddrConfig.uEmif.emif4p0.lpDdrNvmTiming			= 0;
	ibl.ddrConfig.uEmif.emif4p0.powerManageCtl			= 0;
	ibl.ddrConfig.uEmif.emif4p0.iODFTTestLogic			= 0;
	ibl.ddrConfig.uEmif.emif4p0.performCountCfg			= 0;
	ibl.ddrConfig.uEmif.emif4p0.performCountMstRegSel	= 0;
	ibl.ddrConfig.uEmif.emif4p0.readIdleCtl				= 0;
	ibl.ddrConfig.uEmif.emif4p0.sysVbusmIntEnSet		= 0;
	ibl.ddrConfig.uEmif.emif4p0.sdRamOutImpdedCalCfg	= 0;
	ibl.ddrConfig.uEmif.emif4p0.tempAlterCfg			= 0;
	ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl1 				= 0x0010010F;
	ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl2				= 0;
	ibl.ddrConfig.uEmif.emif4p0.priClassSvceMap			= 0;
	ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce1Map		= 0;
	ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce2Map		= 0;
	ibl.ddrConfig.uEmif.emif4p0.eccCtl				    = 0;
	ibl.ddrConfig.uEmif.emif4p0.eccRange1				= 0;
	ibl.ddrConfig.uEmif.emif4p0.eccRange2				= 0;
	ibl.ddrConfig.uEmif.emif4p0.rdWrtExcThresh			= 0;
………
}

9.3.17 配合MAD工具使用IBL配置修改点

https://processors.wiki.ti.com/index.php/MCSDK_Image_Processing_Demonstration_Guide

上述网页中也有相关介绍

9.3.18 IBL中打印变量值

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值