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),仅供参考

相关新闻

10G SFP+光模块四重匹配原理与实战选型指南

10G SFP+光模块四重匹配原理与实战选型指南

1. 这不是买U盘,选10G SFP光模块前你得先搞懂三件事“光特通信”这四个字一出来,老工程师心里就咯噔一下——不是因为技术多玄乎,而是因为太多人把光模块当成即插即用的USB闪存盘。我干这行十二年,从机房布线到核心网调测&#xf…

2026/9/26 21:18:53 阅读更多 →
Obsidian dataview 实战:用元数据与DQL把笔记库变成数据库

Obsidian dataview 实战:用元数据与DQL把笔记库变成数据库

简介:Obsidian Dataview 插件资源包主要面向 Obsidian 用户,用于扩展笔记软件在数据查询、任务管理和时间规划方面的能力。压缩包内共有四个文件,包含两个 JSON 配置文件、一个 JavaScript 核心脚本和一个 CSS 样式表,整体大小约四…

2026/9/26 21:17:53 阅读更多 →
开源AI编程工具选型与实操指南:从补全到智能体

开源AI编程工具选型与实操指南:从补全到智能体

1. 为什么我现在很少提“推荐某个 AI 编程工具”先说结论:工具的取舍根本不应该是你首先要关心的事。这两年“AI 编程助手大比拼:Cursor、Windsurf、VS Code Copilot 和 Trae,谁才是你的神队友”这类文章几乎天天能看到,评论区也是…

2026/9/26 21:17:53 阅读更多 →

最新新闻

Atlas 300V 24G推理卡部署YOLO:从CANN到OM模型转换实战

Atlas 300V 24G推理卡部署YOLO:从CANN到OM模型转换实战

1. Atlas 300V 24G 到底是不是一张运算加速卡先说结论:是,但它是一张“推理加速卡”,不是拿来训练的卡。最近不少人看到“atlas 300V 24G”这个词,第一反应是“又出了一张国产运算加速卡,能不能当GPU用,能不…

2026/9/26 21:59:16 阅读更多 →
做网站都需要什么人团图解步骤及避坑指南

做网站都需要什么人团图解步骤及避坑指南

做网站都需要什么人团图解步骤及避坑指南 网站被黑挂马,后台登录密码改了还是进不去,首页突然变成博彩广告,这种深夜救火的滋味,做过站的都懂。很多人这时候第一反应是找技术,但往往发现, 做网站都需要什么人团…

2026/9/26 21:59:16 阅读更多 →
开放式代码审查:从流程设计到工具落地的实践指南

开放式代码审查:从流程设计到工具落地的实践指南

1. 代码审查这件事,为什么我最后选择了开放式的做法先交代一下背景。我在团队里负责过好几年的代码质量基础设施,从最早的互相口头 review,到后来搭 GitLab MR 流程,再到引入独立审查工具,踩了不少坑。说实话&#xff…

2026/9/26 21:59:16 阅读更多 →
3个实战案例教你搞定wordpress只能访问首页

3个实战案例教你搞定wordpress只能访问首页

3个实战案例教你搞定wordpress只能访问首页 找建站公司最让人头疼的就是怕被坑,几千块钱交出去,网站上线半天打不开,客服还在那装死。尤其是遇到 wordpress只能访问首页…

2026/9/26 21:59:16 阅读更多 →
Thinkphp5实现Redis数据缓存的基本步骤

Thinkphp5实现Redis数据缓存的基本步骤

引言在ThinkPHP 5中,你可以使用Redis作为数据缓存的解决方案。Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中介。下面是在ThinkPHP 5中实现Redis数据缓存的基本步骤:1. 安装 Redis 扩展首先,你需要在你的…

2026/9/26 21:59:16 阅读更多 →
Delphi TCP聊天系统实战:服务端长连接、协议解析与离线存储

Delphi TCP聊天系统实战:服务端长连接、协议解析与离线存储

简介:这是一份面向Delphi初学者与中级开发者的学习型源码资源,聚焦实时网络通信与桌面聊天系统开发实践。资源完整呈现了基于Delphi构建的实景聊天系统v3.0全量工程代码,涵盖登录认证、多线程消息收发、TCP/UDP网络模块、用户界面交互及SQLit…

2026/9/26 21:58:16 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目,或者刚开始接触 Web 前端开发想做点能拿来展示的东西,“学校官网模拟”几乎是最稳的选择。题目看着简单,但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来,其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介:这是一份面向游戏开发初学者与C进阶学习者的超级玛丽(超级马里奥)游戏源码,基于C面向对象编程实现,适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/26 20:27:29 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →