操作系统嵌入式物联网嵌入式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),仅供参考
企业数字化 ERP 产品动态
相关推荐
图像过滤与混合图像:Python+OpenCV实现近看远看两幅图 简介:这是一份基于Python实现图像过滤与混合图像的课程设计资源,对应Oliva、Torralba和Schyns在SIGGRAPH 2006提出的混合图像简化版。核心思路是利用人眼对高频成分在近处敏感、低频成分在远处可见的特性,将一张图像的高频部分与另一张图像的… · 2026/9/26 21:18:42
Pygame游戏开发入门:从事件循环到接苹果完整实战 学Pygame这件事,我在很多场合跟人聊过。它是Python生态里最被低估的入门级游戏开发库之一,既没有商业引擎那种“拖拽式”的傻瓜便利,也没有纯写算法那么枯燥。用它写第一行代码,创建第一个窗口,控制一个小方块移动&… · 2026/9/26 21:18:22
Python实现可部署的电力负荷BP神经网络预测系统 简介:本资源是一套面向本硕博阶段教研与自学的MATLAB实践教学包,聚焦BP神经网络在电力负荷预测中的建模与实现,解决机器学习算法落地应用的学习难点。压缩包共3个文件,含核心MATLAB主程序(Runme.m)、操作全… · 2026/9/26 21:18:22
ET-BAG出格系统实战:从款式图到纸格数据全流程 简介:这份PDF教程面向服装打版师、CAD设计初学者及希望提升出格效率的从业者,系统讲解ET-BAG软件CAD出格系统的操作方法与技巧。内容从智能笔的左键、右键点选两类用法切入,延伸至直线与弯线绘制、丁字尺角度线、曲线加点减点与端固定修正、群… · 2026/9/26 22:01:47
JetBrains Mono编程字体配置与中英混排实战指南 1. 为什么程序员需要专门的编程字体?JetBrains Mono不是“好看就行”JetBrains Mono 这个名字,最近两年在写代码的人群里几乎成了默认选项。它不是那种靠花哨设计博眼球的字体,而是 JetBrains 公司花了整整两年时间,从零开始为开发… · 2026/9/26 22:01:47
ThinkPHP中泛域名部署的实现方法 如何在ThinkPHP中实现泛域名部署站群对于需要部署多个网站的开发者来说,站群架构是一种广泛采用的设计模式。而泛域名部署则是站群架构中比较常见的实现方式之一。在这篇文章中,我们将介绍如何在ThinkPHP框架中实现泛域名部署站群。一、什么是泛域名部署… · 2026/9/26 22:01:38
如何制作网站?怎么选 独立站长最佳实践:如何制作网站?搞定备案不迷路 备案流程一头雾水?这是无数独立站长在启动项目时遇到的第一个拦路虎。很多人卡在“主体信息”和“接入商”的选择上,甚至因为材料不齐被驳回三次才意识到细节决定成败。别慌,今天咱们不聊虚的,直接拆解从… · 2026/9/26 22:01:29
开放式代码审查实战:从“把关”到“协作”的团队提效指南 1. 先聊聊我为什么要在团队里推行开放式审查做技术Leader这几年,我观察到一个挺普遍的现象:绝大多数开发团队都有Code Review流程,但真正能让Review发挥价值的团队少之又少。大部分情况是,PR一提交,reviewer随手点个Ap… · 2026/9/26 22:01:29
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46