![]() |
aiengine
Xilinx SDK Drivers API Documentation
|
This file contains the API for ELF loading.
Applicable only for the AIE simulation environment execution on linux.
MODIFICATION HISTORY:
Ver Who Date Changes
1.0 Naresh 04/06/2018 Initial creation 1.1 Naresh 05/07/2018 Fixed CR#1001944, CR#1002101 1.2 Naresh 06/13/2018 Fixed CR#1003905 1.3 Naresh 07/11/2018 Updated copyright info 1.4 Naresh 07/26/2018 Fixed CR#1007367 1.5 Hyun 08/27/2018 Fixed the incorrect remaining bytes, CR-1009665 1.6 Nishad 12/05/2018 Renamed ME attributes to AIE 1.7 Hyun 09/13/2019 Used global IO accessors and added more AIESIM 1.8 Hyun 09/13/2019 Added XAieSim_LoadElfMem()
XAieGbl_Config | XAieGbl_ConfigTable [] |
The configuration table for each AIE device. More... | |
uint32 | XAieSim_LoadElfMem (XAieSim_Tile *TileInstPtr, uint8 *ElfPtr, uint8 LoadSym) |
This is the API to load the specified ELF to the target AIE Tile program memory followed by clearing of the BSS sections. More... | |
uint32 | XAieSim_LoadElf (XAieSim_Tile *TileInstPtr, uint8 *ElfPtr, uint8 LoadSym) |
This is the API to load the specified ELF to the target AIE Tile program memory followed by clearing of the BSS sections. More... | |
uint32 | XAieSim_GetStackRange (uint8 *MapPtr, XAieSim_StackSz *StackSzPtr) |
This is the routine to derive the stack start and end addresses from the specified map file. More... | |
void | XAieSim_LoadSymbols (XAieSim_Tile *TileInstPtr, uint8 *ElfPtr) |
This routine sends the out of bound command to the sim to load symbols. More... | |
void | XAieSim_WriteSection (XAieSim_Tile *TileInstPtr, uint8 *SectName, Elf32_Shdr *SectPtr, FILE *Fd) |
This routine is used to write to the specified section by reading the corresponding data from the ELF file. More... | |
uint64_t | XAieSim_GetTargetTileAddr (XAieSim_Tile *TileInstPtr, uint32 ShAddr) |
This routine is used to get the actual tile data memory address based on the section's loadable address. More... | |
uint32 XAieSim_GetStackRange | ( | uint8 * | MapPtr, |
XAieSim_StackSz * | StackSzPtr | ||
) |
This is the routine to derive the stack start and end addresses from the specified map file.
This function basically looks for the line <init_address>..<final_address> ( <num> items) : Stack in the map file to derive the stack address range.
MapPtr,: | Path to the Map file. |
StackSzPtr,: | Pointer to the stack range structure. |
References XAieSim_StackSz::end, and XAieSim_StackSz::start.
Referenced by XAieSim_LoadElf().
uint64_t XAieSim_GetTargetTileAddr | ( | XAieSim_Tile * | TileInstPtr, |
uint32 | ShAddr | ||
) |
This routine is used to get the actual tile data memory address based on the section's loadable address.
The actual tile address is derived from the cardinal direction the secton's loadable address points to.
TileInstPtr | - Pointer to the Tile instance structure. |
ShAddr,: | Section's loadable address. |
References XAieGbl_Config::NumCols, and XAieGbl_Config::NumRows.
Referenced by XAieSim_LoadElf(), XAieSim_LoadElfMem(), and XAieSim_WriteSection().
uint32 XAieSim_LoadElf | ( | XAieSim_Tile * | TileInstPtr, |
uint8 * | ElfPtr, | ||
uint8 | LoadSym | ||
) |
This is the API to load the specified ELF to the target AIE Tile program memory followed by clearing of the BSS sections.
TileInstPtr | - Pointer to the Tile instance structure. |
ElfPtr,: | Path to the ELF file to be loaded into memory. |
References XAieSim_StackSz::end, XAieSim_StackSz::start, XAieSim_GetStackRange(), XAieSim_GetTargetTileAddr(), XAieSim_LoadSymbols(), XAieSim_WriteCmd(), and XAieSim_WriteSection().
Referenced by XAieLib_LoadElf().
uint32 XAieSim_LoadElfMem | ( | XAieSim_Tile * | TileInstPtr, |
uint8 * | ElfPtr, | ||
uint8 | LoadSym | ||
) |
This is the API to load the specified ELF to the target AIE Tile program memory followed by clearing of the BSS sections.
TileInstPtr | - Pointer to the Tile instance structure. |
ElfPtr,: | Path to the ELF memory |
References XAieSim_GetTargetTileAddr().
Referenced by XAieLib_LoadElfMem().
void XAieSim_LoadSymbols | ( | XAieSim_Tile * | TileInstPtr, |
uint8 * | ElfPtr | ||
) |
This routine sends the out of bound command to the sim to load symbols.
TileInstPtr | - Pointer to the Tile instance structure. |
ElfPtr,: | Path to the ELF file. |
References XAieSim_WriteCmd().
Referenced by XAieSim_LoadElf().
void XAieSim_WriteSection | ( | XAieSim_Tile * | TileInstPtr, |
uint8 * | SectName, | ||
Elf32_Shdr * | SectPtr, | ||
FILE * | Fd | ||
) |
This routine is used to write to the specified section by reading the corresponding data from the ELF file.
TileInstPtr,: | Pointer to the Tile instance structure. |
SectName,: | Name of the section. |
SectPtr,: | Poiner to the section entry in the ELF file. |
Fd,: | Pointer to the ELF file. |
References XAieSim_GetTargetTileAddr().
Referenced by XAieSim_LoadElf().
XAieGbl_Config XAieGbl_ConfigTable[] |
The configuration table for each AIE device.
XAIE_BASE_ARRAY_ADDR_OFFSET macro defines the AI Engine's base address offset value.