> 技术文档 > 新手小白,学完单片机STM32入手一块Linux开发板正点原子的ATK-DLRK3506B,需要学习哪些知识_rk3506 docker

新手小白,学完单片机STM32入手一块Linux开发板正点原子的ATK-DLRK3506B,需要学习哪些知识_rk3506 docker

目录

一、RK3506B开发板核心特点

二、必备知识储备

1. Linux基础

2. 嵌入式Linux开发流程

3. RK3506B特有功能

三、具体学习步骤

阶段1:环境搭建与基础实验

阶段2:外设驱动开发

阶段3:系统级开发

四、烧录模式

1. Loader 模式(常规烧录模式)

(1)工作原理

(2)操作步骤

2. MaskROM 模式(紧急修复模式)

(1)工作原理

(2)操作步骤

五、调试与进阶

六、推荐学习资源

七、注意事项

总结:学习路线图


作为STM32新手转向学习正点原子的RK3506B开发板(基于瑞芯微RK3506B处理器),你需要跨越从单片机到Linux嵌入式系统的门槛。以下是系统的学习路径和建议:

一、RK3506B开发板核心特点

  1. 异构架构:3核Cortex-A7@1.5GHz(运行Linux) + 1核Cortex-M0@200MHz(实时任务)15。

  2. 外设接口:USB OTG(烧录口)、UART(调试串口)、EMMC(存储)、GPIO、PWM、I2C、SPI 等。

  3. 应用场景:工业HMI、网关、音视频处理等,支持LVGL快速启动(3秒内)。

  4. 配套资源:正点原子提供完整的资料包(uboot、内核、文件系统、示例代码)。

  5. 启动模式:通过 SARADC_IN0 引脚电平选择启动方式(如 EMMC/USB 烧录模式)

名词解释:①LVGL(Light and Versatile Graphics Library)是一款轻量级、开源的嵌入式图形库,专为资源受限的嵌入式系统(如MCU或Linux嵌入式设备)设计,用于构建交互式用户界面(GUI)。②U-Boot(Universal Boot Loader) 是一个开源的引导加载程序(Bootloader),主要用于嵌入式系统,如开发板、路由器、物联网设备等。它在系统启动时首先运行,负责初始化硬件设备(如CPU、内存、外设等),然后加载操作系统内核(如Linux)并启动它,类似于PC中的BIOS或UEFI。③OTG烧录是一种通过USB OTG(On-The-Go)接口将固件或系统镜像烧录到嵌入式设备(如RK3506B开发板)的方法,无需依赖额外的烧录器或SD卡。


二、必备知识储备

1. Linux基础
  • 命令行操作:熟悉Linux常用命令(lscdvim等)和文件系统结构。

  • 交叉编译:理解如何在PC上编译ARM架构的程序(如使用gcc-arm-linux-gnueabihf)。

  • 设备树(DTS):掌握设备树语法,用于硬件外设配置(如串口、GPIO)。

名词解释:①设备树(Device Tree,简称 DT)是一种描述硬件配置的数据结构,主要用于 嵌入式系统(如 ARM、PowerPC、MIPS 架构),它告诉操作系统内核当前设备有哪些硬件资源(如 CPU、内存、外设等),而无需在内核代码中硬编码硬件信息。

交叉编译 是指在一个 平台(主机,Host) 上编译生成另一个 不同平台(目标机,Target) 上可执行的代码。例如:

  (1)主机(Host):x86_64 架构的 PC(如 Ubuntu 系统)

  (2)目标机(Target):ARM 架构的嵌入式开发板(如树莓派、STM32)

2. 嵌入式Linux开发流程
  • 固件组成:uboot引导 → 内核启动 → 文件系统加载。

  • 开发工具链

    • 编译环境:Ubuntu 22.04(推荐真机或Docker)。

    • 工具:repogit、交叉编译工具链(如rk3506_linux_release SDK)。

3. RK3506B特有功能
  • 核间通信(RPMsg):A7与M0核心通过共享内存通信。

  • 2D加速引擎:优化LVGL等图形界面性能。


三、具体学习步骤

阶段1:环境搭建与基础实验
  1. 硬件准备

    • 开发板 + 12V电源 + Type-C调试串口(通过CH343芯片转换)。

  2. 软件工具

    • 安装Ubuntu 22.04,配置SDK编译环境(参考正点原子提供的《RK3506B开发指南》)。

  3. 第一个程序

    • 通过调试串口(UART0)打印\"Hello World\",学习Linux下的串口驱动与应用层编程。

阶段2:外设驱动开发
  1. GPIO控制:点亮LED,对比STM32的HAL库与Linux的sysfslibgpiod接口。

  2. UART通信:与STM32类似,但需注意Linux下的ttyS设备节点和termios配置。

  3. 网络通信:利用双网口实现TCP/UDP数据传输(底板支持百兆网络)。

阶段3:系统级开发
  1. 移植uboot:修改启动参数,支持从eMMC或SD卡启动。

  2. 定制文件系统:使用Buildroot或Yocto构建最小系统,添加自定义应用。

  3. 多核协同:编写M0核的裸机程序(如实时控制),通过RPMsg与A7核通信。

名词解释:①eMMC 是一种 嵌入式闪存存储解决方案,它将 NAND Flash 存储芯片闪存控制器 和 标准接口协议 集成在一个小型 BGA 封装中,主要用于智能手机、平板电脑、嵌入式设备等对空间和功耗敏感的场景。 ②Buildroot 是一个轻量级的嵌入式 Linux 系统构建框架,主要用于快速生成精简的 Linux 系统(包含 bootloader、内核、根文件系统和应用程序)。它采用 Kconfig + Makefile 的配置方式,类似于 Linux 内核的配置方法。③Yocto Project 是一个工业级的嵌入式 Linux 构建系统,由 Linux 基金会支持,适用于高度定制化的 Linux 发行版。它基于 BitBake 构建引擎,采用 分层架构(Layers),支持复杂的软件包管理和跨平台适配


四、烧录模式

正点原子 RK3506B 开发板的固件烧录主要通过 MaskROM 模式 和 Loader 模式 实现,两种模式分别用于不同场景,以下是它们的详细工作原理及操作步骤:

1. Loader 模式(常规烧录模式)
(1)工作原理
  • 触发条件:通过硬件配置 SARADC_IN1 引脚为低电平(如按下 Recovery 按键)启动设备,使芯片进入 Loader 模式。

  • 功能

    • 允许通过 USB OTG0 接口与 PC 通信,使用工具(如 MfgTool)烧录固件。

    • 支持分区烧录(如单独更新内核或文件系统),适合调试阶段。

  • 硬件设计

    • SARADC_IN1 引脚需默认上拉(10KΩ 电阻保持高电平),避免意外进入 Loader 模式。

(2)操作步骤
  1. 硬件连接

    • 开发板 USB OTG0 接口连接 PC。

    • 串口(UART0)连接 PC 用于查看日志。

  2. 进入 Loader 模式

    • 按住 Recovery 按键(或短接测试点)上电,保持 SARADC_IN1 为低电平,直到 PC 识别到设备。

  3. 烧录固件

    • 使用 MfgTool 工具加载镜像文件(如 uboot.imgkernel.img),点击 Start 烧录。


2. MaskROM 模式(紧急修复模式)
(1)工作原理
  • 触发条件:当 EMMC 损坏 或 Loader 模式失效 时,通过短接 EMMC 数据引脚与地线,强制芯片进入 MaskROM 模式。

  • 功能

    • 芯片内置的 BootROM 代码直接接管,通过 USB 接收主机发送的初始引导程序(如 uboot),用于修复变砖设备。

  • 风险提示

    • 需谨慎操作,短接错误可能导致硬件损坏。

(2)操作步骤
  1. 断电准备

    • 断开开发板所有电源。

  2. 短接测试点

    • 用镊子短接 EMMC 数据引脚与地线(通常为背面两个特定测试点)。

  3. 连接 USB

    • 插入 USB OTG0 接口到 PC,保持短接几秒后松开。

  4. 烧录修复

    • PC 识别到 MaskROM 设备后,使用工具(如 RKDevTool)重新烧录完整固件。


五、调试与进阶

  1. 调试技巧

    • 使用minicomscreen工具监控串口输出。

    • 通过JTAG调试内核(需额外调试器)。

  2. 性能优化

    • 利用2D加速引擎提升LVGL帧率。

    • 调整CPU频率与功耗策略(RK3506B支持动态调频)。


六、推荐学习资源

  1. 正点原子资料:下载配套的《RK3506B开发手册》和示例代码。

  2. Linux系统编程:推荐《UNIX环境高级编程》。

  3. 实战项目:从简单HMI界面(LVGL)开始,逐步实现网关或数据采集系统。


七、注意事项

  • 电平兼容:RK3506B的IO多为1.8V/3.3V,连接外设时需注意电平转换。

  • 上电时序:核心板与底板的电源需按顺序启动(12V → 5V → 3.3V)。

总结:学习路线图

阶段 重点内容 硬件基础 开发板接口、启动模式、原理图阅读 环境搭建 Ubuntu + 交叉编译工具链 + 串口工具 系统烧录 MfgTool 使用、EMMC/USB 模式切换 应用开发 C/Python 程序编写、文件操作、网络通信 驱动开发 设备树修改、字符设备驱动、内核模块 系统移植 Uboot、内核、根文件系统定制