MCUXpresso_MIMXRT1021xxxxx/boards/evkmimxrt1020/driver_examples/trng/random
Yilin Sun 763d32be90
Updated SDK to v2.15.000
Signed-off-by: Yilin Sun <imi415@imi.moe>
2024-03-15 22:23:36 +08:00
..
armgcc Updated SDK to v2.15.000 2024-03-15 22:23:36 +08:00
board.c Updated SDK to v2.15.000 2024-03-15 22:23:36 +08:00
board.h Updated SDK to v2.15.000 2024-03-15 22:23:36 +08:00
clock_config.c Updated to SDK v2.14.0 2023-08-31 23:30:31 +08:00
clock_config.h Updated to SDK v2.14.0 2023-08-31 23:30:31 +08:00
dcd.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
dcd.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
evkmimxrt1020_sdram_init.jlinkscript Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
pin_mux.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
pin_mux.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
readme.md Updated SDK to v2.15.000 2024-03-15 22:23:36 +08:00
trng_random.c Updated to SDK v2.14.0 2023-08-31 23:30:31 +08:00
trng_random_v3_14.xml Updated SDK to v2.15.000 2024-03-15 22:23:36 +08:00

readme.md

Overview

The True Random Number Generator (TRNG) is a hardware accelerator module that generates a 512-bit entropy as needed by an entropy consuming module or by other post processing functions. The TRNG Example project is a demonstration program that uses the KSDK software to generate random numbers and prints them to the terminal.

NOTE:

On i.MXRT1020/1050/1060, the TRNG entropy register is initialized by the ROM boot process with 128 entropy bits (read from registers ENT12-ENT15, sampleSize = 128).

The TRNG driver version <= 2.0.2 has issue that TRNG_Init() function doesn't flush these entropy bits, thus, the first TRNG_GetRandomData(base, data, 64) after TRNG_Init() only reads 384 non-random bits followed by 128 random bits. After the first call, next calls to TRNG_GetRandomData() return entropy bits collected with new TRNG settings.

The issue is fixed in TRNG driver version 2.0.3, by regenerating entropy bits with new TRNG settings already during TRNG_Init().

SDK version

  • Version: 2.15.000

Toolchain supported

  • IAR embedded Workbench 9.40.1
  • Keil MDK 5.38.1
  • GCC ARM Embedded 12.2
  • MCUXpresso 11.8.0

Hardware requirements

  • Mini/micro USB cable
  • EVK-MIMXRT1020 board
  • Personal Computer

Board settings

No special settings are required.

Prepare the Demo

  1. Connect a USB cable between the host PC and the OpenSDA USB port on the target board.
  2. Open a serial terminal with the following settings:
    • 115200 baud rate
    • 8 data bits
    • No parity
    • One stop bit
    • No flow control
  3. Download the program to the target board.
  4. Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.

Running the demo

When the example runs successfully, the following message is displayed in the terminal:

RNGA Peripheral Driver Example Generate 10 random numbers: Random[0] = 0xE1554295 Random[1] = 0x827AD456 Random[2] = 0x9A1CBE1E Random[3] = 0x4354CB53 Random[4] = 0xFE3B2494 Random[5] = 0xEDAB3F7D Random[6] = 0x9AB91722 Random[7] = 0x4F54D999 Random[8] = 0x492414D1 Random[9] = 0x84611992

Press any key to continue...

Note: To debug in qspiflash, following steps are needed:

  1. Select the flash target and compile.
  2. Set the SW8: 1 off 2 off 3 on 4 off, then power on the board and connect USB cable to J23.
  3. Start debugging in IDE.
    • Keil: Click "Download (F8)" to program the image to qspiflash first then clicking "Start/Stop Debug Session (Ctrl+F5)" to start debugging.