ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ART-Pi开发板实战:基于RT-Thread的嵌入式系统上手全攻略

ART-Pi开发板实战:基于RT-Thread的嵌入式系统上手全攻略 2. 开头说实话第一次拿到ART-Pi这块板子的时候我的第一反应是这不像一块开发板更像一个精致的工业设计样品。黑色PCB配银色散热片板上接口齐全得不像入门板背面还有一颗高清音频解码芯片板载扬声器接口和麦克风接口一应俱全。ART-Pi是正点原子联合RT-Thread官方发布的一块面向物联网开发者的评估板核心是ARM Cortex-M4内核的STM32H750芯片主频高达480MHz自带2MB flash和1MB RAM外扩了外部SDRAM和闪存。它预装了RT-Thread操作系统开箱就能在串口终端里敲命令通过Finsh控制台操作系统对象这一点和传统单片机开发“写完代码把板子当裸机跑”的体验完全不一样。我喜欢把ART-Pi理解成“能跑Linux式体验的单片机开发板”但比Linux轻量得多RT-Thread的调度器、设备框架、软件包生态让嵌入式开发开始有了“模块化组装”的感觉。这篇博文不适合那些只想要点灯教程的玩家更适合对实时操作系统感兴趣、希望在真实硬件上把RT-Thread跑起来、并且愿意研究一点点“为什么会这样”的人。我会从开箱、硬件、环境搭建、第一个例程到常见坑完整记录我的上手过程并且解释每一步背后的原因。1. 整体设计与硬件解读为什么ART-Pi值得上手1.1 硬件配置亮点与定位ART-Pi的硬件配置在同等价位的开发板里可以用“豪华”来形容。主控芯片是STM32H750VBT6Cortex-M7内核480MHz主频内置1MB RAM虽然片内flash只有128KB但板载了一个8MB的外部SPI FlashW25Q64和一个32MB的外部SDRAMW9825G6KH。为什么要外挂SDRAM和Flash因为RT-Thread要跑起来、要跑文件系统、要跑一些稍复杂的应用比如简单的GUI、音频解码、网络服务128KB的片内flash根本不够用。系统镜像和文件系统放在外部Flash中运行时的堆栈、对象池、消息队列放在SDRAM中这样内存才会宽裕。它自带的有线网络接口RMII接口的LAN8720A、2.4GHz WiFi模块AP6212同时支持蓝牙、板载ST-Link仿真器、TF卡座、音频编解码芯片WM8960支持双声道DAC和ADC、LCD接口、Arduino排针、RGB LED、用户按键等等。这已经相当于一个微型物联网网关的配置有网络、有存储、有音频、有扩展接口。我第一次拿到的感觉是这板子不是用来学“单片机”的而是用来学“物联网系统”的。很多人会问为什么不直接学Zynq、RK3568这类Linux板子我的看法是实时性需求不同。RT-Thread是硬实时系统任务调度延时可控到微秒级而Linux在普通场景下的调度延时往往是毫秒级。做电机控制、数据采集、协议转换这类的应用RT-Thread更合适。而且RT-Thread的功耗比Linux低很多启动时间可控制到毫秒级代码量小裁剪灵活。ART-Pi的定位就是“跑RT-Thread的硬件底座”让你聚焦在系统应用而不是驱动移植上。1.2 板载资源与学习路线的关系ART-Pi板子上的每一块外设都对应RT-Thread的一个软件包或驱动框架。比如板载WiFi模块对应的是RT-Thread的wlan框架和airkiss配网有线网口对应的是lwIP协议栈WM8960音频芯片对应的是RT-Thread的audio框架板载Flash和SDRAM对应的是FATFS文件系统和内存管理。在裸机开发中每操作一个新外设你都要写寄存器配置函数、中断处理函数。但在RT-Thread里很多外设已经被抽象成了设备open、read、write、close这套统一接口用熟了之后写应用效率很高。所以我把上手ART-Pi的学习路线拆成四步先把板子点亮跑通标准例程熟悉RT-Thread的基本启动流程、核心对象线程、信号量、队列。熟悉Finsh控制台在终端里调用命令查看线程状态、内存信息、设备列表。使用RT-Thread Studio通过图形化配置和软件包中心添加一个具体功能比如联网、读取传感器并跑起来。自己动手写一个驱动或者把现有驱动改造理解设备驱动框架。这篇文章重点覆盖前两步因为这两步的体验决定了你对RT-Thread的第一印象。我见过很多朋友第一步就被环境搭建和编译错误劝退这非常可惜因为RT-Thread官方对ART-Pi的支持已经相当完善只要按正确方式操作整个过程可以非常顺滑。2. 开箱到环境搭建第一次接通ART-Pi2.1 先搞清楚需要准备什么ART-Pi包装盒里除了板子还有一条USB Type-C线用于供电和ST-Link、一条网线还是交叉网线不用纠结现在网卡基本都自适应、两根天线一根用于WiFi/蓝牙一根是SMA延长线。我自己额外准备了一根USB转串口线如果要看bootloader日志需要接板子上那个串口不过用板载ST-Link的虚拟串口也可以直接看到RT-Thread系统日志一张TF卡可选用来体验文件系统一个Micro USB转OTG线可选用于做USB Device实验电脑上安装的软件ST-Link驱动、串口终端工具我用的是MobaXterm也可以用PuTTY、串口助手为什么ST-Link驱动很重要因为ART-Pi板载ST-Link/V2仿真器用一个Type-C口就能同时实现供电、调试和虚拟串口但Windows系统第一次插入时不会自动识别需要安装ST官方驱动STM32 ST-LINK Utility或ST-Link驱动安装包。这个驱动不装好后面在RT-Thread Studio里下载固件会直接报错“ST-LINK error”。我第一次就是从这翻车的以为板子坏了折腾了半天结果只是驱动没装。2.2 连接板子和确认系统启动连接方法很简单用Type-C线连接板子的“Debug”口另一端接电脑。板子两个Type-C口一个标注Debug靠板边一个标注USB用于外接USB设备别插错。插上电后板子上靠近WiFi模块的那个LED蓝色会亮代表系统供电正常。如果板子出厂已经烧录了系统固件RGB LED会不停地跑一个呼吸灯效果同时串口终端上会滚动打印RT-Thread启动Logo。查看串口时先打开设备管理器找到“串行总线设备”或者“端口(COM和LPT)”下新增的COM口。如果是COM5、COM10这种就记下端口号。打开MobaXterm新建一个Session选择Serial端口选那个COM口波特率用115200数据位8、停止位1、无校验。连接后按一下板子上的复位键RESET按钮在网口旁终端里会再次出现启动日志。启动日志第一屏应该是这样\ | / - RT - Thread Operating System / | \ 4.1.1 build xxx 2006 - 2022 Copyright by RT-Thread team接着会初始化各个驱动最后进入Finsh控制台出现一个msh 提示符。看到这个提示符说明系统已经跑起来了你已经有资格在终端里和操作系统对话了。我记得第一次看到这个提示符时内心还是挺激动的——不是感慨技术多高大上而是终于遇到一个“开箱就能体验操作系统”的嵌入式方案。以前玩裸机时写完代码烧进去能输出的只有串口打印的调试信息而在RT-Thread里那是一个可交互的命令行。3. 体验RT-Thread从第一个例程到控制台操作3.1 用RT-Thread Studio还是命令行RT-Thread官方为ART-Pi提供了完整的板级支持包BSP也就是一个已经配置好的工程模板。你可以用两种方式使用它一是把源码从GitHub拉下来用scons命令行工具Env管理器自己配制编译二是用集成开发环境RT-Thread Studio导入BSP后直接编译下载。我的建议是如果刚入门直接用RT-Thread Studio。它把配置、编译、下载、调试集成到了一起省去很多环境变量问题等熟练之后再回到命令行scons方式也不迟。RT-Thread Studio是基于Eclipse的IDE界面和STM32CubeIDE、Keil都不同。我之所以推荐它是因为它内置了环境管理器能自动下载工具链、OpenOCD、QEMU等组件。如果你用Keil的方式打开ART-Pi工程会遇到芯片型号、下载算法、分散加载文件要自己调容易劝退。Studio里一切都帮你配好了你只需要点击“构建”和“下载”。具体安装步骤很简单从RT-Thread官网下载对应系统版本的Studio安装后第一次启动会提示安装SDK。安装SDK过程较慢需要从服务器拉取好多东西建议挂代理……我是说建议耐心等待扯远了还是专心搞板子吧。Studio安装完成后最好再从官网下载“RT-Thread SDK”里面包含ART-Pi的BSP源码、工具链、调试器等。默认Studio安装器自带的SDK仓库可能不完整所以要单独获取。我试过两种方式最终直接在Studio里“文件-导入-RT-Thread BSP 项目”选择SDK下的rt-thread/bsp/stm32/stm32h750-artpi目录IDE会自动认出来这是一个ART-Pi板级工程导入后所有配置都是现成的。3.2 编译、下载并运行一个标准例程导入工程后你会看到左侧项目树里有很多代码核心的几个目录是applications/用户应用代码。main.c就在这里系统启动后会自动运行main函数。drivers/板级驱动代码比如ETH、WiFi、音频等驱动。board/板卡初始化相关代码包括时钟配置、GPIO初始化。rt-thread/内核源码和组件源码一般情况下不需要修改。第一次上手我不建议急着改代码先把默认固件编译下载验证一遍流程。操作是点击工具栏上的“构建”按钮锤子图标等待底部控制台输出编译进度。STM32H750全量编译大概需要一两分钟取决于电脑性能。编译完成后点击“下载”按钮向下箭头图标Studio会调用ST-Link把固件烧到板子里。烧录成功后系统自动复位串口终端会再次出现启动日志。如果烧录时报错多半是ST-Link驱动版本太老或硬件版本识别失败可以在Studio中“窗口-首选项-RT-Thread Studio-调试器”里选择ST-Link并确保驱动版本更新。建议例程先不要编译默认的那个复杂工程设计默认工程启用了WiFi、音频、网络等很多组件编译慢且内存占用高而是新建一个最小工程只保留内核和Finsh跑一个LED闪烁。那么怎么新建最简单的方法是复制官方BSP目录到一个新文件夹然后用Env工具执行menuconfig关掉不用的组件。不过对新手来说用Studio里“文件-新建-RT-Thread项目”选ART-Pi模板会自动生成一个精简工程。我自己的操作是在SDK的BSP目录里找到stm32h750-artpi复制一份命名为artpi-mini然后打开Studio导入这个副本。注意Studio导入的时候项目名称不能有中文或特殊字符。接着打开applications/main.c把自动生成的代码替换成下面这样使用板载的蓝色LED引脚#include rtthread.h #include rtdevice.h #define LED_PIN GET_PIN(C, 0) int main(void) { rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); } return 0; }引脚号怎么确定的ART-Pi的原理图里蓝色LED连接在PC0上因此用rt_pin_write宏直接操作引脚。编译下载后蓝色LED应以1Hz频率闪烁同时串口终端照常启动。可能有人会问为什么用户代码写在main函数里系统不是有调度器吗这样写不是占用了整个main线程吗没错RT-Thread启动后会创建主线程main线程代码执行就是在这个线程里的。如果一直死循环这个线程就停在此处但其他内核线程比如空闲线程、Finsh线程依然能运行。RT-Thread是一种抢占式实时操作系统即使在main线程死循环里Finsh控制台也能通过中断及时处理输入命令。这也是用RTOS开发时一个容易忽略的点——主线程只是一个普通线程不是“超级管理员”它的死循环不会饿死其他高优先级就绪任务。3.3 Finsh控制台在命令行里看系统系统跑起来后在串口终端输入help回车你会看到当前系统支持的所有命令列表。比如list_thread、list_timer、list_device、list_sem等。这些命令是RT-Thread内置的系统监控命令用来查看系统运行状态。我习惯先输入list_thread终端会打印所有线程的名称、优先级、状态、栈大小和使用率。这是学习RTOS最好的途径——你能亲眼看到有哪些线程存在、分别处于什么状态。再输入list_device会列出所有注册到设备框架的设备。你会看到网络设备eth0、串口设备uart1、uart2、GPIO设备pin等等。这个命令非常直观地展示了RT-Thread“万物皆设备”的设计思路。输入free可以查看内存池使用情况堆剩余空间。这对应的是RT-Thread的堆内存管理调试内存问题时非常有用。更有意思的是Finsh支持直接调用函数。比如在msh模式下输入list_timer可以看到系统里所有定时器。如果你配置了MSH_CMD_EXPORT宏自己写的函数也能出现在命令行里。比如在main.c里加#include finsh.h static void show_hello(void) { rt_kprintf(hello ART-Pi\n); } MSH_CMD_EXPORT(show_hello, show a hello message);重新编译下载然后在命令行输入show_hello终端就会打印hello ART-Pi。这个机制让你调试代码时不需要反复改代码烧录而是把函数暴露成一个命令随时调用大大提升了调试效率。我第一次在命令行里调用自己写的函数时真有“系统编程”的感觉。对初学者来说这也是理解“函数指针”、“命令行解析”的一个极好切入点。3. 注意事项与避坑指南我踩过的那些坑3.1 串口不通、驱动不识别怎么办常见的串口问题有以下几种插错Type-C口用Debug口不是USB口。Debug口在USB口左边。反正我的板子上只有Debug口边上印着“ST-LINK”字样比较容易认。虚拟串口没出检查设备管理器——如果只出现“未知USB设备”说明驱动没有正确安装。重新安装ST-Link驱动或者在设备管理器里右键更新驱动。端口识别了但乱码检查波特率是不是115200数据位等参数对不对。如果用其他串口工具选错了编码方式也可能显示乱码。终端不回显连接后按一下板子的复位键强制看打印。有可能板子已经启动过了Finsh线程阻塞没输出复位后能看到完整启动过程。3.2 编译下载时的报错常见报错之一是Error: Flash Download failed - Cortex-M7。这个错误通常是下载算法没有选对。在RT-Thread Studio中打开“Run - Debug Configurations”或者直接查看工程的settings中flash配置确保下载算法是STM32H750的内部Flash同时勾选“Reset and Run”。另一个报错是No ST-LINK detected说明Studio没有识别到调试器。先检查USB线是否是数据线有些线只能充电不能传数据其次换一个USB口。有时Studio自带的调试器配置和ST-Link固件版本不匹配需要在“窗口-首选项-调试器”中把“ST-Link”的调试类型选为“ST-Link”并更新ST-Link固件使用STM32CubeProgrammer。3.3 内存与链接脚本的坑STM32H750片内flash只有128KB但ART-Pi板载外部Flash有8MB。RT-Thread默认的链接脚本会把代码放到内部flash如果程序过大比如开启了WiFi、音频等大组件内部flash可能会爆掉。如果编译时报region FLASH overflowed除了裁剪功能之外也可以使用官方BSP里提供的linker script把部分代码放进外部Flash。但新手不建议动链接脚本因为启动时外部Flash初始化忘写会导致跑飞。有人说ART-Pi的H750不是有2MB flash吗这是很多人混淆的H750的flash是128KB的H743才是有1MB以上。ART-Pi板子上那颗STM32H750VBT6的片内flash就是128KB。用外部Flash跑代码的方式需要在boot阶段初始化外部存储控制器ART-Pi BSP里默认有外部Flash算法可以通过ST-Link下载到外部。但普通使用时都建议把复杂功能裁剪掉保持镜像在内部flash内。3.4 WiFi配网与天线ART-Pi板载WiFi模块AP6212默认固件支持WiFi联网。但注意AP6212需要在系统启动时加载固件文件是WiFi芯片的固件不是系统固件这些文件放在文件系统里。如果你的程序去除了文件系统WiFi初始化会失败。天线要连接好就是那个小小的IPEX天线不连天线也能扫到信号但信号极弱很容易掉线。所以在用WiFi实验之前建议先把无线处理理清楚。4. 工具与知识储备选对路径提高效率4.1 Env、scons与Studio三种工具如何选RT-Thread有三个基础设施Env环境配置工具、scons构建系统、Studio IDE。Etool的使用流程是进入BSP目录在Env窗口中使用menuconfig图形化选择配置生成.config然后执行scons --targetmdk5或scons来生成工程/编译。说实话Env命令行的方式更适合有一定Linux使用经验、追求构建灵活性的开发者。因为menuconfig能细粒度地选择哪些组件开启、哪些关闭生成的代码更精简。Studio其实也封装了同样的逻辑只是界面化。我的建议是刚入门不想被环境问题劝退用Studio。之后需要批量修改配置、准备生产工程用Envscons。两者生成的构建产物是同一套不用担心不兼容。4.2 学会看官方文档与源码RT-Thread的文档中心有很详细的说明比如《RT-Thread编程手册》、设备框架介绍、软件包使用说明。新手最容易忽略的是“软件包”这一层。在RT-Thread里一些常见的传感器驱动、网络应用、GUI、云连接SDK都已经作为软件包存在。你只需要在menuconfig里选中某个软件包然后开启联网自动下载编译后即可使用。ART-Pi官方例程里尤其推荐先跑一下wlan例程体验连接WiFi后用telnet登录板子。源码的话重点看rt-thread/src/下的内核源码以及rt-thread/components/下的组件源码。不用从头读到尾遇到问题时带着问题翻源码效率最高。另外ART-Pi官方仓库中除了BSP还有一份《ART-Pi 用户手册》PDF里面有详细原理图、引脚定义、出厂固件烧录方法。原理图一定要看因为它决定了你的GPIO操作、外设连接是否正确。比如板子上的用户按键连接在PA0有上拉电阻RGB灯的引脚分别是什么这些都要以原理图为准。4.3 调试工具与日志技巧调试RT-Thread程序最常用的是串口打印和Finsh命令。rt_kprintf是RT-Thread全系统可用的打印函数无论在内核线程、中断上下文还是组件里都能安全使用。不过中断里调用rt_kprintf可能打印的很慢阻塞中断所以不建议在中断处理函数中大量打印。如果你希望输出带有模块前缀、标签、颜色可以使用ULOG日志组件。在menuconfig中开启ULOG后可以使用LOG_D、LOG_I、LOG_E等宏按日志级别过滤输出。这个机制比printf好很多尤其系统复杂之后日志分级别输出会帮助你快速定位问题。调试时我还会用ST-Link的串口和Studio的调试器结合。断点、单步、查看变量都是IDE的基本功能。但因为RT-Thread是多线程调度系统在调试时需要注意断点触发时系统时钟中断可能还在运行暂停的是所有线程与裸机调试体验略有不同。如果调试中把板卡停了一段时间那么一些定时器可能堆积大量事件恢复运行后现象会变得奇怪。这种情况如果发生不用慌复位重新跑就行。5. 常见问题与排查技巧实录我在玩ART-Pi过程中遇到最有代表性的几个问题整理成了一个速查表希望能帮大家少走弯路。现象可能原因排查与解决插入USB无任何反应Type-C线只支持充电换一根带数据传输的线或用手机数据线测试设备管理器出现未知设备ST-Link驱动未安装安装ST-Link官方驱动或用STM32CubeProgrammer更新固件串口有输出但乱码波特率或编码不对固定使用115200-N-8-1终端选UTF-8编码Finsh命令输入无响应串口助手未发回车换行部分工具需要设置发送新行Telnet/串口会话确认CRLF编译报flash溢出开了过多组件在menuconfig中关闭不需要的组件如图形库、音频等下载时报Cortex-M7 flash算法错误下载算法配置不对在Studio调试配置里选对STM32H750的内置Flash算法下载成功但不运行复位配置或启动引脚不对检查BOOT0是否低电平默认尝试手动复位WiFi不能扫描到网络天线没接或固件文件缺失接好IPEX天线确认文件系统中有wifi固件线程调度看起来卡死某线程优先级高且死循环用list_thread查看线程状态检查是否有while(1)未加延时排查问题时我习惯分“硬件-软件-配置”三层排除。先观察电源灯是否正常、芯片是否发热再确认串口是否有日志、按键是否有响应最后看配置中是否勾选了需要的组件检查链接脚本是否匹配。一次只改一个变量一般都能定位到原因。有个技术细节要注意ART-Pi板载的ST-Link模拟的串口在Linux下可能是/dev/ttyACM0如果你在Vmware或WSL里操作虚拟机USB透传设置一定要勾选否则无法识别。另外使用macOS的读者可能需要安装对应的FTDI或ST-Link驱动如果系统识别成USB modem可以去系统信息里确认。另一个容易被坑的地方是RT-Thread Studio自带的串口终端在打开时可能占用串口导致外部串口工具打不开。如果遇到“串口被占用”提示检查Studio的终端是否还开着。我一般是关闭Studio的终端专心用MobaXterm。5.1 一个真实的排查案例我遇到的第一个棘手问题是出厂固件能运行但自己编译的例程下载后LED不闪串口无Finsh提示。因为出厂固件能跑所以硬件没问题问题肯定出在自己编译的工程上。我排查过程是这样的先用list_thread命令看系统线程是否存在但串口连Finsh都不出现说明用户代码很可能卡死在SystemInit或者调度器启动前。我检查了编译日志链接脚本地址正确没有警告。然后又想到是不是时钟配置有问题。RT-Thread BSP中时钟是系统时钟使用外部25MHz晶振倍频到480MHz但如果板的晶振不是25MHz比如24MHz系统时钟频率不对串口波特率就会偏差导致串口输出乱码或没有输出。我查了原理图ART-Pi的晶振确实是25MHz与代码匹配。最后发现问题出在main函数里的代码我在main函数开头就用了rt_pin_mode但这个函数依赖GPIO设备驱动而设备驱动在调度器启动后才初始化。如果系统还没有准备好调用就会出错。我把代码挪到rt_thread_delay之后的循环里或者放到一个新建线程中问题解决。这个案例说明在RT-Thread里设备驱动的初始化是有时序的不是随意调用都可以。标准的用户代码应该放在一个自己创建的线程里而不是在main函数里直接调用可能依赖设备驱动的API。5.2 断电复位法熟手的“重启解决一切”如果板子在调试过程中变卡比如WiFi连不上、Finsh命令不回显、偶发死机我建议先不要疯狂改代码先把板子彻底断电拔掉Type-C线等几秒再插电。原因是外部Flash、SDRAM、WiFi模块在热复位时状态可能不对断电冷启动可以恢复。如果还卡就按住板上的用户按键KEY1对应PA0再按下复位键进入bootloader模式用串口工具烧录出厂固件。出厂固件在官方仓库能获取到。这个操作类似手机的“进入下载模式”是最后的保险手段。另外RT-Thread的Finsh提供了一个很有用的命令reset。在命令行里直接输入reset系统会调用软件复位重新启动。如果板子没有硬件复位键的连板场景这是个非常方便的功能。我在脚本化测试中就经常用reset命令重启系统。6. 上手后下一步可以怎么玩玩完LED点和Finsh命令之后ART-Pi能做的事情就非常多了。我个人建议接下来按这个顺序探索联网用wlan命令连接WiFi然后使用浏览器或Finsh里的ping来验证网络。RT-Thread内置了lwIP协议栈联网后可以使用ifconfig查看IP地址。文件系统把TF卡格式化FAT32插入卡槽在Finsh中输入mkdir、ls等命令操作文件。量产固件中默认开启了文件系统。音频ART-Pi板载WM8960可以播放音频文件。可以先下载一个wav文件到TF卡使用播放命令听一下感受一下DAC效果。MQTT上云使用RT-Thread软件包中的paho_mqtt连接公共MQTT服务器或自己搭的服务器定时上报数据。这一步能把开发板的身份从“单机demo”提升到“物联网节点”。自己写驱动选一个外接传感器模块比如温湿度传感器DH11或者OLED屏幕使用RT-Thread的设备驱动框架把它注册成设备并操作。这个过程能加深对驱动的理解。我目前正在做“ART-Pi 边缘计算网关”的小项目打算把串口采集到的数据通过WiFi上传到自建MQTT服务器并且利用RT-Thread的软件定时器做周期任务调度。后续等跑通了再写一篇实战笔记分享中间遇到的那些内部接口问题。7. 最后想说的几句话我在实际把玩ART-Pi的过程中发现这款板子最大的价值不是硬件性能而是它把“操作系统”这个概念从桌面系统带到了嵌入式领域。你可以在它的基础上看到线程、信号量、设备框架、网络协议栈如何在一个低成本MCU上协同工作。只要经历了“Finsh里敲命令让LED闪烁”这个小小的仪式感你就算正式踏入RTOS的世界了。另外我还想分享一个小技巧刚拿到板子别急着写代码先把出厂固件的日志完整读一遍再对照用户手册把板载资源在日志里一一找出来。这个过程能让你对整个系统的初始化流程、设备注册时机有直观印象。之后自己写代码时遇到设备不存在、初始化失败之类的问题就能更快地定位是哪一段还没来得及初始化了。我这篇文章从硬件、环境、编译、Finsh到避坑覆盖了ART-Pi上手初体验的完整闭环。接下来你只需要一根Type-C线、一台电脑和一点耐心就能让这块黑色小板子跑起属于你的第一个RT-Thread程序。如果过程中遇到任何卡壳欢迎在评论区留言根据我的经验八成是驱动、串口或配置的问题我们都能找到解决路子。
返回列表