Sequential functions allow access to the target device in any combination of small instructions like erase, read, write sector, modify part of memory, etc. Sequential functions work correctly after communication between target device and programming adapter has been initialized. This requires the target FPA to be opened using F_OpenInstancesAndFPAs and F Initialization, and for proper configuration options to be set using Generic Functions | F_ConfigFileLoad or Generic Functions | F_Set_Config_Value_by_Name.
Once the FPA has been initialized using the aforementioned functions, open the target device using the function Sequential Functions | F_Open_Target_Device. When communication is established, then any of the sequential instructions can be called. When finished, conclude your task by calling Sequential Functions | F_Close_Target_Device.
NOTE: Sequential Functions | F_Open_Target_Device is a high overhead function (usually around one second of execution time). Therefore call Sequential Functions | F_Open_Target_Device only once and perform all sequential functions before closing the target with Sequential Functions | F_Close_Target_Device. Sample code sequence:
F_OpenInstancesAndFPAs("*# *");//only first FPA F_Set_FPA_index(1); //select FPA 1 F_Initialization(); //initialize selected FPA(s) F_ConfigFileLoad(<config file path>); //load config file to selected FPA(s) F_Open_Target_Device(); //power on, initialize JTAG/SWD communication, calib clk ... < all sequential functions here > ... F_Close_Target_Device(); //power off
1. F_Open_Target_Device
General Description
The FPA will establish communication with the target device(s). This step requires a working connection, a read of the processor ID, RAM size, and flash size checked against internal records (except when target MCU doesn’t have this meta-data available), and calibration of internal CPU clock. If these steps match expected values the operation will succeed.
If General Configuration | MetadataWrnIsErr is disabled, only the processor ID needs to match records, the RAM and flash size do not. If the RAM and flash do not match a warning will be printed and accessible via Generic Functions | F_ReportMessage
If General Configuration | MetadataWrnIsErr is enabled, all values need to match, processor ID, RAM size, and flash size, otherwise function will fail.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Open_Target_Device( void );
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index , index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
2. F_Close_Target_Device
General Description
Terminates communication between FPA and target device. Sets reset line to GND and communication lines (TMS, TCK, TDI) to configuration setting “ReleaseJtagState”.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Close_Target_Device( void );
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index , index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
3. F_Segment_Erase
General Description
Send command to erase target device’s memory segment.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Segment_Erase( INT_X address );
Input
INT_X address : address of segment/sector to be erased
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6STATUS_ADDRESS_OUT_OF_FLASH_SPACE_ERR (534) : address out of range
STATUS_ERASE_SEGMENT_FAILED (549) : erase operation failed
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
4. F_Sectors_Blank_Check
General Description
Blank check part or all of the target device’s memory.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Sectors_Blank_Check( INT_X start_addr, INT_X stop_addr );
Input
INT_X start_addr : first memory address to be included in blank check (inclusive)
INT_X stop_addr : last memory address to be included in blank check (inclusive)
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
5. F_Copy_Buffer_to_Flash
General Description
Write specified number of bytes from Write Buffer in FlashPro-M Data Buffer Functions | FlashPro-M-buffers or GangPro-M Data Buffer Functions | GangPro-M-buffers to target flash.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Copy_Buffer_to_Flash( INT_X start_addr, INT_X size );
Input
INT_X start_addr : valid flash address
INT_X size : number of bytes to copy beginning at start address
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
Example
The condition for this example to work properly is that F_OpenInstancesAndFPAs, and F_Initialization has correctly initialized the given fpa index (1 to 64). If testing adapter 1, the user should call F_Set_FPA_index(1) before this code executes. In addition the user should load the intended configuration file using F_ConfigFileLoad so that the right MCU is selected.
MCU_Info struct was initialized using example Get MCU Info.
The code sequence is as follows:
Power on target device and open communication using
F_Open_Target_Device
Get MCU base flash address,
MCU_Info.u.x.FlashStartAddr
, and add 0x100. This code will write custom bytes to almost the start of flash.In a loop, populate the Write Buffer with custom bytes starting at address
addr
usingF_Put_Byte_to_Buffer
Program custom bytes to target using
F_Copy_Buffer_to_Flash
Read target memory and save contents to Read Data Buffer using
F_Copy_Flash_to_Buffer
In a loop, read bytes from the Read Data Buffer and print them using
F_Get_Byte_from_Buffer
Power down target and close communication using
F_Close_Target_Device
INT_X response; const int size=32; response = F_Open_Target_Device(); if(response != TRUE) return response; char text[200]; long addr = MCU_Info.u.x.FlashStartAddr + 0x100; for(int k=0; k< size; k++) { //---------------------------------------------------- F_Put_Byte_to_Buffer( (INT_X )(addr+k), (BYTE)( 0x10 + k )); //---------------------------------------------------- } //---------------------------------------------------- response = F_Copy_Buffer_to_Flash( addr, size ); if(response != TRUE) return response; //---------------------------------------------------- //---------------------------------------------------- response = F_Copy_Flash_to_Buffer( addr, size ); if(response != TRUE) return response; //---------------------------------------------------- for( int n=0; n<size; n += 16 ) { for( int k = 0; k<16; k++ ) { //---------------------------------------------------- sprintf( text+3*k, "%2.2X ", F_Get_Byte_from_Buffer((INT_X )( addr + k + n) ));//for single buffer, when reading it works only for FlashPro //---------------------------------------------------- } strcat( text, "\r\n" ); printf("%s", text); } response = F_Close_Target_Device(); if(response != TRUE) return response;
6. F_Copy_Flash_to_Buffer (FlashPro-M only)
General Description
Read specified number of bytes from MCU flash to Read Data Buffer in FlashPro-M Data Buffer Functions | FlashPro-M-buffers.
Syntax
INT_X F_Copy_Flash_to_Buffer( INT_X start_addr, INT_X size );
Input
INT_X start_addr : valid flash address
INT_X size : number of bytes to copy beginning at start address
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
TRUE (1) : succeeded
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
Example
Refer to Sequential Functions | F_Copy_Buffer_to_Flash.
7. F_Copy_Gang_Buffer_to_Flash (GangPro-M only)
General Description
Write specified number of bytes from Gang Write Buffer in GangPro-M Data Buffer Functions | GangPro-M-buffers to target flash.
Syntax
INT_X F_Copy_Gang_Buffer_to_Flash( INT_X start_addr, INT_X size );
Input
INT_X start_addr : valid flash address
INT_X size : number of bytes to copy beginning at start address
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
Example
The condition for this example to work properly is that F_OpenInstancesAndFPAs, and F_Initialization has correctly initialized the given fpa index (1 to 64). If testing adapter 1, the user should call F_Set_FPA_index(1) before this code executes. In addition the user should load the intended configuration file using F_ConfigFileLoad so that the right MCU is selected.
MCU_Info struct was initialized using example Get MCU Info.
The code sequence is as follows:
Power on target devices and open communication using
F_Open_Target_Device
The return value is a TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6, if at least one target succeeded then proceed further.Get MCU base flash address,
MCU_Info.u.x.FlashStartAddr
, and add 0x100. This code will write custom bytes to almost the start of flash.In a loop, populate the Gang Write Buffer for target 1 with custom bytes starting at address
addr
usingF_Put_Byte_to_Gang_Buffer
. The user can change the first parameter to write different bytes to target 2, 3, 4, 5, or 6.Program custom bytes to targets using
F_Copy_Gang_Buffer_to_Flash
Read target memories and save contents to Gang Read Buffers (6) using
F_Copy_Flash_to_Gang_Buffer
In a loop, read bytes from the Gang Read Buffers and print them using
F_Get_Byte_from_Gang_Buffer
, this example iterates over 6 target buffers.Power down targets and close communication using
F_Close_Target_Device
#define ANY_TARGET 0x3F INT_X response; const int size=32; response = F_Open_Target_Device(); if((response & ANY_TARGET) == 0) return response; char text[1000]; long addr = MCU_Info.u.x.FlashStartAddr + 0x100; for(int k=0; k< size; k++) { //---------------------------------------------------- F_Put_Byte_to_Gang_Buffer( 1, (INT_X )(addr+k), (BYTE)( 0x10 + k )); //---------------------------------------------------- } //---------------------------------------------------- response = F_Copy_Gang_Buffer_to_Flash( addr, size ); if((response & ANY_TARGET) == 0) return response; //---------------------------------------------------- //---------------------------------------------------- response = F_Copy_Flash_to_Gang_Buffer( addr, size ); if((response & ANY_TARGET) == 0) return response; //---------------------------------------------------- if( F_Get_Active_Targets_Mask() == response ) { sprintf( text, "Read from FLASH - address 0x%4.4X\r\n", addr ); printf("%s", text); for(int p=0; p<GANG_SIZE; p++) { for( int n=0; n<size; n += 16 ) { for( int k = 0; k<16; k++ ) { //---------------------------------------------------- sprintf( text+3*k, "%2.2X ", F_Get_Byte_from_Gang_Buffer( (p+1), (INT_X )( addr + k + n) ));//for gang buffer, when reading in GangPro //---------------------------------------------------- } strcat( text, "\r\n" ); printf("%s", text); } } } response = F_Close_Target_Device(); if((response & ANY_TARGET) == 0) return response;
8. F_Copy_Flash_to_Gang_Buffer (GangPro-M only)
General Description
Read specified number of bytes from targets' MCU flash to Gang Read Buffers in GangPro-M Data Buffer Functions | GangPro-M-buffers.
Syntax
INT_X F_Copy_Flash_to_Gang_Buffer( INT_X start_addr, INT_X size );
Input
INT_X start_addr : valid flash address
INT_X size : number of bytes to copy beginning at start address
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
Example
Refer to Sequential Functions | F_Copy_Gang_Buffer_to_Flash.
9. F_Write_Byte_to_RAM
General Description
Use the FPA to write a byte to the target device(s) RAM. This write is not verified (no read performed). Use F_Read_Byte (FlashPro-M) or F_Gang_Read_Byte (GangPro-M) to verify.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Byte_to_RAM( INT_X addr, BYTE data );
Input
INT_X addr : address of byte to be written (byte addressable)
BYTE data : byte to be written
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
10. F_Write_Word16_to_RAM
General Description
Use the FPA to write two bytes to the target device(s) RAM. This write is not verified (no read performed). Use F_Read_Word16 (FlashPro-M) or F_Gang_Read_Word16 (GangPro-M) to verify.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Word16_to_RAM( INT_X addr, INT_X data )
Input
INT_X addr : address of 16-bit data to be written (byte addressable)
INT_X data : 16-bit data to be written
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
11. F_Write_Word32_to_RAM
General Description
Use the FPA to write four bytes to the target device(s) RAM. This write is not verified (no read performed). Use F_Read_Word32 (FlashPro-M) or F_Gang_Read_Word32 (GangPro-M) to verify.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Word32_to_RAM( INT_X addr, INT_X data )
Input
INT_X addr : address of 32-bit data to be written (byte addressable)
INT_X data : 32-bit data to be written
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
12. F_Write_Bytes_Block_to_RAM
General Description
Use the FPA to write a block of bytes to RAM. Currently this function only writes a block of bytes with a size that is a multiple of four, to a 32-bit word aligned address. These writes are not verified (no reads performed). Use F_Read_Bytes_Block (FlashPro-M) or F_Gang_Read_Bytes_Block (GangPro-M) to verify.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Bytes_Block_to_RAM( INT_X addr, INT_X size, BYTE *data )
Input
INT_X addr : address of 32-bit data to be written (byte addressable)
INT_X size : number of bytes to be written
BYTE *data : array of bytes to be written (not verified)
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6STATUS ADDR ALIGNMENT ERROR (543) : not 32-bit word aligned address
STATUS SIZE ALIGNMENT ERROR (544) : number of bytes not a multiple of four
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
13. F_Read_Byte (FlashPro-M only)
General Description
Use the FPA to read one byte from any address (RAM, flash, etc.).
Syntax
INT_X F_Read_Byte( INT_X addr )
Input
INT_X addr : address of byte to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFF : byte value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
14. F_Read_Word16 (FlashPro-M only)
General Description
Use the FPA to read two bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Read_Word16( INT_X addr )
Input
INT_X addr : address of 16-bit word to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFFFF : 16-bit word value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
15. F_Read_Word32 (FlashPro-M only)
General Description
Use the FPA to read four bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Read_Word32( INT_X addr )
Input
INT_X addr : address of 32-bit word to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFFFFFFFF : 32-bit word value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
16. F_Read_Bytes_Block (FlashPro-M only)
General Description
Use the FPA to read a block of bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Read_Bytes_Block( INT_X addr, INT_X size, BYTE *data );
Input
INT_X addr : first byte address to be read (byte addressable)
INT_X size : number of bytes to be read
BYTE *data : array of bytes that will be written with memory contents
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64.
Output
INT_X : result of operation
FALSE (0) : failed
TRUE (1) : succeeded
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
17. F_Gang_Read_Byte (GangPro-M only)
General Description
Use the FPA to read one byte from any address (RAM, flash, etc.).
Syntax
INT_X F_Gang_Read_Byte( BYTE target_no, INT_X addr )
Input
BYTE target no : MCU target number 1 to 6
INT_X addr : address of byte to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFF : byte value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
18. F_Gang_Read_Word16 (GangPro-M only)
General Description
Use the FPA to read two bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Gang_Read_Word16( BYTE target_no, INT_X addr )
Input
BYTE target no : MCU target number 1 to 6
INT_X addr : address of 16-bit word to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFFFF : 16-bit word value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
19. F_Gang_Read_Word32 (GangPro-M only)
General Description
Use the FPA to read four bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Gang_Read_Word32( BYTE target_no, INT_X addr )
Input
BYTE target no : MCU target number 1 to 6
INT_X addr : address of 32-bit word to be read
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : data read
0-0xFFFFFFFF : 32-bit word value
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
20. F_Gang_Bytes_Block (GangPro-M only)
General Description
Use the FPA to read a block of bytes from any address (RAM, flash, etc.).
Syntax
INT_X F_Gang_Read_Bytes_Block( INT_X addr, INT_X size, BYTE data[][GANG_SIZE] );
Input
INT_X addr : first byte address to be read (byte addressable)
INT_X size : number of bytes to be read
BYTE data[][GANG SIZE] : array of bytes that will be written with memory contents
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64.
Output
INT_X : result of operation
FALSE (0) : failed
TRUE (1) : succeeded
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
22. F_Write_Locking_Registers
General Description
Write to non-volatile memory protection bits, option bytes, and/or persistent user-data registers (if supported). Does not block communication over debug interface, but can disable writing and/or reading from target device’s memory. These option bytes can be reset to factory settings using the Encapsulated Functions | F_Clear_Locked_Device function if the device supports it. To write protection bits, the Memory Protection Configuration | WriteLockingBitsEn configuration option has to be enabled. To control the exact data that is program, consult in detail the Main FP/GP M GUI->Setup->Memory protection, or section 2. Configuration and select the correct MCU vendor.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Locking_Registers( void )
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
23. F_Write_Debug_Register
General Description
Write to non-volatile protection bits, or option bytes to disable communication over debug interface. These bits can be reset to factory settings using the Encapsulated Functions | F_Clear_Locked_Device function if the device supports it. To disable debug access, the Memory Protection Configuration | WriteLockingBitsEn configuration option has to be enabled. To control the exact data that is program, consult in detail the Main FP/GP M GUI->Setup->Memory protection, or section 2. Configuration and select the correct MCU vendor.
This function has some exclusive GangPro-M return values.
Syntax
INT_X F_Write_Debug_Register( void )
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
FlashPro-M - TRUE (1) : succeeded
GangPro-M - TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
24. F_Get_MCU_Data
General Description
Return the actual MCU ID, flash size, and/or RAM size read by the FPA from target, if supported by vendor.
This function has some exclusive GangPro-M input values.
Syntax
INT_X F_Get_MCU_Data( INT_X type )
Input
INT_X type : select type of information to receive
GET_MCU_ID (1) : connected MCU package identifier (MCU family and group, etc.), not a unique silicon ID
GET_MCU_FLASH_SIZE (2) : connected MCU flash size, if available
GET_MCU_RAM_SIZE (3) : connected MCU RAM size, if available
GET_MCU_TARGET_1 (0x10) : read from target 1, OR with type of info. requested (GangPro-M only)
GET_MCU_TARGET_2 (0x20) : read from target 2, OR with type of info. requested (GangPro-M only)
GET_MCU_TARGET_3 (0x30) : read from target 3, OR with type of info. requested (GangPro-M only)
GET_MCU_TARGET_4 (0x40) : read from target 4, OR with type of info. requested (GangPro-M only)
GET_MCU_TARGET_5 (0x50) : read from target 5, OR with type of info. requested (GangPro-M only)
GET_MCU_TARGET_6 (0x60) : read from target 6, OR with type of info. requested (GangPro-M only)
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed. No communication or incorrect parameters.
any positive value : MCU ID, flash size, or RAM size
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
25. F_Capture_PC_Addr
General Description
Read program counter (PC) register using debug interface.
Syntax
INT_X F_Capture_PC_Addr( void )
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
any positive value : program counter
FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
27. F_Get_Targets_Result (GangPro-M only)
General Description
Return per-target success result for encapsulated functions. An error mask can be produced by
subtracting F_Get_Targets_Result() from F_Get_Active_Targets_Mask().
Syntax
INT_X F_Get_Targets_Result( void )
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range
28. F_Get_Active_Targets_Mask (GangPro-M only)
General Description
Return per-target active status. Set intended target mask using: Generic Functions | F_Set_Config_Value_By_Name. Value returned by this function is updated during communication initialization, after any encapsulated function or Sequential Functions | F_Open_Target_Device . An error mask can be produced by subtracting F_Get_Targets_Result() from F_Get_Active_Targets_Mask().
Syntax
INT_X F_Get_Active_Targets_Mask( void )
Input
none.
Select FPA to perform operation on using Multi API-DLL Functions | F_Set_FPA_index, index 1 to 64. Use index 0 to perform operation on all FPAs (if results differ, use Multi API-DLL Functions | F_LastStatus to get individual results).
Output
INT_X : result of operation
FALSE (0) : failed
TRUE MASK (0x01..0x3F) : 0x01 - target 1, 0x02 - target 2, 0x04 - target 3, 0x08 - target
4, 0x10 - target 5, 0x20 - target 6FPA_UNMATCHED_RESULTS (-1 or 0xFFFFFFFF) : Result of operation inconsistent across all selected FPAs, refer to Multi API-DLL Functions | F_LastStatus
FPA_INVALID_NO (-2 or 0xFFFFFFFE) : FPA not opened with Multi API-DLL Functions | F_OpenInstancesAndFPAs or index out of range