# Bootloader 消息问题排查

## 问题：RTT Viewer 一直显示 "===Bootloader==="

## 原因分析

您看到的 "===Bootloader===" 消息来自**旧的 nRF5 SDK bootloader**（在 `bootloader/src/main.c` 中）。

这意味着：
1. **设备上还在运行旧的 bootloader 和固件**
2. **新的 NCS 固件还没有被烧录或启动**

## 解决方案

### 方案 1：擦除整个设备并烧录 NCS 固件（推荐）

1. **擦除设备**：
   ```powershell
   nrfjprog --eraseall
   ```

2. **烧录 NCS 固件**：
   ```powershell
   cd firmware-ncs
   west flash
   ```

### 方案 2：使用 nRF Connect Programmer

1. 打开 **nRF Connect for Desktop** → **Programmer**
2. 连接设备
3. 点击 **Erase all**
4. 选择编译好的 `.hex` 文件（在 `firmware-ncs/build/zephyr/zephyr.hex`）
5. 点击 **Write**

### 方案 3：检查是否使用了 MCUboot

如果您的项目使用了 MCUboot，需要：
1. 先烧录 MCUboot bootloader
2. 然后通过 MCUboot 烧录应用程序

## 验证步骤

烧录后，您应该看到：
- `LOG_INF("System starting...")` - 来自 `main()` 函数
- `LOG_INF("=== Firmware NCS Version ===")` - 来自主线程
- 不再看到 "===Bootloader===" 消息

## 注意事项

1. **NCS 固件不需要旧的 bootloader**：NCS 使用 Zephyr，可以直接运行，或者使用 MCUboot（如果需要 OTA 更新）

2. **旧的 bootloader 和 NCS 不兼容**：旧的 nRF5 SDK bootloader 无法启动 NCS 固件

3. **如果使用 MCUboot**：需要在 `prj.conf` 中配置：
   ```kconfig
   CONFIG_BOOTLOADER_MCUBOOT=y
   ```

## 快速检查

运行以下命令检查设备状态：
```powershell
nrfjprog --readregs
nrfjprog --memrd 0x0 --n 0x1000
```

如果看到旧的 bootloader 代码，说明需要擦除并重新烧录。

