# RK3568 TL3568-EVM · Linux 6.12 内核交付包

生成日期：2026-10-10
内核版本：**6.12.69-g470f9dccbdc4-dirty**
目标板：TL3568-EVM（`rockchip,rk3568-evb1-ddr4-v10`）

---

## 一、包内容

| 文件 | 大小 | 说明 |
|---|---|---|
| **`boot-6.12.img`** | 47,987,113 B（45.8 MiB） | ★ **可烧写镜像**，U-Boot FIT 格式，含内核+设备树+资源段 |
| `modules/cc33xx.ko` | 1,688,624 B | WiFi 主驱动 |
| `modules/cc33xx_sdio.ko` | 121,336 B | WiFi SDIO 接口 |
| `modules/btti.ko` | 130,288 B | 蓝牙核心 |
| `modules/btti_uart.ko` | 110,784 B | 蓝牙 UART |
| `Image` | 43,901,440 B | 裸内核（已含在 boot.img 内，备用） |
| `rk3568-tl3568-evm.dtb` | 197,267 B | 板型设备树（已含在 boot.img 内，备用） |
| `README.md` | 本文件 | |

所有 `.ko` 的 vermagic = `6.12.69-g470f9dccbdc4-dirty SMP mod_unload aarch64`。

---

## 二、烧写

板子按住 **RECOVERY** 上电进 loader 模式：

```bash
sudo rkdeveloptool ld                                   # 确认识别到设备
sudo rkdeveloptool wl 0x8000 boot-6.12.img              # 写 boot 分区
sudo rkdeveloptool rd                                   # 重启
```

`0x8000` 是 boot 分区的起始扇区（取自板子 `parameter.txt`：
`0x00020000@0x00008000(boot)`，即 64 MiB @ 扇区 0x8000）。

**boot.img 45.8 MiB < boot 分区 64 MiB ✓**

进系统后换模块（板子的模块目录是 `/system/lib/modules/`，**不是** `/lib/modules/`）：

```bash
mkdir -p /system/lib/modules
cp modules/*.ko /system/lib/modules/
depmod -a 6.12.69-g470f9dccbdc4-dirty 2>/dev/null || true
```

---

## 三、FIT 结构（与原厂对齐）

原厂 `boot.img` 是 **U-Boot FIT 镜像**（文件头 `d00dfeed`，含
`"U-Boot FIT source file for arm"`），不是 Android boot 格式。本包按同一结构制作：

```
images {
    fdt      { type="flat_dt";  desc="fdt";      load=0xffffff00 }   ← 新板型 dtb
    kernel   { type="kernel";   desc="kernel";   load=entry=0xffffff01 } ← 6.12.69
    resource { type="multi";    desc="resource" }                    ← logo + 新 dtb
}
configurations.conf {
    description    = "rk3568"
    fdt            = "fdt"
    kernel         = "kernel"
    multi          = "resource"
    rollback-index = <0>
}
```

`0xffffff00 / 0xffffff01` 是 Rockchip 的「使用默认地址」标记，非真实加载地址。

**资源段（resource）**由 `resource_tool` 解开后重打，条目与原厂一致：

```
entry(0) rk-kernel.dtb     197,267 B   ← 换成新板型 dtb（原厂 192,315 B）
entry(1) logo.bmp        1,843,322 B   ← 原样保留
entry(2) logo_kernel.bmp 1,843,322 B   ← 原样保留
```

---

## 四、⚠️ 唯一残留风险：签名

原厂 FIT 带签名段：

```
signature {
    algo = "sha256,rsa2048";
    padding = "pss";
    key-name-hint = "dev";
    sign-images = "fdt\0kernel\0multi";
}
```

**本包未签名** —— 签名私钥不在手上，无法复现原厂签名。影响取决于板子的
U-Boot 是否启用 FIT 验签：

- **未启用**（开发板默认）→ 直接能用 ✓
- **已启用**（`CONFIG_FIT_SIGNATURE` + 强制校验）→ U-Boot 会拒绝本镜像 ✗

判断方法（在 uboot 串口里）：

```
=> printenv verify
=> fdt addr <boot分区地址> && fdt print /configurations/conf
```

或看 uboot 里有没有验签相关字符串：

```bash
strings uboot.img | grep -iE "signature|verify.*fit|rsa"
```

**若被拒**，两条路：
1. 用 uboot 的 `setenv verify 0` / 关闭 `FIT_SIGNATURE` 自己重编 uboot
2. 把原厂私钥找厂商要（`key-name-hint = "dev"`）

> 注：原厂 uboot 二进制里**同时存在 `data-position` 和 `data-offset` 两个
> 字符串**，说明两种 FIT 数据寻址都支持 → 数据寻址层面无兼容问题。

---

## 五、板级支持（相对原厂 5.10 的适配）

| 项 | 值 | 验证 |
|---|---|---|
| 屏 | LVDS 单通道 1024×600 @ 65,995,392 Hz（66.0 MHz），RGB888(1×24) | 编译 + 反编译回环 17 项零偏差 |
| 时序 | hback/hfront/hsync = 150/150/20，vback/vfront/vsync = 14/8/13，高有效 | 同上 |
| 屏使能脚 | GPIO0_C7（引脚 23） | 同上 |
| 触摸 | Goodix GT911 @ I2C1（`i2c@fe5a0000`），reg 0x14 | 同上 |
| 触摸 INT/RST | GPIO0_B0（引脚 8）/ GPIO0_C1（引脚 17） | 同上 |
| 显示链路 | lvds0=okay、lvds1=disabled、dsi0=disabled、lvds0_in_vp1 | 同原厂 |
| 驱动配置 | ROCKCHIP_LVDS / DRM_PANEL_SIMPLE / TOUCHSCREEN_GOODIX / BACKLIGHT_PWM 全部 `=y` | olddefconfig 保留验证 |

---

## 六、WiFi / 蓝牙驱动来源

板子 WiFi/BT 是 **TI CC33xx** 树外模块（厂商 5.10 内核树里没有，
vermagic 5.10.198 换内核必须重编）。

- TI 官方移植补丁库：`TexasInstruments-Sandbox/cc33xx-linux-mpu-ports`
- 用到的补丁：`6.12.y/0001-drivers-cc33xx-update-1.0.2.17-patch-for-linux-6.12..patch`
- SDK 本体：`cc33xx_linux_package_1_0_2_17`（与板子 5.10 驱动同源 1.0.2.17）
- 只应用了**驱动本体**，排除了 TI 自家板子的 `mac80211` 补丁（避免污染 Rockchip 内核）
- 输出模块别名与板子原版逐一对应（`btti_uart.ko` 的 DT 兼容串 `ti,cc33xx-bt` ✓）

固件（`cc33xx_2nd_loader.bin` / `cc33xx_fw.bin` / `cc33xx-conf.bin`）
已在 rootfs 的 `/lib/firmware/ti-connectivity/` 内。
