252b4a4094
It is advisable to set bootdelay to 0 when using bootcmd to disable dcache on u-boot. Using bootdelay -1 will definitely work as it disables bootcmd altogether (and leaves the dcache enabled). This step is added to remove confusion.
147 lines
3.6 KiB
Plaintext
147 lines
3.6 KiB
Plaintext
README.txt
|
|
==========
|
|
|
|
The kit i.MX93 Evaluation Kit has a pre-installed Linux image which contains
|
|
u-boot and the i.MX93 reference Linux installation.
|
|
|
|
u-boot is required to boot NuttX (for now) as it initializes the hardware for
|
|
us, i.e. DDR, clocks, I/O muxes etc.
|
|
|
|
==========================================
|
|
|
|
How to run nuttx on i.MX93 Evaluation Kit.
|
|
|
|
==========================================
|
|
|
|
Below is a set of instructions on how to run NuttX on the i.MX93 EVK
|
|
|
|
==========================================
|
|
|
|
Pre-requisites
|
|
|
|
==========================================
|
|
|
|
- imx93_ca55.JLinkScript which is a custom file, put it wherever you want
|
|
|
|
==========================================
|
|
|
|
U-Boot configuration
|
|
|
|
==========================================
|
|
|
|
Two things need to be configured on u-boot before NuttX can be loaded:
|
|
|
|
- u-boot data cache must be turned off
|
|
- u-boot must stop to the u-boot console, i.e. the Linux payload must not be loaded
|
|
|
|
Manual option:
|
|
|
|
1. Disable u-boot autostart (needs to be done only once):
|
|
|
|
Hit any key to stop autoboot: 0
|
|
u-boot=> setenv bootdelay -1
|
|
u-boot=> saveenv
|
|
Saving Environment to MMC... Writing to MMC(0)... OK
|
|
u-boot=> reset
|
|
|
|
2. On every boot, the data cache must be disabled for options 2 and 3 to work
|
|
|
|
u-boot=> dcache off
|
|
|
|
Automated option:
|
|
|
|
1. Replace the default bootcmd to disable dcache automatically:
|
|
|
|
u-boot=> setenv bootdelay 0
|
|
u-boot=> setenv bootcmd dcache off
|
|
u-boot=> saveenv
|
|
Saving Environment to MMC... Writing to MMC(0)... OK
|
|
u-boot=> reset
|
|
|
|
To restore the default bootcmd which starts Linux automatically:
|
|
|
|
u-boot=> setenv bootcmd run distro_bootcmd;run bsp_bootcmd
|
|
u-boot=> saveenv
|
|
Saving Environment to MMC... Writing to MMC(0)... OK
|
|
u-boot=> reset
|
|
|
|
The default bootcmd is:
|
|
|
|
u-boot=> env print bootcmd
|
|
bootcmd=run distro_bootcmd;run bsp_bootcmd
|
|
|
|
==========================================
|
|
|
|
Loading and running the NuttX image
|
|
|
|
==========================================
|
|
|
|
You have three options:
|
|
|
|
1 - Load via u-boot from SD-card
|
|
2 - Load via gdb
|
|
3 - Load via JLink
|
|
|
|
==========================================
|
|
|
|
Option 1: load via u-boot from SD-card:
|
|
|
|
==========================================
|
|
|
|
1. Build nuttx, and move nuttx.bin to SD-card
|
|
|
|
2. Load from SD-card and start nuttx payload
|
|
|
|
u-boot=> dcache off; fatload mmc 1 0x80000000 nuttx.bin; go 0x80000000
|
|
|
|
==========================================
|
|
|
|
Option 2: start via gdb:
|
|
|
|
==========================================
|
|
|
|
1. Start JLinkGDBServer
|
|
|
|
JLinkGDBServer -device CORTEX-A55 -JLinkScriptFile <path_to>/imx93_ca55.JLinkScript
|
|
|
|
2. Start gdb
|
|
|
|
$ aarch64-none-elf-gdb
|
|
|
|
2.1 Attach and load nuttx
|
|
|
|
(gdb) target remote localhost:2331
|
|
(gdb) set mem inaccessible-by-default off
|
|
(gdb) load <path_to>/nuttx
|
|
(gdb) monitor go
|
|
|
|
==========================================
|
|
|
|
Option 3: load with JLink:
|
|
|
|
==========================================
|
|
|
|
1. Start JLink
|
|
|
|
$ JLinkExe -device CORTEX-A55 -if JTAG -jtagconf -1,-1 -speed 4000 -JLinkScriptFile <path_to>/imx93_ca55.JLinkScript
|
|
|
|
1.1 Add -AutoConnect 1 to connect automatically
|
|
|
|
$ JLinkExe -device CORTEX-A55 -if JTAG -jtagconf -1,-1 -speed 4000 -JLinkScriptFile <path_to>/imx93_ca55.JLinkScript -AutoConnect 1
|
|
|
|
2. Connect JLink
|
|
|
|
2.1 Connect to the debugger
|
|
|
|
Type "connect" to establish a target connection, '?' for help
|
|
J-Link>connect
|
|
|
|
You should now have a JLink prompt.
|
|
|
|
Cortex-A55 identified.
|
|
J-Link>
|
|
|
|
3. Load nuttx. Note that JLink expects the .elf extension, the default build output of nuttx is just "nuttx" without the extension, so it must be added to the file...
|
|
|
|
J-Link>LoadFile <path_to>/nuttx.elf
|