Files
rk1/runtime/README.md
T

101 lines
3.5 KiB
Markdown

# RK1 runtime and hardware diagnostics
This directory installs the local RKNN C runtime and supplies the two commands
used to qualify an RK3588 media image. It does not install RKNN Toolkit's model
conversion environment, Python wheels, or `rknn_server`.
## Pinned RKNN runtime
`rknn-version.env` locks RKNN Toolkit2 v2.3.2 to commit
`42aa1d426c0a9e0869b6374edba009f7208a1926`. The installer verifies the SHA-256
of the ARM64 runtime, C header, RK3588 MobileNet model, demo image, and license
before installing anything. A tag move or damaged download therefore fails the
image build.
Run the installer inside the target chroot:
```sh
runtime/install-rknn-runtime.sh
```
Or install into a mounted root filesystem from an ARM64 build host:
```sh
runtime/install-rknn-runtime.sh --rootfs /path/to/rootfs
```
For an offline/reproducible build, provide the pinned checkout explicitly:
```sh
runtime/install-rknn-runtime.sh \
--rootfs /path/to/rootfs \
--source-dir /path/to/rknn-toolkit2-v2.3.2
```
The build host needs Bash, Git when downloading, an ARM64 C compiler,
`coreutils`, and standard install utilities. Native compilation on the RK1 is
the supported default; a cross-build can select a compiler with `--cc`.
Files are installed below `/opt/rknn/2.3.2`, with `/opt/rknn/current` as the
stable link. The runtime path is registered in `/etc/ld.so.conf.d/rknn.conf`,
and the inference test also embeds that path as an ELF rpath. The test uses a
deterministic synthetic tensor and verifies model initialization, selected-core
submission, and finite output. It is a hardware/runtime smoke test, not a
MobileNet accuracy benchmark.
## Hardware self-test
The installed command inventories HDMI/EDID, Panthor or Mali, DRM render
nodes, RKMPP decoder and encoder bindings, AV1, RGA2/RGA3, RKNN, HDMI ALSA,
Ethernet link state, eMMC, NVMe, and the root filesystem:
```sh
rk1-media-selftest
rk1-media-selftest --quick
rk1-media-selftest --json
```
The normal run adds short Vulkan, H.264/HEVC/MJPEG encode, and NPU core
0/1/2/combined workloads when their tools are installed. `--quick` performs no
active workloads. To test 4K decoding and RKMPP-to-RGA zero-copy scaling, place
licensed samples in a directory with names containing `h264`, `hevc`, `vp9`,
and `av1`, then run:
```sh
rk1-media-selftest --media-dir /usr/share/rk1-media/samples
```
Missing tools and tests that cannot apply are `SKIP`; absent or disconnected
hardware is normally `WARN`; an advertised capability whose active workload
fails is `FAIL`. The exit status is zero unless a check fails. `--strict` also
makes warnings return status 1. Invocation errors return status 2.
## Diagnostic bundle
Create a local archive suitable for troubleshooting a blank display or missing
accelerator:
```sh
sudo rk1-media-diagnostics
sudo rk1-media-diagnostics --include-active-tests \
--media-dir /usr/share/rk1-media/samples
```
The collector records the JSON quick test, DRM connectors, decoded EDID,
drivers, filtered kernel messages, relevant packages, ALSA devices, link state,
and storage topology. It does not upload anything. It omits raw EDID, disk
serials and UUIDs, addresses, user files, SSH material, and unfiltered journals,
and applies basic redaction; review the bundle before sharing it.
## Tests
```sh
runtime/tests/run-tests.sh
RKNN_SOURCE_DIR=/path/to/rknn-toolkit2-v2.3.2 \
runtime/tests/run-tests.sh
```
The first form tests syntax, absent-hardware handling, JSON, synthetic sysfs,
and diagnostic collection. Supplying `RKNN_SOURCE_DIR` also compiles and stages
the pinned runtime into a temporary root filesystem.