news 2026/4/18 9:38:06

<span class=“js_title_inner“>手把手在1GHz单片机上支持大模型对话 | 技术集结</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>手把手在1GHz单片机上支持大模型对话 | 技术集结</span>

本文将演示如何基于RT-Thread,在RA8P1 Titan Board上,从设备驱动、W-iFi联网 到 AIOT大模型部署,构建一个端侧AIoT应用。内容聚焦具体操作与代码实现,为在高性能MCU上进行全栈开发的工程师提供一份可直接复现的实践参考。

目录

环境搭建

烧录方法

RT-Thread 设备驱动

Wi-Fi 联网实验

AIOT大模型对话实验

效果演示

获取同款硬件

1 环境搭建

XShell 软件:https://cdn.netsarang.net/v8/Xshell-latest-p

RT-Thread Studio 安装包:https://download-redirect.rt-thread.org/download/studio/RT-Thread_Studio_2.2.9-setup-x86_64_202412161335.exe

Titan Board SDK环境安装:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/hw-board/ra8p1-titan-board/ra8p1-titan-board?id=rt-thread-studio-%e5%bc%80%e5%8f%91%e6%ad%a5%e9%aa%a4

FSP-6.0安装包:https://github.com/renesas/fsp/releases/download/v6.0.0/setup_fsp_v6_0_0_rasc_v2025-04.1.exe

如果网络不好,有离线SDK包(sdk-bsp-ra8p1-titan-board-1.0.0.zip),需要如下方式进行导入:

2 烧录方法

设备名称:R7KA8P1KF_CPU0

3 RT-Thread 设备驱动

实现一个RT-Thread设备

staticrt_err_tdrv_test_init(rt_device_t dev){ rt_kprintf("test drv init\n"); return RT_EOK;} staticrt_err_tdrv_test_open(rt_device_t dev, rt_uint16_t oflag){ rt_kprintf("test drv open flag = %d\n", oflag); return RT_EOK;} staticrt_err_tdrv_test_close(rt_device_t dev){ rt_kprintf("test drv close\n"); return RT_EOK;} staticrt_ssize_tdrv_test_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size){ rt_kprintf("test drv read pos = %d, size = %d\n", pos, size); return size;} staticrt_ssize_tdrv_test_write(rt_device_t dev, rt_off_t pos, constvoid *buffer, rt_size_t size){ rt_kprintf("test drv write pos = %d, size = %d\n", pos, size); return size;} staticrt_err_tdrv_test_control(rt_device_t dev, int cmd, void *args){ rt_kprintf("test drv control cmd = %d\n", cmd); return RT_EOK;} intrt_drv_test_init(void){ rt_device_t test_dev = rt_device_create(RT_Device_Class_Char, 0); if(!test_dev) { rt_kprintf("test drv create failed!"); return -RT_ERROR; } test_dev->init = drv_test_init; test_dev->open = drv_test_open; test_dev->close = drv_test_close; test_dev->read = drv_test_read; test_dev->write = drv_test_write; test_dev->control = drv_test_control; if(rt_device_register(test_dev, "test_drv", RT_DEVICE_FLAG_RDWR) != RT_EOK) { rt_kprintf("test drv register failed!"); return -RT_ERROR; } return RT_EOK;}MSH_CMD_EXPORT(rt_drv_test_init, enable test drv app); staticintdrv_test_app(void){ rt_device_t test_dev = rt_device_find("test_drv"); if(test_dev == RT_NULL) { rt_kprintf("can not find test drv!"); return -RT_ERROR; } rt_device_open(test_dev, RT_DEVICE_OFLAG_RDWR); rt_device_control(test_dev, RT_DEVICE_CTRL_CONFIG, RT_NULL); rt_device_write(test_dev, 100, RT_NULL, 1024); rt_device_read(test_dev, 20, RT_NULL, 128); rt_device_close(test_dev); return RT_EOK;}MSH_CMD_EXPORT(drv_test_app, enable test drv app);

PIN 设备解析

4Wi-Fi 联网实验

1.首先我们需要传输wifi的固件资源到文件系统:

参考:https://rt-thread-studio.github.io/sdk-bsp-ra8p1-titan-board/latest/driver/Titan_driver_wifi/README_zh.html#id11

2.在MSH命令行中,输入以下命令扫描附近的wifi热点信息:

wifi scan

3.在MSH命令行中,输入以下命令来让wifi模块联网:

wifi join [wifi 名称] [wifi 密码]

4.我们可以使用ping命令测试是否联网成功:

5.添加自动联网应用代码

#include<rtthread.h>#include<board.h>#include"hal_data.h"#include<fal.h>#include<dfs_fs.h>#include<wlan_mgnt.h>#include<wlan_prot.h>#include<wlan_cfg.h>#define LOG_TAG "wifi"#include<drv_log.h>#define LED_PIN_0 BSP_IO_PORT_00_PIN_12 /* Onboard LED pins */#define FS_PARTITION_NAME "filesystem"voidhal_entry(void){ int result = RT_EOK; rt_kprintf("\nHello RT-Thread core0!\n"); structrt_device *mtd_dev = RT_NULL; externintfal_init(void); fal_init(); mtd_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); if (!mtd_dev) { LOG_E("Can't create a mtd device on '%s' partition.", FS_PARTITION_NAME); } else { if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == 0) { LOG_I("Filesystem initialized!"); if (mkdir("/webnet", 0777) == 0) { LOG_I("Created '/webnet' directory."); } } else { dfs_mkfs("lfs", FS_PARTITION_NAME); if (dfs_mount("filesystem", "/", "lfs", 0, 0) == 0) { LOG_I("Filesystem initialized!"); } else { LOG_E("Failed to initialize filesystem!"); } } } /* Initialize WiFi device and auto-connect */ LOG_I("Starting WiFi auto-connection..."); LOG_I("Connecting to SSID: %s", BSP_WIFI_SSID); /* Wait for WiFi device to be ready */ rt_thread_mdelay(2000); /* Connect to WiFi network */ result = rt_wlan_connect(BSP_WIFI_SSID, BSP_WIFI_PASSWORD); if (result == RT_EOK) { LOG_I("WiFi connection initiated successfully!"); /* Wait for connection to complete */ rt_thread_mdelay(5000); /* Check connection status */ if (rt_wlan_is_connected()) { LOG_I("WiFi connected successfully!"); /* Get and print IP address */ structrt_wlan_infoinfo; if (rt_wlan_get_info(&info) == RT_EOK) { LOG_I("Connected to: %s", info.ssid.val); LOG_I("RSSI: %d dBm", info.rssi); } } else { LOG_E("WiFi connection failed!"); } } else { LOG_E("Failed to initiate WiFi connection: %d", result); } while (1) { rt_pin_write(LED_PIN_0, PIN_HIGH); rt_thread_mdelay(1000); rt_pin_write(LED_PIN_0, PIN_LOW); rt_thread_mdelay(1000); }}

5AIOT大模型对话实验

下面的实验需要基于 Wi-Fi 工程 基础上进行相关配置

使能 llmchat 软件包

点击添加软件包按钮,搜索并添加 llmchat软件包:

添加成功后如下图

通义千问账号注册

1.注册阿里云账号,并进入阿里云百炼平台:选择模型广场→API调用示例

2.模型使用需要充值,请酌情充值即可,这里演示充值1元就可使用:

https://billing-cost.console.aliyun.com/fortune/fund-management/recharge

3.接下来新建大模型的 API-KEY:

4.填写描述后即可创建API-KEY(SK-XXXXXXXX):

5.打开 RT-Thread Settings,进入 RT-Thread online packages → AI packages → Large Language Models(LLM) for RT-Thread 目录下;按照下图进行配置:

  • llm qwen user api key:API KEY 需要在通义千问控制台获取;

  • llm qwen model name:选择模型的名称默认是 qwen-plus;

6.按照下图修改llm配置,同时使能 llmchat webnet 模式:

注意:如果在配置中没有显示“Enable llmchat webnet mode”选项,请进入到下图所示的目录下,编辑Kconfig文件:

请按照下图所示,添加相关代码,注意缩进:

config PKG_LLMCHAT_WEBNET_MODE bool"Enable llmchat webnet mode" select PKG_USING_WEBNET select WEBNET_USING_CGI default n help After using the WebNet model, you can communicate with the llm using a browser webpage.

保存,回到 Studio 中重新打开 RT-Thread Settings 即可显示此选项

7.进入 RT-Thread online packages → IoT - internet of things → WebClient: A HTTP/HTTPS Client for RT-Thread 选择MbedTLS support

8.进入 RT-Thread online packages → security packages → mbedtls 菜单,修改 Maxium fragment length in bytes 字段为 6144(否则TLS会握手失败)

9.使能旧版本兼容支持:

10.修改 LWIP 配置,增加 LWIP 线程栈大小:

11.使能组件-驱动中的软件模拟RTC设备:

12.退出保存配置,studio会自动拉取软件包:

13.修改 webnet线程栈大小为 8K:

14.软件包下载成功后,会在本地 packages下显示:

15.编译,烧录工程

6 效果演示

7 获取同款硬件

或复制连接购买:https://e.tb.cn/h.7qqiktf9TlOxzdJ?tk=hECkUh8oBHW

添加小师弟微信↓,拉你进RT-Thread技术交流群,找到组织!

想要在RT-Thread平台或社区投放内容?

或想参与相关直播活动及赛事?

RT-Thread已开放对接窗口,

请通过邮件与我们取得联系,期待合作!

合作邮箱: tongfangyi@rt-thread.com

点击“阅读原文”直达淘宝链接

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 9:05:42

和餐饮管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要内容 随着信息技术的快速发展&#xff0c;企业和机构对高效、安全的信息管理需求日益增长。传统的手工管理方式已无法满足现代业务需求&#xff0c;尤其是在数据量庞大、业务逻辑复杂的场景下。信息管理系统通过数字化手段实现数据的集中存储、快速检索和智能分析&#xff…

作者头像 李华
网站建设 2026/4/18 8:52:17

Linux:线程创建与终止下(线程六)

一、核心结论 线程终止后需通过pthread_join&#xff08;阻塞回收&#xff09;或pthread_detach&#xff08;自动回收&#xff09;释放资源&#xff0c;避免僵尸线程。线程属性&#xff08;如栈大小、分离状态&#xff09;可通过pthread_attr_t设置&#xff0c;灵活适配不同场…

作者头像 李华
网站建设 2026/4/18 8:54:29

springboot基于springboot和vue前后端分离的网上商城-开题报告

目录 项目背景与意义技术选型系统功能模块创新点预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 项目背景与意义 随着电子商务的快速发展&#xff0c;传统单体架构的网上商城系统在可扩展性、维…

作者头像 李华
网站建设 2026/4/3 4:13:24

办公神器DeepSeek-OCR-2:纸质文档秒变结构化电子档

办公神器DeepSeek-OCR-2&#xff1a;纸质文档秒变结构化电子档 你有没有过这样的经历&#xff1a; 手头一堆会议纪要、合同扫描件、老版产品说明书&#xff0c;全是PDF或手机拍的图片&#xff0c;想复制里面一段话&#xff0c;结果粘贴出来全是乱码&#xff1b;想把表格数据导…

作者头像 李华
网站建设 2026/4/15 3:40:39

蜂鸣器报警模块接线详解:一文说清硬件连接要点

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。整体风格更贴近一位有十年嵌入式硬件设计经验的工程师在技术社区中分享实战心得—— 去模板化、强逻辑流、重实操细节、无AI腔调 ,同时大幅增强可读性、专业深度与落地指导价值。 蜂鸣器不是“接上就响”的…

作者头像 李华
网站建设 2026/4/4 23:35:29

24G显存也能跑!MusePublic艺术创作引擎低配GPU优化指南

24G显存也能跑&#xff01;MusePublic艺术创作引擎低配GPU优化指南你不需要4090&#xff0c;也不必等A100——一台搭载RTX 4090或甚至3090的个人工作站&#xff0c;配合24G显存&#xff0c;就能稳定生成具备电影级光影、优雅姿态与叙事张力的艺术人像。这不是妥协方案&#xff…

作者头像 李华