尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

RT-Thread 下 NUC980 系列驱动支持详解:外设矩阵、设备命名与移植配置

发布时间:2026/9/26 21:18:52

资讯中心
01
ARTICLE

RT-Thread 下 NUC980 系列驱动支持详解:外设矩阵、设备命名与移植配置

RT-Thread 下 NUC980 系列驱动支持详解:外设矩阵、设备命名与移植配置
操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载导读NUC980 是 Nuvoton新唐推出的基于 ARM926EJ-S 内核的工业级 IoT 微处理器内置 DDR 存储并集成丰富外设。本文以 bsp/nuvoton/libraries/nuc980/README.md 记录的驱动支持矩阵为核心结合仓库中 bsp/nuvoton/libraries/nuc980/rtt_port 的驱动实现与 Kconfig 配置项系统梳理 NUC980 在 RT-Thread 设备框架下的全部已支持外设、对应设备名与注册方式并给出基于 NK-980IoT 开发板的移植、配置与固件烧录实战指引帮助开发者快速评估外设覆盖度并完成 BSP 裁剪。一、NUC980 驱动库在仓库中的位置与角色在 RT-Thread 仓库中NUC980 的驱动代码统一收敛在 bsp/nuvoton/libraries/nuc980 目录下其中README.md驱动支持清单本文核心依据rtt_port/面向 RT-Thread 的设备驱动适配层每个外设对应一个drv_*.c/drv_*.h文件SConscript将该目录下所有.c/.cpp源码编入Drivers分组并自动加入头文件搜索路径见 rtt_port/SConscript。从 bsp/nuvoton/README.md 可以看到当前仓库中以 NUC980 为核心的三块评估板 BSP 均复用该库Board NameCPU ArchitectureBSP FolderNK-980IOTARM926EJSnk-980iotNK-RTU980ARM926EJSnk-rtu980NK-N9H30ARM926EJSnk-n9h30以 nk-980iot 为例其 BSP Kconfig 通过source $(RTT_DIR)/Kconfig引入 RT-Thread 根配置再加载board/Kconfig最终由驱动库的 Kconfig 完成外设开关的声明。二、Supported drivers完整外设支持矩阵原文档以表格形式给出了 NUC980 系列在 RT-Thread 中已支持的驱动清单下表完整继承并补充设备实例数量说明Peripheralrt_device_class_typeDevice nameADCRT_Device_Class_Miscellaneous (ADC)adcCANRT_Device_Class_CANcan[0-3]CRYPTORT_Device_Class_Miscellaneous (HW Crypto)hwcrytoEBIN/AN/AEMACRT_Device_Class_NetIfe[0-1]GPIORT_Device_Class_Miscellaneous (Pin)gpioI2CRT_Device_Class_I2CBUSi2c[0-3]I2SRT_Device_Class_Soundsound0PDMAN/AN/AQSPIRT_Device_Class_SPIBUSqspi[0]RTCRT_Device_Class_RTCrtcPWMRT_Device_Class_Miscellaneous (PWM)pwm[0-1]USBHRT_Device_Class_USBHostusbhUSBDRT_Device_Class_USBDeviceusbdSC (UART function)RT_Device_Class_Charscuart[0-1]SDHRT_Device_Class_Blocksdh[0-1]SPIRT_Device_Class_SPIBUSspi[0-1]TIMERRT_Device_Class_Timertimer[0-5]UARTRT_Device_Class_Charuart[0-9]WDTRT_Device_Class_Miscellaneous (Watchdog)wdt几点值得注意的细节设备名即应用层访问句柄在 RT-Thread 中应用通过rt_device_find()以这些名字拿到设备句柄例如打开串口使用uart0访问 ADC 使用adc挂载文件系统则需sdh0/sdh1对应的块设备。设备名中的数字范围如uart[0-9]、can[0-3]与芯片实际外设实例一一对应。EBI 与 PDMA 标记为 N/A这两类外设虽提供drv_ebi.c、drv_pdma.c驱动源码但它们不以标准 RT-Thread 设备方式暴露EBI 面向外部存储扩展PDMA 作为 DMA 引擎服务于 UART/SPI/QSPI/SDH 等外设因此不注册为可枚举的设备节点。SCUART 数量差异README 中设备名为scuart[0-1]而从 Kconfig 可以看到驱动库实际提供BSP_USING_SCUART0/1/2三个开关具体可用实例取决于目标芯片封装移植时以实际 Kconfig 选项为准。三、每个驱动在 rtt_port 中的落地实现rtt_port/目录下共有 35 个文件与上表逐项对应模拟/数字转换drv_adc.c含 ADC Touch 触摸功能支持总线类drv_can.c、drv_i2c.c、drv_i2s.c、drv_spi.c、drv_qspi.c网络/存储drv_emac.c双以太网、drv_sdh.cSD/MMC 主机控制器、drv_ebi.c安全引擎drv_crypto.cAES/SHA/RNG 硬件加速通用控制drv_gpio.c、drv_pwm.c、drv_rtc.c、drv_wdt.c串行drv_uart.c、drv_scuart.c智能卡 UART时钟/定时drv_systick.c、drv_etimer.c、drv_etimer_capture.c系统支撑drv_common.c、drv_sys.c、drv_pdma.c、drv_usbd.c、drv_usbhost.c这些驱动均通过 RT-Thread 自动初始化机制挂载可从前述驱动初始化导出宏观察到统一模式INIT_BOARD_EXPORT(rt_hw_gpio_init)drv_gpio.c、INIT_BOARD_EXPORT(rt_hw_rtc_init)drv_rtc.c等在板级初始化阶段注册INIT_DEVICE_EXPORT注册的外设包括 CAN、I2C、I2S、PDMA、PWM、QSPI、SCUART、SPI、WDT 等网络协议栈依赖的 EMAC 则在INIT_APP_EXPORT(rt_hw_nu_emac_init)drv_emac.c阶段随 lwIP 一起启动。驱动是否参与编译完全由rtconfig.h中的BSP_USING_*宏控制例如drv_uart.c仅当#if defined(BSP_USING_UART)成立时才被编译见 drv_uart.c。四、Kconfig 配置项与裁剪实战开发者在menuconfig下通过 rtt_port/Kconfig 声明的开关逐项使能外设。除第二、三章涉及的外设开关外还有几类值得关注的配置UART 与 DMABSP_USING_UART0~BSP_USING_UART9各自独立且每个串口的 TX/RX DMA 可分别使能依赖RT_SERIAL_USING_DMA。串口驱动结构体struct nu_uart中为此预留了pdma_perp_tx/rx、pdma_chanid_tx/rx及 rx 描述符等 DMA 字段见 drv_uart.c。EMAC 与 PDMA 卸载BSP_USING_EMAC0/1使能两个 10/100 Mbps 网口NU_EMAC_PDMA_MEMCOPY开启后用 PDMA 搬运数据NU_EMAC_PDMA_MEMCOPY_THRESHOLD默认 128范围 32~1500 字节设定启用 PDMA memcpy 的阈值。RTC 功能扩展NU_RTC_SUPPORT_IO_RW允许通过设备 read/write 接口访问时间NU_RTC_SUPPORT_MSH_CMD使能date/time类 shell 命令drv_rtc.c。从源码可见其时间范围约束在 2000-01-01 至 2038-01-19drv_rtc.c。TIMER 三种模式BSP_USING_TMR总开关之下TIMER0~TIMER4 每个实例均可二选一为TIMER系统时钟/软件定时器或TIMER CAPTURE输入捕获依赖RT_USING_INPUT_CAPTURE。SPI/QSPI PDMABSP_USING_SPI0_PDMA、BSP_USING_QSPI0_PDMA可单独为对应总线开启 PDMA 加速。SDH 高级选项NU_SDH_USING_PDMA、NU_SDH_HOTPLUG默认开启热插拔检测、NU_SDH_MOUNT_ON_ROOTSD 卡直接挂载到根目录。CRYPTO 引擎使能后自动连带打开RT_USING_HWCRYPTO及其 AESECB/CBC/CFB/CTR/OFB、SHA1、SHA2-224/256/384/512 与 RNG 子项NU_PRNG_USE_SEED可指定 PRNG 种子值。软件 I2C 兜底BSP_USING_SOFT_I2C0/1提供无硬件 I2C 场景下的 GPIO 模拟总线默认引脚为 swi2c0SCL0x18/SDA0x17、swi2c1SCL0x0B/SDA0x0A。裁剪原则很简单按需打开BSP_USING_XXX驱动库会自动select关联的 RT-Thread 组件如BSP_USING_EMAC自动依赖RT_USING_LWIPRT_USING_NETDEVBSP_USING_CRYPTO自动依赖RT_USING_HWCRYPTO保证依赖一致。五、典型驱动工作机制速览5.1 GPIO接入 PIN 框架NUC980 的 GPIO 驱动在 drv_gpio.c 中通过rt_device_pin_register(gpio, nu_gpio_ops, RT_NULL)注册到 RT-Thread PIN 框架随后即为每个 GPIO 端口安装中断处理并设置为高电平敏感触发。此后上层可用rt_pin_mode/rt_pin_write/rt_pin_read统一操作软件 I2C 等基于 GPIO 的组件也直接受益。5.2 RTC标准设备 报警扩展rt_hw_rtc_init通过rt_device_register(device_rtc, rtc, RT_DEVICE_FLAG_RDWR)注册drv_rtc.c并实现struct rt_device_ops的control回调以响应RT_DEVICE_CTRL_RTC_GET_TIME/SET_TIME若打开RT_USING_ALARM还提供nu_rtc_alarm_reset与中断服务函数用于闹钟功能。5.3 UART轮询 DMA 双路径nu_uart_ops同时挂载了putc/getc轮询与dma_transmitDMA回调drv_uart.cstruct nu_uart在使能RT_SERIAL_USING_DMA时携带完整 PDMA 描述符与触发长度字段控制台通常 uart0与高速数据通道可分别选择合适模式。5.4 EMAC接入 lwIP 双网口drv_emac.c提供e0/e1两个网络接口设备配合RT_USING_LWIP与RT_USING_NETDEV使用其初始化位于INIT_APP_EXPORT阶段与协议栈初始化顺序匹配可用于工业网关类双网口应用。六、基于 NK-980IoT 的实践参考若需在真实硬件上验证上述驱动可参考 nk-980iot 评估板NUC980DK61YARM926EJ-S 300 MHz内置 64MB SDRAM双 10/100 以太网口SPI-NAND 与 SD 卡存储Arduino UNO 兼容接口。其板级说明README.md确认以下驱动已在该板验证Ethernet PHYIP101GR、音频 CodecNAU8822、USB 设备VCOM MStorage、双 USB HostMStorage、SPI NAND FlashW25N01GVZE1G、LED/按键等与第二章支持矩阵高度吻合。固件烧录使用 Nuvoton NuWriter要点如下SDRAM 调试类型选 DDR/SRAM指定rtthread.bin执行地址 0x0选择 Download and runSPI NOR Flash类型选 SPI镜像类型 Loader执行地址 0x0Program 后把开机设置切到 SPI NOR 启动并复位SPI NAND Flash类型选 SPINAND按顺序烧写uboot-spl.binLoader地址 0x200、uboot.binData地址 0x100000、rtthread.binData地址 0x200000与env.txtEnvironment地址 0x80000再切换为 SPI NAND 启动。串口调试建议使用 Tera Term 等终端软件连接 Nuvoton 虚拟串口需安装 VCOM 驱动即可进入 RT-Thread MSH shell 逐一验证第二章表格中的设备。七、参考资料驱动库与支持矩阵bsp/nuvoton/libraries/nuc980/README.md驱动实现源码目录bsp/nuvoton/libraries/nuc980/rtt_port外设开关配置bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig评估板 BSPbsp/nuvoton/nk-980iot、bsp/nuvoton/nk-rtu980、bsp/nuvoton/nk-n9h30NUC980 全系列技术参考手册TRM可由 Nuvoton 官网按型号如 NUC980DK61Y检索下载用于核对各外设寄存器的底层细节。说明本文所述设备名、配置开关、初始化宏与时间范围等均来自当前仓库源码与文档版本迁移时请以仓库最新内容为准。赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐RT-Thread 合晶 MA35D1 系列外设驱动支持矩阵与设备注册机制详解RT Thread 合晶 MA35D1 系列外设驱动支持矩阵与设备注册机制详解 本文基于 RT Thread 仓库中 bsp/nuvoton/libraries操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 下 NuMicro M460 系列驱动支持全览外设清单、设备命名与配置指南RT Thread 下 NuMicro M460 系列驱动支持全览外设清单、设备命名与配置指南 本篇技术指南以 RT Thread 开源仓库中 M460 系列操作系统嵌入式物联网嵌入式OSRTOSRT-Thread GD32 ARM 系列 BSP 开发指南支持矩阵、外设驱动使能与新 BSP 移植RT Thread GD32 ARM 系列 BSP 开发指南支持矩阵、外设驱动使能与新 BSP 移植 RT Thread 在 bsp/gd32/arm 目录下操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。