Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Arduino RT Thread Library 简介

onelife edited this page Jun 23, 2019 · 2 revisions

💥 由来

RT-Thread 的历史比 Arduino 要久,只是长期以来默默无闻,而 Arduino 却从诞生开始一直:fire:到现在。其原因,咱哥们儿以为至少有一条是 Arduino 把编程的门槛儿降得很低。以至于能让一个没有任何基础的人,在一天之内开始享受编程的乐趣。不得不说,这实在:cow::x:!

一开始,咱也不是特别看好 Arduino ,只当它是一个初学者的玩具,琢磨着"八位机能玩儿出什么花儿来?" 😜

然而现实"啪啪"的狠抽了哥们儿的脸蛋子 :goberserk: ——八位机确实能玩儿出花儿来 🌻。这大概正是得益于 Arduino 的低门槛儿,让原本甚至是外行的人都能够通过编程来表达自己的想法,释放出"内行人"无法想象的创意来。🌋

后来有一群 STM 玩儿家,开发了个 STM32 版本的 Arduino。这可能是第一个支持 ARM 处理器的 Arduino 。:boom:

大约与此同时(或更早?),:bear:哥也开始了 ART 项目。这是 RT-Thread 和 Arduino 第一次结合。:tada:

咱哥们开始玩 Arduino 的契机是表妹的毕业设计。:grin: 当在库管理器里发现了 FreeRTOS 库时,觉得 RT-Thread 也应该这样玩儿:搭上 Arduino 的车,让更多人知道有 RT-Thread 这么一号,并且开始享受使用 RT-Thread 的便捷 😉。

👷 移植概述

  1. Fork RT-Thread project,暂时移除内核以外的代码。
  2. 重新组织目录结构和引用( #include xxx)以适应 Arduino 的编译步骤。
  3. 映射 Arduino 的串口 API 到 RT-Thread 驱动
  4. 使能 console 并放回 FinSH
  5. 由于不能控制 Arduino 的链接器,所以启动程序要改一改
  6. 放回更多组件、映射更多驱动
  7. 翻新一些例程
  8. 等等 :bowtie:

:neckbeard: Arduino RT-Thread 库概述

Arduino RT-Thread 库目前支持 ARM 的 Cortex-M3 和 Cortex-M0 处理器,使用 Arduino DUE 和 Arduino MKR Zero 板子做测试。

ARM Cortex-M 的内核中断处理程序,在 Arduino 这边(以 Cortex-M3 为例)大部分都是弱定义,除了 SVC_HandlerPendSV_HandlerSysTick_Handler。但是这三个函数也都分别提供了钩子函数:svcHookpendSVHooksysTickHook ,所以移植起来还不算困难。只是刚开始时,由于不熟悉,花了很多时间才搞明白 Cortex-M0 不能处理地址不对齐得情况。比如,一个指向4字节变量的指针,如果它的值(即变量地址)不是4的整数倍,那么引用时就会造成 Hard Fault 。 💀 (非常痛的领悟。)

目前可用的组件

  • FinSH
  • MSH
  • uLog
  • FAT 文件系统
  • 动态模块

目前可用的驱动

  • SPI
  • IIC
  • SD (SPI)
  • ILI9341 (SPI) 显示屏(使用 Adafruit 2.8" TFT Touch Shield v2 板子做测试)
  • FT6206 (IIC) 触摸传感器(使用 Adafruit 2.8" TFT Touch Shield v2 板子做测试)

目前可用的例程

  • Blink:闪烁 LED,展示 thread
  • RttMutex:展示 mutex
  • DataLogger:记录 ADC 数据并存到 SD ,展示 SD 驱动和 FAT 文件系统
  • FinSH:展示 FinSH 、自定义命令和自定义变量
  • HelloMo:展示动态模块(Arduino App)

以上内容如有更新,请参考项目主页

🎊 结语

RT-Thread 是一款优秀的国产实时系统,Arduino 是一个简单易用、非常适合进行快速验证的平台。希望这样的组合能帮到各位仁兄,祝各位遍程愉快! 🍻

👉 请踊跃加 ⭐ 、提交 Issue 或提交 Pull request 。 👍

AltStyle によって変換されたページ (->オリジナル) /