Submodules
libnxembeddedtools.ngultra.address module
This module contains all the addresses of memories of NGUltra.
-
class
libnxembeddedtools.ngultra.address.
NGUltraAddress
Bases:
object
-
DDR_ba
= 2147483648
-
ERAM_ba
= 50331648
-
libnxembeddedtools.ngultra.bl1 module
This module contains all the needed to generate a BL1 descriptorused by the BL1.
-
class
libnxembeddedtools.ngultra.bl1.
DescriptorGenerator
(desc_path, section_name) Bases:
object
This class is dedicated to the descriptor generation.
Parameters: -
desc_path (str) – Final path of the BL1 descriptor.
-
section_name (str) – Name of the section from yaml configuration file.
-
alignBinarySize
(binary, align_to) Add padding to binary to align it size to the need of BL1. BL1 retrieve the size of the binary in word (4 bytes) and then convert it back to bytes internally. If the size of the binary is not a multiple of 4 the final computed size will be incorrect.
Parameters: -
binary() – Binary we want to align the size.
-
align_to (int) – Value to align to.
-
-
buildPacketHeader
(itemType, packetLength) Create the header for the spacewire packets
Parameters: -
itemType (int) – Type of packet
-
packetLength (int) – Size of the packet in bytes
-
-
generateFlashBootDescriptor
() Generate the final descriptor for boot from flash.
-
generateSpwPackets
() Generate packets according to the spacewire BL1 protocol.
-
packetAsw
(packets_list) Create the application software (ASW) first packet containing information about the ASW binary. The created packet is added to the packets_list passed as parameter.
Parameters: packets_list (list) – List to which to add the created packet.
-
packetBitstream
(packets_list) Create the bitstream first packet containing information about the bitstream binary. The created packet is added to the packets_list passed as parameter.
Parameters: packets_list (list) – List to which to add the created packet.
-
packetData
(binary) Create one or more packets containing raw binary data of the bitstream or ASW passed as parameter. The created packets are added to the packets_list passed as parameter.
Parameters: binary() – Bitstream or ASW binary.
-
packetStartAddr
(packets_list)
-
zlibComputeCRC32
(source, previousCRC)
-
libnxembeddedtools.ngultra.bsm module
This module contains everything to program the BSM of NGUltra
-
class
libnxembeddedtools.ngultra.bsm.
Loader
(iface) Bases:
object
Class used to program the BSM.
Parameters: iface (
Interface
) – interface used to communicate with the board.-
bsmReset
() Reset the BSM
- The reset sequence is:
-
-
Assert SOFT_RSTN
-
Wait for 100 cycles of BSM
-
Deassert SOFT_RSTN
-
Assert HARD_RSTN
-
Wait for 3 us
-
Deassert HARD_RSTN
-
Wait for 128 cycles if BSM
-
Since we are using a python over USB interface (either Lauterbach or openOCD), the minimum delay is at least 1ms. So no wait is required.
-
isReady
() Checks if the ready flag is set
-
program
(nxbFile, address=None) Program the BSM with the provided nxbFile:
Parameters: -
nxbFile (str) – NXB to program.
-
address (int) – Address where the NXB is stored. If None, it uses the default loader address in the eRAM.
-
-
libnxembeddedtools.ngultra.fastcommands module
This module contains the tools to use the fast commands. Fast commands are a set a commands that use a running programm on the SoCto speed up the transfer of files. With fast commands you can read/write the flash and program the BSM.
When using fast commands, you will interrupt and replace the running program on core 0.
-
class
libnxembeddedtools.ngultra.fastcommands.
FastCommands
(iface) Bases:
object
-
ngultraInit
() Initialise NGUltra (PLLs and DDR).
-
programBSM
(nxbFile, address=None) Program the BSM with a given NXB file.
Parameters: -
nxbFile (str) – Path of the NXB file.
-
address (int) – Address where the NXB is stored. If None, it uses the default loader address in the eRAM.
-
-
readFlash
(flashId, outputFile, base_address, size) Read the flash and write the result in a file
Parameters: -
flashId (int) – flash to read;
-
outputFile (str) – Path of the file where to write the result.
-
base_address (int) – Address in the flash where to read the file.
-
size (int) – Number of 256 bytes to read.
-
-
writeFlash
(flashId, inputFile, base_address, byteorder='little') Write the flash with the given file.
Parameters: -
flashId (int) – flash to write;
-
inputFile (str) – Path of the file to write.
-
base_address (int) – Address in the flash where to write the file.
-
byteorder (str) – Byteorder of the file. Must be “little” or “big”.
-
-
libnxembeddedtools.ngultra.flash module
This module contains everything to read/write data from/into the flash memory.
-
class
libnxembeddedtools.ngultra.flash.
Controller
Bases:
object
This class is dedicated to the management of the flash controller.
-
erase
(flashId) Totally erase the specified flash.
Parameters: flashId (int) – The flash to erase.
Flash id goes from 0 to 3.
-
eraseSector
(flashId, address) Erase a sector of the specified flash.
Parameters: -
flashId (int) – The flash to erase.
-
address (int) – Begining of the sector to erase.
Flash id goes from 0 to 3.
Sector size depends of the flash. For the “S25FL512S” (used on the bringup board) the sector size is 256KB.
-
-
fastReadData
(flashId, outputFile, address, size) Dump the content of the specified flash to a file using fast commands API.
Parameters: -
flashId (int) – The flash to read.
-
outputFile (str) – Path of the file of the dump.
-
address (int) – Address where to write the data.
-
size (str) – Number of 256B block to read.
Flash id goes from 0 to 3.
-
-
fastWriteData
(flashId, inputFile, address, byteorder='little') Write a file to the specified flash using fast commands API.
Parameters: -
flashId (int) – The flash to write.
-
inputFile (str) – Path of the file to write
-
address (int) – Address where to write the data.
-
byteorder (str) – Byteorder of the file. Must be “big” or “little”.
Flash id goes from 0 to 3.
-
-
fastWriteDataPadded
(flashId, inputFile, address, byteorder='little', modulo=64) Write a file to the specified flash using fast commands API. This file will be padded before writing it.
Parameters: -
flashId (int) – The flash to write.
-
inputFile (str) – Path of the file to write
-
address (int) – Address where to write the data.
-
byteorder (str) – Byteorder of the file. Must be “big” or “little”.
-
modulo (int) – Used to compute the size of the padding.
Flash id goes from 0 to 3.
-
-
readToFile
(flashId, outputFile, address, size) Dump the content of the specified flash to a file.
Parameters: -
flashId (int) – The flash to read.
-
outputFile (str) – Path of the file of the dump.
-
address (int) – Address where to write the data.
-
size (str) – Number of 256B block to read.
Flash id goes from 0 to 3.
-
-
writeBL1
(flashId, inputFile, key) Write the specified file on the specified flash considering it as a BL1. This file will be signed and written at address 0.
Parameters: -
flashId (int) – The flash to write.
-
inputFile (str) – Path of the file to write.
-
key (str) – Path of the key needed to sign the file.
Flash id goes from 0 to 3.
-
-
writeData
(flashId, address, data) Write the specified flash with provided data.
Parameters: -
flashId (int) – The flash to write.
-
address (int) – Address where to write the data.
-
data (list) – Data to write;
Flash id goes from 0 to 3.
-
-
writeFromFile
(flashId, inputFile, address, byteorder='little') Write a file to the specified flash.
Parameters: -
flashId (int) – The flash to write.
-
inputFile (str) – Path of the file to write
-
address (int) – Address where to write the data.
-
byteorder (str) – Byteorder of the file. Must be “big” or “little”.
Flash id goes from 0 to 3.
-
-
libnxembeddedtools.ngultra.memory module
This module contains usefull commands for the memory of NGUltra
-
class
libnxembeddedtools.ngultra.memory.
Memory
(iface=None) Bases:
object
Class representing the Memory of the SoC.
-
loadImage
(image, core, address) Load a binary file for the specified core. If the load address is contained on the eRAM, the eRAM will be scrubbed first.
Parameters: -
image (str) – Path of the binary file to load.
-
core (int) – Core where to load the image.
-
address (int) – Core where to load the image.
This will not set the PC of the core.
-
-
scrubEram
() Totally erase the eRAM.
-
libnxembeddedtools.ngultra.reset module
This module contains everything to send reset to the target.
-
class
libnxembeddedtools.ngultra.reset.
Reset
(remoteAPI) Bases:
object
This class contains everything to send all types of reset to the target.
-
postMortemReset
() Perform a Post Mortem reset
-
powerOnReset
() Perform a System reset
-
systemReset
() Perform a System reset
-