Skip to content

Commit 2f28a57

Browse files
authored
Merge pull request #2811 from annietllnd/linux-nxp-board
Technical review of NXP board LP
2 parents 57afd12 + 7012739 commit 2f28a57

8 files changed

Lines changed: 341 additions & 423 deletions

File tree

Lines changed: 89 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,106 @@
11
---
2-
title: Overview
2+
title: Set up the board
33
weight: 2
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## Hardware Overview - NXP's FRDM i.MX 93 Board
9+
In this section, you’ll learn what makes the NXP FRDM i.MX 93 board a useful ML development platform, then you’ll boot the board and log in.
1010

11-
Selecting the best hardware for machine learning (ML) models depends on effective tools. You can visualize ML performance early in the development cycle by using NXP's [FRDM i.MX 93](https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-i-mx-93-development-board:FRDM-IMX93) board.
11+
## Why this board is useful for ML on Arm
1212

13-
<center>
14-
<iframe src='//players.brightcove.net/4089003392001/Sk5u9ln3l_default/index.html?videoId=6366294691112' allowfullscreen frameborder=0 width="800" height="400"></iframe>
13+
The NXP [FRDM i.MX 93](https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-i-mx-93-development-board:FRDM-IMX93) board is a practical way to validate ML workloads on real Arm hardware early in your workflow.
1514

16-
*Unboxing NXP's FRDM i.MX 93 board*
17-
</center>
15+
It combines:
16+
17+
- An Arm Cortex-A55 application processor for Linux-based development
18+
- An Arm Cortex-M33 microcontroller for real-time tasks
19+
- An Arm Ethos-U65 NPU (neural processing unit) for on-device inference acceleration
20+
21+
The following image highlights the i.MX 93 SoC and the NPU location on the board:
1822

1923
![NXP FRDM i.MX 93 Board SoC Highlighted alt-text#center](./nxp-frdm-imx93-board-soc-highlighted.png "Arm Ethos-U65 NPU location")
2024

21-
### NXP's FRDM i.MX 93 Processor Decoded
25+
If you connect the board to a display, you can see ML demos and application output directly on the device. This is useful when you want quick visual confirmation that your model runs on the target hardware.
26+
27+
## Unbox and power the board
28+
29+
To set up the hardware, follow NXP’s getting started guide: [Getting Started with FRDM-IMX93](https://www.nxp.com/document/guide/getting-started-with-frdm-imx93:GS-FRDM-IMX93).
30+
31+
Stop when you complete section "1.6 Connect Power Supply".
32+
33+
## Connect to the serial console and log in
34+
35+
To log in, you connect to the board over a USB-to-UART serial console using `picocom`. Use a package manager to install it.
36+
37+
{{< tabpane code=true >}}
38+
{{< tab header="MacOS" language="shell">}}
39+
brew install picocom
40+
{{< /tab >}}
41+
{{< tab header="Ubuntu" language="shell">}}
42+
sudo apt update
43+
sudo apt install -y picocom
44+
{{< /tab >}}
45+
{{< /tabpane >}}
46+
47+
48+
{{% notice macOS %}}
49+
50+
On macOS, you might need an extra USB-to-UART driver depending on which USB serial bridge the board exposes. You can get the drivers from Silicon Labs [Downloads page](https://www.silabs.com/developer-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads).
51+
{{% /notice %}}
52+
53+
The next step is to establish a USB-to-UART (serial) connection. Connect the board’s debug (**DBG**) USB-C connector to your computer.
54+
55+
Find the board’s serial device:
56+
57+
If you see more than one candidate device, use this quick method to identify the right one:
58+
59+
1. Run the command once with the board disconnected.
60+
2. Connect the **DBG** USB-C cable.
61+
3. Run the command again and use the *new* device that appeared.
62+
63+
{{< tabpane code=true >}}
64+
{{< tab header="MacOS" language="shell">}}
65+
ls /dev/tty.*
66+
{{< /tab >}}
67+
{{< tab header="Ubuntu" language="shell">}}
68+
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
69+
{{< /tab >}}
70+
{{< /tabpane >}}
71+
72+
Connect to the board using the `picocom` command by updating the serial device identifier.
73+
74+
```bash
75+
sudo picocom -b 115200 /dev/tty*
76+
```
77+
78+
You will see the below output on a successful connection.
79+
80+
```output
81+
picocom v3.1
82+
...
83+
Terminal ready
84+
```
85+
86+
Now you're ready to log in to Linux on the board. Connect the board’s **POWER** USB-C connector to your laptop and toggle the **OFF/ON** switch if it's set to off. You should see one red and one white light on the board. In the `picocom` terminal window, the board will print boot logs. The last line should end with a login prompt.
87+
88+
```bash
89+
...
90+
[ OK ] Reached target Graphical Interface.
91+
Starting Record Runlevel Change in UTMP...
92+
[ OK ] Finished Record Runlevel Change in UTMP.
93+
94+
NXP i.MX Release Distro 6.6-scarthgap imx93frdm ttyLP0
95+
96+
imx93frdm login:
97+
```
2298

23-
![i.MX 93 Processor SoC alt-text#center](./imx93-application-processor-soc.png "NXP's FRDM i.MX 93 processor")
99+
Type `root` to log in as root (no password is needed).
24100

25-
**NXP's Processor Labeling Convention:**
26-
|Line|Meaning|
27-
|----|-------|
28-
|MIMX9352|• MI – Microcontroller IC<br>• MX93 – i.MX 93 family<br>• 52 – Variant:<br>• Dual-core Arm Cortex-A55<br> • Single Cortex-M33<br>• Includes **Ethos-U65 NPU**|
29-
|CVVXMAB|• C - Commercial temperature grade (0°C to 95°C)<br>• VVX - Indicates package type and pinout (BGA, pitch, etc.)<br>• MAB - Specific configuration (e.g., NPU present, security level, memory interfaces)
30-
|
31-
|1P87F|• Silicon mask set identifier|
32-
|SBBM2410E|• NXP traceability code|
101+
## (Optional) Run the built-in NXP demos
33102

34-
## Benefits and applications
103+
- Connect the board to a monitor via HDMI.
104+
- Connect a mouse to the board’s USB-A port.
35105

36-
NPUs, like Arm's [Ethos-U65](https://www.arm.com/products/silicon-ip-cpu/ethos/ethos-u65) NPU are available on physical devices specifically made for developers. Development boards like NXP's [FRDM i.MX 93](https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-i-mx-93-development-board:FRDM-IMX93) also connect to displays via a HDMI cable. Additionally the board accepts video inputs. This is useful for for ML performance visualization due to:
37-
- visual confirmation that your ML model is running on the physical device,
38-
- image and video inputs for computer vision models running on the device,
39-
- clearly indicated instruction counts,
40-
- confirmation of total execution time and
41-
- visually appealing output for prototypes and demos.
106+
![NXP board built-in ML demos alt-text#center](./nxp-board-built-in-ml-demos.png "NXP board built-in ML demos")

content/learning-paths/embedded-and-microcontrollers/linux-nxp-board/2-boot-nxp.md

Lines changed: 0 additions & 103 deletions
This file was deleted.
Lines changed: 106 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,119 @@
11
---
22
# User change
3-
title: "Create a Linux Super User"
3+
title: "Set up a Linux user and connect to WiFi"
44

5-
weight: 4
5+
weight: 3
66

77
# Do not modify these elements
88
layout: "learningpathall"
99
---
1010

11-
On the NXP board, create a non-root super user (if you do not already have one):
11+
You’re logged in as `root`, which is convenient for bring-up but not a great default for day-to-day development. In this section you’ll create a non-root user with admin privileges, then connect the board to WiFi so you can install packages and move files over the network.
1212

13-
1. While [logged in as root]( {{< relref "2-boot-nxp.md" >}} ):
13+
## Create a non-root user with sudo access
1414

15-
* Enable super user privileges:
16-
```bash
17-
sudo visudo
18-
```
19-
* In the vi editor that opens up, uncomment the below line:
20-
```bash { output_lines = "1" }
21-
%wheel ALL=(ALL:ALL) ALL # uncomment this line
22-
```
15+
Start by allowing members of the `wheel` group to use `sudo`.
2316

24-
2. Add a super user:
25-
```bash
26-
sudo adduser testuser
27-
sudo usermod -aG wheel testuser
28-
```
17+
```bash
18+
sudo visudo
19+
```
2920

30-
3. While still logged in as root, confirm successful super user creation:
31-
```bash
32-
su - testuser
33-
sudo whoami # should return "root"
34-
```
21+
In the editor that opens, find the line below and uncomment it:
3522

36-
4. Log out of the NXP board and log back in to Linux as the super user
23+
```bash { output_lines = "1" }
24+
%wheel ALL=(ALL:ALL) ALL # uncomment this line
25+
```
26+
27+
Now create a user and add it to `wheel`:
28+
29+
```bash
30+
sudo adduser testuser
31+
sudo usermod -aG wheel testuser
32+
```
33+
34+
Switch to the new user and confirm `sudo` works:
35+
36+
```bash
37+
su - testuser
38+
sudo whoami
39+
```
40+
41+
The expected output is `root`.
42+
43+
Log out, then log back in as your new user.
44+
45+
## Connect the board to WiFi
46+
47+
The WiFi driver isn’t brought up automatically on this Linux image. You load the module, then use `connmanctl` to connect.
48+
49+
{{% notice Note %}}
50+
51+
In this Linux image, ConnMan typically remembers the WiFi network you connected to.
52+
53+
After a reboot, you might still need to load the WiFi driver module again. Once the module is loaded, ConnMan usually reconnects automatically.
54+
55+
{{% /notice %}}
56+
57+
Load the WiFi driver and open `connmanctl`:
58+
59+
```bash
60+
sudo /usr/sbin/modprobe moal mod_para=nxp/wifi_mod_para.conf
61+
sudo connmanctl
62+
```
63+
64+
At the `connmanctl>` prompt, enable and scan WiFi, then list services:
65+
66+
```bash
67+
enable wifi
68+
scan wifi
69+
services
70+
```
71+
72+
You’ll see services in a form similar to:
73+
74+
```bash { output_lines = "1-3" }
75+
<SSID> wifi_0123456789ab_cdef0123456789_managed_psk
76+
<SSID> wifi_abcdef012345_6789abcdef0123_managed_psk
77+
<SSID> wifi_fedcba987654_3210fedcba9876_managed_psk
78+
```
79+
80+
{{% notice Note %}}
81+
82+
Duplicate SSIDs can appear, so you might need to try more than one `wifi_..._managed_psk` entry.
83+
84+
{{% /notice %}}
85+
86+
Connect to the right `wifi_..._managed_psk` entry and enter your passphrase when prompted.
87+
88+
In `connmanctl`, the passphrase is your WiFi network password (the WPA2/WPA-PSK key). Don’t add quotes around it.
89+
90+
```bash
91+
agent on
92+
connect wifi_0123456789ab_cdef0123456789_managed_psk
93+
```
94+
95+
96+
After you connect, exit `connmanctl`:
97+
98+
```bash
99+
quit
100+
```
101+
102+
Verify that your WiFi network has internet access:
103+
104+
```bash
105+
curl -I http://www.example.com
106+
```
107+
108+
The output is similar to:
109+
110+
```bash { output_lines = "1-2" }
111+
HTTP/1.1 200 OK
112+
...
113+
```
114+
115+
If you don’t have internet access on that network, you can still confirm the board has an IP address:
116+
117+
```bash
118+
ifconfig | grep RUNNING -A 1
119+
```

0 commit comments

Comments
 (0)