/// <summary> /// The public constructor for the DM637x device AIS generator. /// The constructor is where the device differentiation is defined. /// </summary> public AISGen_C642x() { // Define the device name - used for default file names devNameShort = "C642x"; devNameLong = "TMS320C642x"; // Define the device caches (they are considered internal memories since // bootrom turns off caching) - two identical sets since the memory map // has the caches at two locations Cache = new CacheInfo[6]; Cache[0].level = CacheLevel.L2; Cache[0].type = CacheType.Program | CacheType.Data; Cache[0].startAddr = 0x00800000; Cache[0].size = 0x20000; Cache[1].level = CacheLevel.L1; Cache[1].type = CacheType.Program; Cache[1].startAddr = 0x00E08000; Cache[1].size = 0x8000; Cache[2].level = CacheLevel.L1; Cache[2].type = CacheType.Data; Cache[2].startAddr = 0x00F10000; Cache[2].size = 0x8000; Cache[3].level = CacheLevel.L2; Cache[3].type = CacheType.Program | CacheType.Data; Cache[3].startAddr = 0x10800000; Cache[3].size = 0x20000; Cache[4].level = CacheLevel.L1; Cache[4].type = CacheType.Program; Cache[4].startAddr = 0x10E08000; Cache[4].size = 0x8000; Cache[5].level = CacheLevel.L1; Cache[5].type = CacheType.Data; Cache[5].startAddr = 0x10F10000; Cache[5].size = 0x8000; // Define the IDMA channels for internal memory transfers IDMA = new IDMARegisters[2]; IDMA[0] = new IDMARegisters(0, 0x01820000); IDMA[1] = new IDMARegisters(1, 0x01820100); // Define C642x ROM boot loader functions ROMFunc = new ROMFunction[4]; ROMFunc[0].funcName = AISGen_C642x.ROMFunctionNames.PLLConfig; ROMFunc[0].iniSectionName = "PLL"; ROMFunc[0].numParams = 3; ROMFunc[0].paramNames = new String[3] { "PLLM", "PLLDIV1", "CLK_SRC" }; ROMFunc[1].funcName = AISGen_C642x.ROMFunctionNames.EMIFConfig; ROMFunc[1].iniSectionName = "EMIF"; ROMFunc[1].numParams = 5; ROMFunc[1].paramNames = new String[5] { "AB1CR", "AB2CR", "AB3CR", "AB4CR", "NANDFCR" }; ROMFunc[2].funcName = AISGen_C642x.ROMFunctionNames.DDRConfig; ROMFunc[2].iniSectionName = "DDR"; ROMFunc[2].numParams = 9; ROMFunc[2].paramNames = new String[9] { "DDRPLLM", "DDRCLKDIV", "VPFECLKDIV", "CLK_SRC", "DDRPHYCR", "SDBCR", "SDTIMR", "SDTIMR2", "SDRCR" }; ROMFunc[3].funcName = AISGen_C642x.ROMFunctionNames.PINMUXConfig; ROMFunc[3].iniSectionName = "PINMUX"; ROMFunc[3].numParams = 2; ROMFunc[3].paramNames = new String[2] { "PINMUX0", "PINMUX1" }; // Configuration info for the AISExtras functions (provided in AISExtraFileName COFF file) AISExtraFileName = "AISExtra_" + devNameShort + ".out"; AISExtraFunc = new AISExtraFunction[1]; AISExtraFunc[0].funcName = AISGen_C642x.AISExtraFunctionNames.LPSCTransition; AISExtraFunc[0].iniSectionName = "LPSC"; AISExtraFunc[0].numParams = 2; AISExtraFunc[0].paramNames = new String[2] { "MODNUM", "STATE" }; AISExtraFunc[0].isInitFunc = true; // C642x is little endian devEndian = Endian.LittleEndian; // Create a temp binary file for this object devAISFileName = devNameShort + ".ais"; devAISFileStream = null; // INI file describes ROM function parameters devINIFileName = devNameShort + ".ini"; // Default settings for UARTSendDONE function UARTSendDONEAddr = 0x0; SendUARTSendDONE = false; // Default boot mode (can be changed from INI file) for this device bootMode = BootModes.NONE; // Create default CRC object for this device devCRC = new CRC32(0x04C11DB7, 0, 0, false, 1); crcType = CRCCheckType.NO_CRC; }
/// <summary> /// The public constructor for the DM637x device AIS generator. /// The constructor is where the device differentiation is defined. /// </summary> public AISGen_OMAP_L138() { // Define the device name - used for default file names devNameShort = "OMAP-L138"; devNameLong = "OMAPL138"; // Define the device caches (they are considered internal memories since // bootrom turns off caching) - two identical sets since the memory map // has the caches at two locations Cache = new CacheInfo[6]; Cache[0].level = CacheLevel.L2; Cache[0].type = CacheType.Program | CacheType.Data; Cache[0].startAddr = 0x00800000; Cache[0].size = 0x40000; Cache[1].level = CacheLevel.L1; Cache[1].type = CacheType.Program; Cache[1].startAddr = 0x00E08000; Cache[1].size = 0x8000; Cache[2].level = CacheLevel.L1; Cache[2].type = CacheType.Data; Cache[2].startAddr = 0x00F10000; Cache[2].size = 0x8000; Cache[3].level = CacheLevel.L2; Cache[3].type = CacheType.Program | CacheType.Data; Cache[3].startAddr = 0x10800000; Cache[3].size = 0x40000; Cache[4].level = CacheLevel.L1; Cache[4].type = CacheType.Program; Cache[4].startAddr = 0x10E08000; Cache[4].size = 0x8000; Cache[5].level = CacheLevel.L1; Cache[5].type = CacheType.Data; Cache[5].startAddr = 0x10F10000; Cache[5].size = 0x8000; // Define the IDMA channels for internal memory transfers IDMA = new IDMARegisters[2]; IDMA[0] = new IDMARegisters(0, 0x01820000); IDMA[1] = new IDMARegisters(1, 0x01820100); // Define OMAP-L138 ROM boot loader functions ROMFunc = new ROMFunction[13]; ROMFunc[0].funcName = ROMFunctionNames.PLL0Config; ROMFunc[0].iniSectionName = "PLL0CONFIG"; ROMFunc[0].numParams = 2; ROMFunc[0].paramNames = new String[2] { "PLL0CFG0", "PLL0CFG1" }; ROMFunc[1].funcName = ROMFunctionNames.PLL1Config; ROMFunc[1].iniSectionName = "PLL1CONFIG"; ROMFunc[1].numParams = 2; ROMFunc[1].paramNames = new String[2] { "PLL1CFG0", "PLL1CFG1" }; ROMFunc[2].funcName = ROMFunctionNames.PeriphClockConfig; ROMFunc[2].iniSectionName = "PERIPHCLKCFG"; ROMFunc[2].numParams = 1; ROMFunc[2].paramNames = new String[1] { "PERIPHCLKCFG" }; ROMFunc[3].funcName = ROMFunctionNames.EMIF3AConfigDDR; ROMFunc[3].iniSectionName = "EMIF3DDR"; ROMFunc[3].numParams = 8; ROMFunc[3].paramNames = new String[8] { "PLL1CFG0", "PLL1CFG1", "DDRPHYC1R", "SDCR", "SDTIMR", "SDTIMR2", "SDRCR", "CLK2XSRC" }; ROMFunc[4].funcName = ROMFunctionNames.EMIF25ConfigSDRAM; ROMFunc[4].iniSectionName = "EMIF25SDRAM"; ROMFunc[4].numParams = 5; ROMFunc[4].paramNames = new String[5] { "SDBCR", "SDTIMR", "SDRSRPDEXIT", "SDRCR", "DIV4p5_CLK_ENABLE" }; ROMFunc[5].funcName = ROMFunctionNames.EMIF25ConfigAsync; ROMFunc[5].iniSectionName = "EMIF25ASYNC"; ROMFunc[5].numParams = 5; ROMFunc[5].paramNames = new String[5] { "A1CR", "A2CR", "A3CR", "A4CR", "NANDFCR" }; ROMFunc[6].funcName = ROMFunctionNames.PLLandClockConfig; ROMFunc[6].iniSectionName = "PLLANDCLOCKCONFIG"; ROMFunc[6].numParams = 3; ROMFunc[6].paramNames = new String[3] { "PLL0CFG0", "PLL0CFG1", "PERIPHCLKCFG" }; ROMFunc[7].funcName = ROMFunctionNames.PSCConfig; ROMFunc[7].iniSectionName = "PSCCONFIG"; ROMFunc[7].numParams = 1; ROMFunc[7].paramNames = new String[1] { "LPSCCFG" }; ROMFunc[8].funcName = ROMFunctionNames.PINMUXConfig; ROMFunc[8].iniSectionName = "PINMUX"; ROMFunc[8].numParams = 3; ROMFunc[8].paramNames = new String[3] { "REGNUM", "MASK", "VALUE" }; ROMFunc[9].funcName = ROMFunctionNames.FastBoot; ROMFunc[9].iniSectionName = "FASTBOOT"; ROMFunc[9].numParams = 0; ROMFunc[9].paramNames = null; ROMFunc[10].funcName = ROMFunctionNames.IOPUConfig; ROMFunc[10].iniSectionName = "IOPUCONFIG"; ROMFunc[10].numParams = 2; ROMFunc[10].paramNames = new String[2] { "IOPUSELECT", "MPPAVALUE" }; ROMFunc[11].funcName = ROMFunctionNames.MPUConfig; ROMFunc[11].iniSectionName = "MPUCONFIG"; ROMFunc[11].numParams = 4; ROMFunc[11].paramNames = new String[4] { "MPUSELECT", "STARTADDR", "ENDADDR", "MPPAVALUE" }; ROMFunc[12].funcName = ROMFunctionNames.TAPSConfig; ROMFunc[12].iniSectionName = "TAPSCONFIG"; ROMFunc[12].numParams = 1; ROMFunc[12].paramNames = new String[1] { "TAPSCFG" }; // Configuration info for the AISExtras functions (provided in AISExtraFileName COFF file) /* AISExtraFileName = null; * * AISExtraFunc = null;*/ AISExtraFileName = "AISExtra_" + devNameShort + ".out"; AISExtraFunc = new AISExtraFunction[1]; AISExtraFunc[0].funcName = "MakeROMEmulatableAndWait"; AISExtraFunc[0].iniSectionName = "OPENROMFORDEBUG"; AISExtraFunc[0].numParams = 0; AISExtraFunc[0].paramNames = null; AISExtraFunc[0].isInitFunc = true; // OMAP-L138 is little endian devEndian = Endian.LittleEndian; // OMAP-L138 AIS data is little endian; devAISEndian = Endian.LittleEndian; // Default settings for UARTSendDONE function UARTSendDONEAddr = 0x0; SendUARTSendDONE = false; // Default boot mode (can be changed from INI file) for this device bootMode = BootModes.NONE; // Create default CRC object for this device devCRC = new CRC32(0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true, 1, UtilLib.CRC.CRCType.INCREMENTAL, UtilLib.CRC.CRCCalcMethod.LUT); crcType = CRCCheckType.NO_CRC; }