Rockchip 的 SPL/TPL 是闭源的,每次上电输出一串巴拉巴拉的挺烦的,对于调试还好,已经稳定的系统就可以考虑隐藏他.
不过目前官方BSP并不能直接隐藏,因为这个隐藏会连带自己的U-Boot proper一起不说话了.
我用的是RK3506,其他芯片也是一样的.
首先获取rkbin
git clone https://github.com/rockchip-linux/rkbin
找到这个文件 tools/ddrbin_param.txt
我修改成这样,意思是关闭UART,关闭所有LOG.
uart id: 15
dis_train_print: 1
pstore_base_addr: 0x0
pstore_buf_size: 0x0
uboot_log_en: 0
atf_log_en: 0
optee_log_en: 0
spl_log_en: 0
tpl_log_en: 0
之后用工具做这个文件.
python3 ddrbin_tool.py rk3506 ddrbin_param.txt ../bin/rk35/rk3506_ddr_750MHz_v1.06.bin 
再到U-Boot用./make.sh打包.
但是这样U-Boot也挂了,所以第二步,关闭U-Boot的CONFIG_ROCKCHIP_PRELOADER_SERIAL选项,这个选项是BL通过ATAGS传递参数给U-Boot,因为BL关闭了UART,他也让U-Boot关闭,U-Boot又让内核关闭,完全没声音了.
最后给U-Boot打补丁,刚好我之前写了SWD开启逻辑,这里一并用,要不用SWD,要不用串口,刚刚好.
int board_early_init_f(void)
{
#if CONFIG_UART0_AS_SWD_INTERFACE
    /* 配置UART0作为SWD接口 */
    // GPIO0_C6/C7 -> JTAG_TCK_M1 / JTAG_TMS_M1
    writel(0xFF002200, GPIO0_IOC_BASE + GPIO0C_IOMUX_SEL_1); // IOC: C7=2, C6=2
    // grf_jtag_sel
    writel(HIWORD_UPDATE(0x0000, 0x0030), GRF_BASE + GRF_SOC_CON0);
    // 当RXD接低一段时间,也会切换.
    writel(0x0000FFFF, PMUGRF_BASE + PMUGRF_SOC_CON4);
    writel(0x00020002, PMUGRF_BASE + PMUGRF_SOC_CON0);
#elif !defined(CONFIG_ROCKCHIP_PRELOADER_SERIAL)
    writel(HIWORD_UPDATE(0x0000, 0x0030), GRF_BASE + GRF_SOC_CON0);  /* hiword: 0x0030<<16 有效 */
    const unsigned c6_mask = IOMUX_NIBBLE_MASK(C6_SHIFT);
    const unsigned c7_mask = IOMUX_NIBBLE_MASK(C7_SHIFT);
    const unsigned c6_uart = IOMUX_VAL(C6_SHIFT, 0x1);
    const unsigned c7_uart = IOMUX_VAL(C7_SHIFT, 0x1);
    writel( HIWORD_UPDATE(c6_uart, c6_mask) |
            HIWORD_UPDATE(c7_uart, c7_mask),
            GPIO0_IOC_BASE + GPIO0C_IOMUX_SEL_1 );
    writel(LCR_DLAB, UART0_BASE + UART_LCR);   /* 置 DLAB,切到 DLL/DLH 映射 */
    writel(0x01,    UART0_BASE + UART_DLL);    /* 24MHz / (16*1.5M) = 1 → DLL=1 */
    writel(0x00,    UART0_BASE + UART_DLH);
    writel(LCR_8N1, UART0_BASE + UART_LCR);    /* 清 DLAB,设置 8N1 */
    writel(FCR_FIFO_EN | FCR_RXSR | FCR_TXSR, UART0_BASE + UART_FCR); /* 使能并复位 FIFO */
#endif
    return 0;
}
现在没有任何BL输出,都是自己的东西了.