c2000ware-core-sdk/driverlib/.meta/sysctl.js

527 lines
17 KiB
JavaScript
Raw Normal View History

2023-06-24 09:05:38 +03:00
let Common = system.getScript("/driverlib/Common.js");
let Pinmux = system.getScript("/driverlib/pinmux.js");
let device_driverlib_peripheral =
system.getScript("/driverlib/device_driverlib_peripherals/" +
Common.getDeviceName().toLowerCase() + "_sysctl.js");
var selectAccessOption = device_driverlib_peripheral.SysCtl_AccessController
if(!selectAccessOption)
{
selectAccessOption = device_driverlib_peripheral.SysCtl_AccessMaster
}
var selectControllerOption = device_driverlib_peripheral.SYSCTL_SEC_CONTROLLER;
if(!selectControllerOption)
{
selectControllerOption = device_driverlib_peripheral.SYSCTL_SEC_MASTER;
}
var enablePeipheralConfigs = []
device_driverlib_peripheral.SysCtl_PeripheralPCLOCKCR.
forEach((element, index) =>
{
var skipCpu2Enable = false;
var defaultValue = true;
if ([
"SYSCTL_PERIPH_CLK_TBCLKSYNC",
"SYSCTL_PERIPH_CLK_GTBCLKSYNC"
].includes(element.name)){
defaultValue = false;
}
if (["F2837xD"].includes(Common.getDeviceName()) && Common.isContextCPU2()){
if([
"SYSCTL_PERIPH_CLK_HRPWM",
"SYSCTL_PERIPH_CLK_EMIF1", "SYSCTL_PERIPH_CLK_EMIF2",
"SYSCTL_PERIPH_CLK_USBA", "SYSCTL_PERIPH_CLK_UPPA"
].includes(element.name)){
skipCpu2Enable = true;
}
}
if (["F2838x"].includes(Common.getDeviceName()) && Common.isContextCPU2()){
if([
"SYSCTL_PERIPH_CLK_HRCAL",
"SYSCTL_PERIPH_CLK_EMIF1", "SYSCTL_PERIPH_CLK_EMIF2",
"SYSCTL_PERIPH_CLK_USBA",
"SYSCTL_PERIPH_CLK_DCC0", "SYSCTL_PERIPH_CLK_DCC1", "SYSCTL_PERIPH_CLK_DCC2",
"SYSCTL_PERIPH_CLK_ECAT", "SYSCTL_PERIPH_CLK_MCANA"
].includes(element.name)){
skipCpu2Enable = true;
}
}
if (!skipCpu2Enable){
enablePeipheralConfigs.push(
{
name: "enable_" + element.name,
displayName: element.displayName,
default : defaultValue
}
)
}
}
);
var gpios = Common.getGPIOs();
var lpmGpios = []
for (var gpioNumber = 0; gpioNumber <= 63; gpioNumber++)
{
if (gpios.includes("GPIO" + gpioNumber.toString()))
{
lpmGpios.push({ name : gpioNumber, displayName: "GPIO" + gpioNumber.toString()});
}
}
var lpmConfigs = [
{
name: "lpmWakeUpPin",
displayName: "LPM Wake Up Pin",
default : [],
minSelections : 0,
options : lpmGpios,
}
]
if (!["F28004x"].includes(Common.getDeviceName()))
{
var standbyOptions = []
for (var prd = 0; prd <= 63; prd++)
{
standbyOptions.push({
name: prd + 2,
displayName: (prd + 2).toString() + " OSCCLKs"
})
}
lpmConfigs.push({
name: "standbyQualificationPeriod",
displayName: "Standby Qualification Period",
options : standbyOptions,
default: standbyOptions[0].name
})
}
/* Array of CAN configurables that are common across device families */
let staticConfig = [
{
name: "splitCode",
displayName: "Split Code into Separate File",
default: false,
},
{
name: "GROUP_LPM",
displayName: "Low Power Mode",
longDescription : "",
config : lpmConfigs
},
{
name: "GROUP_ENABLE_PERIPHERAL",
displayName: "Enable Peripherals",
longDescription : "",
config : enablePeipheralConfigs
}
];
var enableCpuSel = true;
if (["F2837xD", "F2838x"].includes(Common.getDeviceName()) && Common.isContextCPU2()){
enableCpuSel = false;
}
if (device_driverlib_peripheral.SysCtl_CPUSelPeripheral && enableCpuSel)
{
var cpuSelPeipheralConfigs = []
device_driverlib_peripheral.SysCtl_CPUSelPeripheral.
forEach((element, index) =>
{
var peripheralInsts = Common.peripheralListFromSysCtl(element.name.split("_").slice(-1)[0], device_driverlib_peripheral)
var cpuSelPerupheralInstsConfigs = []
peripheralInsts.forEach((element_periphInst, index) => {
cpuSelPerupheralInstsConfigs.push(
{
name: "cpuSel_" + element_periphInst,
displayName : element_periphInst,
default : device_driverlib_peripheral.SysCtl_CPUSel[0].name,
options: device_driverlib_peripheral.SysCtl_CPUSel
}
)
});
cpuSelPeipheralConfigs.push(
{
name: "GROUP_CPUSEL_" + element.name,
displayName : element.displayName,
config: cpuSelPerupheralInstsConfigs
}
)
}
);
var cpuSelControlConfig = {
name: "GROUP_CPUSEL_PERIPHERAL",
displayName: "CPU Select For Peripherals",
longDescription : "",
config : cpuSelPeipheralConfigs,
}
staticConfig.push(cpuSelControlConfig)
}
if (device_driverlib_peripheral.SysCtl_AccessPeripheral)
{
var accessPeipheralConfigs = [
{
name: "lockAccessControlRegs",
displayName: "Lock Access Control Regsiters",
default: false
}
]
device_driverlib_peripheral.SysCtl_AccessPeripheral.
forEach((element, index) =>
{
var accessPermissionConfigs = []
selectAccessOption.forEach((accMast, accMastIndex) => {
var skipAccess = false;
if (["F28003x"].includes(Common.getDeviceName()))
{
if (
(element.name == "SYSCTL_ACCESS_HICA" && accMast.name == "SYSCTL_ACCESS_HIC") ||
(element.name == "SYSCTL_ACCESS_AESA" && accMast.name == "SYSCTL_ACCESS_HIC") ||
(element.name == "SYSCTL_ACCESS_MCANA" && accMast.name == "SYSCTL_ACCESS_DMA1") ||
(element.name.includes("SYSCTL_ACCESS_I2C") && accMast.name == "SYSCTL_ACCESS_DMA1") ||
(element.name.includes("SYSCTL_ACCESS_SCI") && accMast.name == "SYSCTL_ACCESS_DMA1")||
(element.name == "SYSCTL_ACCESS_CANA" && accMast.name == "SYSCTL_ACCESS_CLA1") ||
(element.name.includes("SYSCTL_ACCESS_CLB") && accMast.name == "SYSCTL_ACCESS_DMA1") ||
(element.name.includes("SYSCTL_ACCESS_ADC") && accMast.name == "SYSCTL_ACCESS_DMA1") ||
(element.name.includes("SYSCTL_ACCESS_ADC") && accMast.name == "SYSCTL_ACCESS_HIC")
)
{
skipAccess = true;
}
}
if (["F28004x"].includes(Common.getDeviceName()))
{
if (
(element.name.includes("SYSCTL_ACCESS_CLB") && accMast.name == "SYSCTL_ACCESS_DMA1") ||
(element.name == "SYSCTL_ACCESS_CLA1PROMCRC" && accMast.name == "SYSCTL_ACCESS_DMA1")||
(element.name.includes("SYSCTL_ACCESS_CAN") && accMast.name == "SYSCTL_ACCESS_CLA1")
)
{
skipAccess = true;
}
}
if ((!skipAccess) && (accMast.name == "SYSCTL_ACCESS_HIC"))
{
accessPermissionConfigs.push({
name: "accessPermission_" + element.name + "_" + accMast.name,
legacyNames: ["accessPermission_" + element.name + "_" + "SYSCTL_ACCESS_HICMASTER"],
displayName : accMast.displayName,
default : device_driverlib_peripheral.SysCtl_AccessPermission[0].name,
options: device_driverlib_peripheral.SysCtl_AccessPermission
})
}
else if (!skipAccess)
{
accessPermissionConfigs.push({
name: "accessPermission_" + element.name + "_" + accMast.name,
displayName : accMast.displayName,
default : device_driverlib_peripheral.SysCtl_AccessPermission[0].name,
options: device_driverlib_peripheral.SysCtl_AccessPermission
})
}
})
accessPeipheralConfigs.push(
{
name: "GROUP_" + element.name,
displayName: element.displayName.replace("access", "Access"),
config : accessPermissionConfigs
}
)
}
);
var accessControlConfig = {
name: "GROUP_ACCESS_CONTROL_PERIPHERAL",
displayName: "Access Control For Peripherals",
longDescription : "",
config : accessPeipheralConfigs,
}
staticConfig.push(accessControlConfig)
}
if (selectControllerOption)
{
var secControllerFrameConfig = []
secControllerFrameConfig.push({
name: "secControllerFrame1",
legacyNames : ["secMasterFrame1"],
displayName : "Frame 1 Secondary Controller",
default : selectControllerOption[0].name,
options: selectControllerOption
})
secControllerFrameConfig.push({
name: "secControllerFrame2",
legacyNames : ["secMasterFrame2"],
displayName : "Frame 2 Secondary Controller",
default : selectControllerOption[0].name,
options: selectControllerOption
})
staticConfig.push({
name: "GROUP_SECONDARY_CONTROLLER",
displayName: "Peripheral Frame Secondary Controller",
config: secControllerFrameConfig
})
}
if (device_driverlib_peripheral.SysCtl_SharedPeripheral && enableCpuSel)
{
var sharedPeripheralAllocateConfig = []
device_driverlib_peripheral.SysCtl_SharedPeripheral.forEach((element, index) =>
{
sharedPeripheralAllocateConfig.push({
name: "sharedPeripheralAllocate_" + element.name,
displayName : element.displayName,
default : false
})
})
staticConfig.push({
name: "GROUP_SHARED_PERIPH_ALLOCATE",
displayName: "Shared Peripheral Allocation",
config: sharedPeripheralAllocateConfig
})
}
if (device_driverlib_peripheral.SysCtl_ClkRegSel)
{
var clockLockConfig = []
device_driverlib_peripheral.SysCtl_ClkRegSel.forEach((element, index) =>
{
clockLockConfig.push({
name: "lockClk_" + element.name,
displayName : element.displayName,
default : false
})
})
staticConfig.push({
name: "GROUP_CLOCK_LOCK",
displayName: "Lock Clock Configs",
config: clockLockConfig
})
}
if (device_driverlib_peripheral.SysCtl_CpuRegSel)
{
var sysLockConfig = []
device_driverlib_peripheral.SysCtl_CpuRegSel.forEach((element, index) =>
{
sysLockConfig.push({
name: "sysClk_" + element.name,
displayName : element.displayName,
default : false
})
})
staticConfig.push({
name: "GROUP_SYS_LOCK",
displayName: "Lock System Configs",
config: sysLockConfig
})
}
staticConfig.push({
name: "GROUP_NMI",
displayName : "NMI",
config: [
{
name: "enableNMIGlobalInterrupt",
displayName: "Enable NMI Global Interrupt",
default: false
},
// {
// name: "registerNMIInterrupt",
// displayName: "Register NMI Interrupt Handler",
// default: false
// },
]
})
if (device_driverlib_peripheral.SysCtl_SelType && enableCpuSel){
var selTypeConfig = []
device_driverlib_peripheral.SysCtl_SelType.forEach((element, index) =>
{
selTypeConfig.push({
name: "selType_" + element.name,
displayName : element.displayName.substring(0,element.displayName.indexOf(":")),
description : element.displayName,
longDescription : element.displayName,
default : false
})
selTypeConfig.push({
name: "selTypeLock_" + element.name,
displayName : "Lock" + element.displayName.substring(0,element.displayName.indexOf(":")).replace("Configure", ""),
description : "Lock the configuration for Type. " + element.displayName,
default : false
})
})
staticConfig.push({
name: "GROUP_TYPE",
displayName: "Peripheral Type Configuration",
config: selTypeConfig
})
}
if (["F2838x"].includes(Common.getDeviceName()) && Common.isContextCPU1())
{
staticConfig.push({
name: "semOwner",
displayName: "Semaphore Owner",
default: device_driverlib_peripheral.SysCtl_CPUSel[0].name,
options: device_driverlib_peripheral.SysCtl_CPUSel
})
staticConfig.push({
name: "GROUP_CM",
displayName: "Connectivity Manager (CM) Configuration",
config: [
{
name: "enableCMtoCPU1NMI",
displayName: "Enable CM to CPU1 NMI",
options: device_driverlib_peripheral.SYSCTL_FLAG_CMNMIWDRST,
default: [],
minSelections : 0
},
{
name: "enableCMtoCPUInterrupt",
displayName: "Enable CM to CPU1 Interrupt",
options: device_driverlib_peripheral.SYSCTL_STATUS,
default: [],
minSelections : 0
},
{
name: "lockCMConfig",
displayName: "Lock CM Config",
default: false,
},
{
name: "setCMInterruptStatusMask",
displayName: "CM Interrupt Status Mask",
options: device_driverlib_peripheral.SYSCTL_STATUS,
default: [],
minSelections : 0
}
]
});
}
if (!["F2837xS", "F2837xD", "F2807x", "F28004x"].includes(Common.getDeviceName()))
{
var enableErrorstatus = true;
if (["F2838x"].includes(Common.getDeviceName()) && Common.isContextCPU2()){
enableErrorstatus = false;
}
if(enableErrorstatus == true){
staticConfig.push({
name: "GROUP_ERROR",
displayName: "ERRORSTS",
config: [
{
name: "errorPinPolarity",
displayName: "Error Pin Polarity",
options: [
{ name: 0, displayName: "Error when pin transitions from 0 to 1"},
{ name: 1, displayName: "Error when pin transitions from 1 to 0"},
],
default: 0,
},
{
name: "lockErrorControl",
displayName: "Lock Error Control",
default: false,
},
]
});
}
}
if(Common.isContextCPU1()){
staticConfig.push({
name: "enableMCD",
displayName: "Enable Missing Clock Detect (MCD)",
default: false,
})
}
/*
* ======== filterHardware ========
* Control RX, TX Pin usage by the user specified dataDirection.
*
* param component - hardware object describing signals and
* resources they're attached to
*
* returns Boolean indicating whether or not to allow the component to
* be assigned to an instance's $hardware config
*/
function filterHardware(component)
{
return (Common.typeMatches(component.type, ["SYSCTL"]));
}
function modules(inst)
{
if (inst.splitCode) {
return [
{
name: "sysctlPullInTemplateConfigC",
moduleName: "/driverlib/sysctl/sysctl_config.c.dynamic.js",
}
];
}
return [];
}
function onValidate(inst, validation)
{
if (["F28003x"].includes(Common.getDeviceName()))
{
if (inst.lpmWakeUpPin.includes(61))
{
validation.logError(
"GPIO61 is not a wake up pin",
inst, "lpmWakeUpPin");
}
}
}
var sysctlModule = {
peripheralName: "SYSCTL",
displayName: "SYSCTL",
maxInstances: 1,
defaultInstanceName: "mySYSCTL",
description: "System Control",
longDescription: (Common.getCollateralFindabilityList("SYSCTL")),
filterHardware : filterHardware,
moduleStatic : {
config : staticConfig,
modules : modules,
validate: onValidate,
},
//config: config,
templates: {
boardc : "/driverlib/sysctl/sysctl.board.c.xdt",
boardh : "/driverlib/sysctl/sysctl.board.h.xdt"
},
};
exports = sysctlModule;