当前位置: 首页 > news >正文

【ARM】应用ArmDS移植最小FreeRTOS系统

【更多软件使用问题请点击亿道电子官方网站】

一、文档背景

FreeRTOS(Free Real-Time Operating System)是一个开源的实时操作系统内核,广泛应用于嵌入式系统。它具有小巧、灵活、低功耗等特点,支持多任务调度、信号量、队列等实时操作系统基本功能。

将FreeRTOS移植到特定硬件平台上是实现嵌入式系统应用的重要步骤。移植过程包括配置内核、初始化硬件、实现基本任务调度等。通过移植,开发者可以在目标硬件平台上运行FreeRTOS,从而开发基于FreeRTOS的嵌入式应用。

二、 解决的问题或者进行问题分析

步骤一:准备开发环境

1、安装开发工具:确保你已经安装了 Arm Development Studio。

2、下载库文件:从 ST 官方网站下载 STM32F7 的 HAL 库,并从 FreeRTOS 官方网站获取 FreeRTOS 11 源码。

步骤二:创建项目

1、创建 ArmDS 项目:

2、打开 Arm Development Studio,选择 "File" > "New Project"。

3、选择 "STM32F769NIHx" 作为目标器件。

步骤三:添加 FreeRTOS 源文件

1、将 FreeRTOS 源文件添加到项目中:

2、在项目属性中,确保添加 FreeRTOS 相关头文件的路径。例如,右键点击项目 -> Properties -> C/C++ General -> Paths and Symbols -> Includes

3、创建并配置 FreeRTOSConfig.h:

步骤四:编写示例任务和 LED 控制

1、初始化硬件和 LED 引脚:

2、在项目中,创建一个新的 C 文件(例如 main.c)

步骤五:编译和下载

1、编译项目:在 Arm Development Studio 中,编译项目以确保没有错误。

2、下载到开发板:使用调试工具(如 ULINK或Dstream),将编译好的程序下载到 STM32F769 开发板上。

步骤六:调试和验证

1、调试程序:通过调试工具运行程序,检查任务是否正常运行。

2、验证功能:观察 LED 是否按照预期闪烁,确认 FreeRTOS 任务调度正常。

三、 如何应用ArmDS移植最小FreeRTOS系统

1.创建一个名称为“FreeRTOS11_Porting”的项目,配置如图3-1所示:

图3-1

2.根据硬件的实际情况,选择对应的处理器,如图3-2所示:

图3-2

3.只添加“Startup”与“Core”组件,如图3-3所示:

图3-3

4.创建两个目录:UserCode与FreeRTOS11Kernel,并创建main.c文件,添加初始化代码,如图3-4所示:

图3-4 

5.将FreeRTOS的源文件添加到项目中,如图3-5所示:

  • 复制FreeRTOS源码目录中的以下文件到你的项目中:

    • FreeRTOS/Source/tasks.c

    • FreeRTOS/Source/list.c

    • FreeRTOS/Source/portable/[compiler]/ARM_CM7/r0p1/port.c

    • FreeRTOS/Source/portable/MemMang/heap_4.c(或其他你选择的内存管理器)

    • FreeRTOS/Source/include目录下的所有头文件

    • FreeRTOS/Source/portable/[compiler]/ARM_CM7/r0p1/portmacro.h

图3-5

6.打开工程的属性窗口,添加几个头文件的路径,如图3-6所示:

图3-6

7.创建并配置 FreeRTOSConfig.h,如图3-7所示:

图3-7

8.编译项目,如图3-8所示:

图3-8

四、验证FreeRTOS已移植到STM32F769开发板上

1、用仿真器Ulink或Dstream仿真器,连接好开发板,如图4-1所示:

图4-1

2、把AXF文件下载到开发板上,运行或调试,并查看开发板上LED灯的情况,如图4-2所示:

图4-2

五、讨论分析

1.S文件的中断向量函数中的“WEAK”字符的作用是什么?

图5-1

解答:

在C语言或汇编语言中,“WEAK”字符主要用于定义一个弱符号(Weak Symbol)。弱符号是一种特殊的符号,其定义允许在链接过程中被同名的强符号(Strong Symbol)覆盖。这在嵌入式系统开发中非常有用,尤其是在定义中断处理程序(Interrupt Service Routine,ISR)时。这种机制提高了代码的灵活性和模块化,是嵌入式系统开发中常用的技术。

六、结论

为嵌入式系统开发者提供一个详尽的指南,利用ArmDS工具将FreeRTOS内核成功移植到目标硬件平台,从而实现可靠的实时操作系统应用。

————————————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

关于亿道电子

亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Visual Studio 调试时加载符号慢
  • Web-server日志分析命令
  • Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐
  • 通过指令深入了解Linux 3
  • 基于深度学习的工业系统仿真
  • 网络安全测试工具Burp Suite基本使用
  • AWS Lambda 十年回顾:功能总览、更新记录与入门指南
  • 【微信小程序开发】——奶茶点餐小程序的制作(二)
  • OrangePi AIpro学习3 —— vscode开发昇腾DVPP程序
  • VMware-converter 4.0 5.0 6.2.0 版本 下载 P2V 物理机转虚拟机 实体机转虚拟机 V2V 虚拟机转虚拟机
  • Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号
  • 浅谈【多线程与并发】之线程池
  • 2.如何定制 Dcat-admin list 中显示的信息
  • Java社会校招类型人力资源招聘系统小程序源码
  • Vue前端服务加密后端服务解密--AES算法实现
  • 深入了解以太坊
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Github访问慢解决办法
  • JS变量作用域
  • Lsb图片隐写
  • passportjs 源码分析
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • swift基础之_对象 实例方法 对象方法。
  • XForms - 更强大的Form
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端技术周刊 2019-02-11 Serverless
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 我有几个粽子,和一个故事
  • Python 之网络式编程
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​如何防止网络攻击?
  • (2020)Java后端开发----(面试题和笔试题)
  • (5)STL算法之复制
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (java)关于Thread的挂起和恢复
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (独孤九剑)--文件系统
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (五)Python 垃圾回收机制
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET IoC 容器(三)Autofac
  • .net访问oracle数据库性能问题
  • .NET企业级应用架构设计系列之结尾篇
  • .net专家(高海东的专栏)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • //解决validator验证插件多个name相同只验证第一的问题
  • /etc/sudoer文件配置简析
  • :中兴通讯为何成功
  • @EnableAsync和@Async开始异步任务支持
  • @ModelAttribute注解使用