Skip to content

NanoPi M5 (16GB内存版) 因 U-Boot 内存地址冲突问题描述及解决方案 #3419

@RokkakuM

Description

@RokkakuM

Device Information | 设备信息

SOC: RK3576

Model: NanoPi M5 (16GB RAM)

Armbian Version | 系统版本

Kernel Version: 6.12.74-ophub

Release: Debian Trixie (stable)

Describe the bug | 问题描述

[English]
The system enters a boot loop on NanoPi M5 (16GB version) due to a memory address conflict in U-Boot.

Issue: The default scriptaddr is set to 0x40c00000, which triggers the error: ** Reading file would overwrite reserved memory ** followed by a Synchronous Abort.

Analysis: On the 16GB RAM model, this specific memory region is either reserved by the vendor firmware (fnOS U-Boot) or overlaps with U-Boot's own runtime memory.

Verified Workaround: Manually moving the addresses to a high memory region (e.g., 0xc0000000) in the U-Boot console allows the system to boot successfully.

Console: The kernel identifies the debug serial port as ttyS0 (0x2ad40000), which may differ from the script's default expectation.

[中文]
NanoPi M5 (16GB内存版) 因 U-Boot 内存地址冲突导致启动死循环。

问题现象: 默认的 scriptaddr 为 0x40c00000,启动时触发报错:** Reading file would overwrite reserved memory **,随后发生 Synchronous Abort。

原因分析: 在 16GB 内存机型上,该地址区间可能被原厂固件 (fnOS U-Boot) 预留,或与 U-Boot 自身运行区域重叠。

测试验证: 在 U-Boot 命令行手动将加载地址移至高位(如 0xc0000000)后,系统可以正常引导进入系统。

控制台: 内核将调试串口识别为 ttyS0 (0x2ad40000)。

Manual Boot Commands (Workaround) | 手动引导测试成功的命令:

setenv scriptaddr 0xc0000000
setenv kernel_addr_r 0xc2000000
setenv fdt_addr_r 0xca000000
setenv ramdisk_addr_r 0xcc000000
setenv bootargs "root=/dev/mmcblk0p2 rootwait console=ttyS0,1500000 earlycon"

然后手动加载 Image, dtb, uInitrd 并 booti

Image

完整启动日志.log

其他问题描述:

虽然目前系统可以启动成功
但是hdmi显示有点问题,启动日志里面也有错误。
目前hdmi显示是绿色的画面,我是在采集卡里面看到的,还未验证接在显示器上的效果。

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions