2. Configuration
Configuration options described in this chapter are used to configure how each FPA will program its target device. Currently the API-DLL supports vendors: ST Microelectronics, Microchip, Renesas, and multiple other SPI Flash Memory vendors such as Adesto, Cypress, GigaDevice, ISSI, Macronix, Microchip, Micron, and Winbond. Most configuration options described in this chapter can be used by all vendors, except for Memory Protection options, which are specific to each vendor. Memory Protection options are described in the last section and divided on a per vendor basis. If a configuration file supplied to F_ConfigFileLoad contains protection options from a different vendor than the MCU currently being programmed, they will be ignored, and default values will be substituted instead (no protection).
The configuration parameter names listed in this chapter are the exact string names that can be used as inputs to the functions F_Set_Config_Value_By_Name and F_Get_Config_Value_By_Name or specified in the configuration file for use by the function F ConfigFileLoad. To obtain these string names from the Multi API-DLL, select the desired API-DLL instance (using F_Set_FPA_index) and use the function F_Get_Config_Name_List.
C++ code snippet to extract complete configuration list:
//#define CONFSEL_VALIDATE 0
//#define CONFSEL_VALUE 1
//#define CONFSEL_MIN 2
//#define CONFSEL_MAX 3
//#define CONFSEL_DEFAULT 4
stringstream msg;
char *tmp=NULL;
int i=0;
while((tmp = F_Get_Config_Name_List(i++)) != NULL && strcmp(tmp, "\0") != 0) {
//Check if parameter name is correct, should be redundant
if(F_Get_Config_Value_By_Name(tmp, 0)) {
unsigned int val = F_Get_Config_Value_By_Name(tmp, 1);
unsigned int min = F_Get_Config_Value_By_Name(tmp, 2);
unsigned int max = F_Get_Config_Value_By_Name(tmp, 3);
unsigned int def = F_Get_Config_Value_By_Name(tmp, 4);
msg << tmp << "=0x" << hex << val << ", 0x" << hex << min << "<=X<=0x" << hex << max << "(def=0x" << hex << def << ")\r\n";
//sanity check on current value
if(val < min || val > max) {
msg << "======= " << tmp << " value outside min/max =======\r\n";
msg << "DLL failed to trim\r\n";
}
//sanity check on default value
if(def < min || def > max) {
msg << "======= " << tmp << " default outside min/max =======\r\n";
msg << "Param default OUT OF RANGE\r\n";
}
} else {
msg << "config parameter name invalid " << tmp << "\r\n";
}
}
Â