RT-Thread内核移植

news2024/11/26 8:21:37

目录

  • 前言
  • 一、实验平台简介
    • 1.1 W601简介
    • 1.2 RT-Thread简介
    • 1.3 开发环境
  • 二、W601的SDK移植
  • 三、RT-Thread内核移植
  • 四、下载验证
    • 4.1 串口下载程序
    • 4.2 ST-Link下载


前言

  本文以正点原子W601开发板为基础,讲解如何移植RT-Thread,本文所用资料见附件资源


一、实验平台简介

1.1 W601简介

  W601就是国内联盛德微电子推出的一款集 WiFi 与 MCU 为一体的 WIFI 芯片方案,以代替传统的 WIFI 模组+外置 MCU 方案。它集成了 Cortex-M3 内核,是一款支持多功能接口的 SoC 芯片。可作为主控芯片应用于智能家电、智能家居、智能玩具、医疗监护、工业控制等物联网领域
  W601 主要有如下优势:
①具有 Cortex M3 内核,拥有强劲的新能,更高的代码密度、位带操作、可嵌套中断、低成本低功耗,高达 80MHz 的主频,非常适合物联网场景的使用。
②该芯片最大的优势就是集成了 WIFI 功能,单芯片方案可代替了传统的 WIFI 模组+外置MCU 方案,并且采用 QFN68 封装,7mm*7mm,可以大大缩小产品体积。
③具有丰富的外设,拥有高达 288KB 的片内 SRAM 和高达 1Mbyte 的片内 FLASH,并且支持 SDIO、SPI、UART、GPIO、I2C、PWM、I2S、7861、LCD、ADC 等外设。
  学习 W601 有几份资料经常用到:

《W601 芯片产品规格书》
《WM_W601_寄存器手册》
《W601 芯片设计指导书》

  其中,最常用的是《WM_W601_寄存器手册》,该文档是官方针对 W601 芯片提供的一份参考资料,里面有绝大部分寄存器的详细描述,内容详实,方便大家编写代码,不过没有实例,也没有对 Cortex-M3 构架进行多少介绍,读者只能根据自己对书本的理解来编写相关代码。当然官方也提供了相关外设例程,但也都是基于操作系统的。而《W601 芯片产品规格书》和《W601 芯片设计指导书》可以让我们更好的了解 W601 的电气参数和硬件电路的设计。

1.2 RT-Thread简介

  RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务。可以使用Env 工具对源码功能进行配置或裁剪,生成 MDK/IAR/GCC 工程,需要配合 MDK/IAR/GCC 使用。也可以使用自家RT-Thread Studio下载源码包并创建 rt-thread 工程,独立完成开发、编译、下载、调试等功能,并能进行功能裁剪。
  而对于资源丰富的物联网设备,RT-Thread 又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。
  RT-Thread内核分为三个版本,有标准版本、Nano版本以及Smart版本。RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性,类似于FreeRTOS。RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间),类似于linux操作系统。
  近年来,物联网(Internet Of Things,IoT)概念广为普及,物联网市场发展迅猛,嵌入式设备的联网已是大势所趋。终端联网使得软件复杂性大幅增加,传统的 RTOS 内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS。RT-Thread标准版与其他很多 RTOS 如 FreeRTOS、uC/OS 的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。
在这里插入图片描述

  从版本简介中可以看出,Nano版本是标准版本 的极简内核版本,Smart版本是在标准版本上增加了用户态创造而来,所以学习标准版本是学习 RT-Thread 的基础。本篇文章以学习 RT-Thread标准版本为例,为大家讲解移植,具体内核与设备驱动学习可以见官网详细说明:
https://www.rt-thread.org/document/

1.3 开发环境

  1. MDK安装见下链接:
    https://blog.csdn.net/weixin_44567668/article/details/134191384
    需要下载安装MDK、串口驱动以及ST-Link驱动
  2. 串口下载程序(见附件资源)
  3. W601官方SDK(见附件资源)
  4. RT-Thread内核源码(见附件资源)
    https://download.csdn.net/download/weixin_44567668/88503413

二、W601的SDK移植

三、RT-Thread内核移植

四、下载验证

4.1 串口下载程序

  首先需要安装串口驱动,安装见前面开发环境搭建。然后在附件资源里找到星通智联串口调试下载助手,双击运行ThingsTurn_Serial_Tool.exe
  选择 ALIENTEK W601 开发板在电脑上的 COM 口,在电脑的“控制面板->设备管理器->端口(COM 和 LPT)”中查看,如果电脑的 COM 口太多,请插拔开发板的 USB 线观察具体的 COM 口编号。串口参数按如图所示参数进行设。打开串口后,还需要选择 FLS 文件路径(这里的文件选择上面新建工程并且编译后的 BIN 文件夹路径就可以了,如果没有 FLS,请先编译工程),然后点击下载,就可以将程序下载到 W601 芯片。
在这里插入图片描述

4.2 ST-Link下载

  首先需要安装ST-Link驱动,安装见前面开发环境搭建。打开 Options for Target 选项卡,在 Debug 栏选择仿真工具为 ST-Link Debugger,这里我们还勾选了 Run to main(),如图所示:
在这里插入图片描述
  然后我们点击 Settings,设置ST-Link的一些参数,如图所示:

  单击 OK,完成此部分设置,接下来我们还需要在 Utilities 选项卡里面设置下载时的目标编程器,我们直接勾选 Use Debug Driver,即和调试一样,选择高速 DAP 来给目标器件的 FLASH 编程,如图所示:
在这里插入图片描述
  然后这里需要拷贝官方提供的下载算法 W60X_QFlash.FLM(路径为附件资源\W601的RT-Thread开发环境\WM_SDK\Doc\W60X_QFLASH_Driver_for_SWD\W60X_QFlash)文件到MDK安装目录下(路径为.\Keil_v5\ARM\Flash),如图所示:
在这里插入图片描述

  然后点击 Utilities->Settings,在 Download Function 勾选“Reset and Run”功能,在“RAM for Algorithm”处,需要将 Size 改为“0x00002000”,而后点击 Add 选项,选择刚刚拷贝的下载算法“Winner Micro 1M Flash V1.0”,然后点击 Add,添加后最后点击 OK 退出就可以了。
在这里插入图片描述
  在设置完之后,点击确定,然后再点击 OK,回到 IDE 界面,编译一下工程。然后点击下载按钮,就可以下载代码到 W601 上面了,如图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL数据库使用方法

首先打开sqlite3.exe所在文件夹,如图1 图1 在文件夹路径中将路径改为cmd,如图2所示 图2 在弹出的cmd窗口中输入如图3所示。 图3 sqlite3 tichiceliang.db 其中tichiceliang是数据库名称。然后按enter,再在cmd中输入.table,可以看到文件夹目…

java中:cmd界面输入javac后提示:找不到或无法加载主类,怎么解决

找不到或无法加载主类 检查环境变量cmd下用 java命令运行文件,提示找不到主类待续、更新中 检查环境变量 CLASSPATH 少写.;安装jdk过程有两部,一步为安装jdk文件夹,全部一致; 另一步为安装jre文件夹与jdk文件夹不一致(或者文件夹安装位置, 一路全部默认)path中将java变量移到顶…

(免费领源码)Java#Springboot#mysql高校实训管理平台01557-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 高校实训管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

unittest 通过TextTestRunner(verbosity=)展示执行结果

unittest.TextTestRunner的verbosity参数用于控制测试运行时的详细程度。它可以接受的值如下: 0: 静默模式,不输出任何信息。1: 默认模式,输出每个测试方法的简要摘要和总体摘要(通过、失败、错误等)。2: 详细模式&am…

LangChain+LLM实战---使用GPT4ALL和LangChain构建本地大模型应用

原文:Private LLMs on Your Local Machine and in the Cloud With LangChain, GPT4All, and Cerebrium 私有化大语言模型的想法肯定会引起我们的共鸣。其吸引力在于,我们可以查询信息并将信息传递给大语言模型,而无需我们的数据或响应通过第…

OpenGL_Learn06(纹理)

接着之前的OpenGL_Learn05(纹理)-CSDN博客 1. 修改片段着色器 修改片段着色器,仅让笑脸图案朝另一个方向看 >>>>> 纹理坐标的Y轴没有进行改变,需要改变的是X轴的纹理坐标 片段代码改写如下 #version 330 core out…

【IO多路转接】select编程模型

文章目录 1 :peach:五种IO模型:peach:1.1 :apple:阻塞IO:apple:1.2 :apple:非阻塞IO:apple:1.3 :apple:信号驱动IO:apple:1.4 :apple:IO多路转接:apple:1.5 :apple:异步IO:apple:1.6 :apple:同步通信&异步通信:apple:1.7 :apple:阻塞&非阻塞:apple:1.8 :apple:总结:app…

【LearnOpenGL基础入门——1】OpenGL简介

目录 一.OpenGL是什么 二.渲染模式 三.前置知识 四.写在最后 一.OpenGL是什么 我们首先先了解一下OpenGL到底是什么。一般我们认为是包含了一系列可以操作图形、图像的函数的一套API。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并…

Java 多线程的线程间的协作

1. 等待与通知 为了支持多线程之间的协作,JDK 中提供了两个非常重要的方法:wait() 和 notify() ,这两个方法定义在 Object 类中,这意味着任何 Java 对象都可以调用者两个方法。如果一个线程调用了 object.wait() 方法,…

多线程JUC 第2季 多线程的内存模型

一 内存模型 1.1 概述 在hotspot虚拟机里,对象在堆内存中的存储布局可以划分为3个部分:对象头;实例数据,对齐填充。如下所示:

MES与ERP系统集成的一些探讨

什么是MES软件? 制造执行系统 (MES) 是一种用于控制车间复杂制造操作和数据的软件。MES软件有助于提高生产过程的质量,使制造商能够轻松响应需求和客户偏好的变化。 MES软件有什么作用? 制造执行系统允许企业跟踪、…

2、k8s 集群安装

1、kubeadm kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。 这个工具能通过两条指令完成一个 kubernetes 集群的部署&#xff1a; # 创建一个 Master 节点 $ kubeadm init # 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master 节点的 IP 和端口…

操作系统——初始文件管理(王道视频p58)

1.总体概述&#xff1a; 这一节&#xff0c;主要是 作为 后续 “文件系统”的引子 我认为可以思考的点&#xff1a; &#xff08;1&#xff09;文件之间的逻辑结构——windows中采用根什么的“树状结构”&#xff0c;而文件在外存中的实际物理结构又是什么样的 &#xff08…

【并行计算】多核处理器

这张图连接了几个并行计算的思想。 从上往下。 1.两个fetch/decode部件&#xff0c;是superscalar技术&#xff0c;每个cycle可以发射多个指令。 2.多个执行单元&#xff0c;支持乱序执行&#xff0c;是ILP&#xff0c;指令级并行。 3.每个执行单元里还支持SIMD操作。 4.有…

求职应聘校招社招,面对在线测评有什么技巧?

网上测评&#xff0c;不要怕&#xff0c;关键是在于你要提前准备充分。要说技巧&#xff0c;真心没有&#xff0c;但是建议我有一点点。 1、网上测评&#xff0c;技巧就是老实做 老老实实做题&#xff0c;我一贯的作风&#xff0c;老实人不吃亏。越是心思灵巧的人&#xff0c…

MyBatis-Plus复习总结(一)

文章目录 一、环境搭键二、基本CRUD2.1 BaseMapper2.2 插入2.3 删除2.4 修改2.5 查询 三、通用Service四、常用注解4.1 雪花算法4.2 注解TableLogic 五、条件构造器和常用接口5.1 Wrapper介绍5.2 QueryWrapper5.3 UpdateWrapper5.4 condition5.5 LambdaQueryWrapper5.6 LambdaU…

二、计算机组成原理与体系结构

&#xff08;一&#xff09;数据的表示 不同进制之间的转换 R 进制转十进制使用按权展开法&#xff0c;其具体操作方式为&#xff1a;将 R 进制数的每一位数值用 Rk 形式表示&#xff0c;即幂的底数是 R &#xff0c;指数为 k &#xff0c;k 与该位和小数点之间的距离有关。当…

论文阅读—— UniDetector(cvpr2023)

arxiv&#xff1a;https://arxiv.org/abs/2303.11749 github&#xff1a;https://github.com/zhenyuw16/UniDetector 一、介绍 通用目标检测旨在检测场景那种的一切目标。现有的检测器依赖于大量数据集 通用的目标检测器应该有两个能力&#xff1a;1、可以利用多种来…

鹏城杯_2018_note

查看保护&#xff0c;就开了 PIE&#xff1a; 漏洞点&#xff1a; buf 存在溢出&#xff0c;刚好可以溢出到 idx&#xff0c;而且没有开 PIE 和 FULL RELRO&#xff0c;所以可以修改 idx 去修改相关 got 表项。 然后我就没啥思路了&#xff0c;因为在我的本地环境堆上是没有可…

Flink SQL时间属性和窗口介绍

&#xff08;1&#xff09;概述 时间属性&#xff08;time attributes&#xff09;&#xff0c;其实就是每个表模式结构&#xff08;schema&#xff09;的一部分。它可以在创建表的 DDL 里直接定义为一个字段&#xff0c;也可以在 DataStream 转换成表时定义。 一旦定义了时间…