给已经写好的裸机程序移植freeRTOS操作系统

接了公司一个项目,这是一个采用Dante模块把I2S数据通过网络交换机转发的音频控制器。包含两个串口配置。一开始以为使用裸机即可满足项目要求,实际上如果只有一个串口确实能满足要求了,现在发现Dante模块也需要串口通讯,2个串口同时存在下,裸机程序开始变得不可靠。

于是决定移植个RTOS系统进去。

第一步 下载FreeRTOS开源包

下载 FreeRTOS - FreeRTOS™

第二步 将包内的source文件夹内容拷贝到工程根目录下新建的FreeRTOS文件夹内

包内的source文件夹:

新建的FreeRTOS文件夹拷贝的内容:

再进入Demo,找到自己对应架构的处理器的demo里的FreeRTOSConfig.h拷贝到include文件夹内

第三步 处理拷贝来的文件内容,需要裁剪一部分,只保留自己要用的。

裁剪 portable内容,这里面存储的是软件系统和硬件层面的桥接内容。其中我们需要保存三个文件夹Keil、MemMang、RVDS

RVDS文件夹:存储的是不同内核芯片的移植文件

Keil文件夹:指向RVDS

MemMang文件夹:内存管理文件,包括各种内存配置模式。详细参考:FreeRTOS 堆内存管理 - FreeRTOS™

第四步 在Keil中添加两个Group,分别存储核心文件和portable文件,并添加需要的配置文件。

这里两个组名可以自定义,我选择模仿其他网友命名:FreeRTOS_COR和FreeRTOS_PORTABLE

添加核心文件

添加portable文件(根据处理器不同选择)

这一步我出现问题了,这里先讲常见处理器的标准操作:将内存管理文件丢进去,再将特定处理器架构的port.c文件丢进去。

但是这里我发现没有我想要的处理器。我的项目是基于Cortex-M23来做的,RVDS文件夹中根本没有我要的处理器配置文件。于是我去搜索官网,发现是有这个案例的,说明肯定能实现,只是目前没找到方法。我随便拿了个m3的port去试试,发现一堆报错27个,有提示__root没定义的,有提示缺失字符的(明明存在)。

开始我以为是

于是我返回到最开始选择portable文件夹的那一步,其实我使用的编译器是GCC,于是我把GCC文件夹也加进来了。并且在里面找到了我要的M23内核port.c文件。

M23是有安全区和非安全区的区别。一般不是用于加密的产品可以直接使用非安全的配置。

加入GCC文件夹,并且删掉了GCC内除了M23以外的文件夹

然后把GCC内m23文件夹的非安全区的port.c加入到工程,还有内存管理中heap_4.c加入进来。这个heap_x.c文件根据自己的需要选择。

这里就发现自己的报错从27个降低为1个了。

这个报错显示'secure_context.h' file not found,找一下这个文件,发现在安全区配置文件夹内

但是我使用的是非安全区配置,检查一下缺失这个头文件的报错地方

这里的configENABLE_TRUSTZONE是FreeRTOSConfig.h文件中的定义

可以看到FreeRTOSConfig.h中的使能TRUSTZONE开了,我不使用安全区,应该设为0

编译,发现提示的错误不同了。

这是滴答定时器重定义的问题,因为我是在原有工程的基础上移植FreeRTOS,所以原先程序的滴答定时器和RTOS系统中的滴答定时器冲突了。

这个网上大把解决方案。先写到这

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Windows PE》6.4.2 远程注入DLL

实验四十七:远程注入DLL 写一个窗口程序,将一个dll通过远程注入的方法,注入到第三章的示例程序PEHeader.exe中,支持32位和64位PE。 ●dll.c /*------------------------------------------------------------------------FileNam…

记一次js泄露pass获取核心业务

文章目录 一、漏洞原因二、漏洞成果三、漏洞利用过程1.js泄露口令信息2、进入系统后台,管理数据库权限(22个)3、执行命令获取服务器权限4、通过添加扫描脚本,获取存活的内网信息四、免责声明一、漏洞原因 系统存在js泄露口令信息,获取系统超级管理员权限。系统为核心数据研…

ZYNQ AXI_GPIO_INT

REVIEW 软核AXI_GPIO之前已经简单学习过: AXI_GPIO_axi-gpio-CSDN博客 PS侧中断也简单调试过: ZYNQ PS_GPIO中断-CSDN博客 1. 今日摸鱼任务 简单实现AXI_GPIO中断: ps_key控制pl_led闪烁(MIO中断) pl_key控制ps_led闪烁(AXI_GPIO中断) …

js(深浅拷贝,节流防抖,this指向,改变this指向的方法)

一、深浅拷贝 1.基本数据类型和引用数据类型的区别: 1. 基本数据类型的变量存储的是值 引用数据类型的变量存储的是地址值 2. 基本数据类型的变量存储的值在栈内存 引用数据类型的变量存储的值在堆内存 3. 基本数据类型的变量存储的是值和值之间相互不影响 引用数据…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示,例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为: 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

【多线程和高并发】多线程和高并发提纲

文章目录 多线程(多线程问题的)三大源头两个主要问题两大解决方案 高并发问题解决方案 对多线程和高并发相关问题整理了一个简单的提纲。 通过这个提纲,足够引出对并发编程中大部分问题的讨论~ 多线程 (多线程问题的)三大源头 线程并发执行带来的原子性问题。这是…

去梯之言:招聘行业运作的秘密——之找到一份工作

一、前言 招聘行业是一个水很深的行当。不过,尽管它很复杂,了解该行业的工作方式还是很重要的,这样你就可以在这片波涛汹涌的水域中平安航行,获得自己心仪的软件开发职位。反过来,如果你对这个波谲云诡的行业一无所知&…

接口测试(四)jmeter——文件上传

一、文件上传(注:示例仅供参考模仿) 1. 添加【HTTP信息头管理器】,配置【HTTP信息头管理器】如下: 2. 添加【HTTP请求默认值】,配置【HTTP请求默认值】如下: 3. 添加【HTTP请求】&#xff0…

window7虚拟机VMware与主机共享文件

文件管理器》计算机网络右键》属性》高级共享设置——全部启用 新建文件夹》右键》属性》共享》选择可以共享的用户——我这里选的是所有用户 点击高级共享》权限》保存设置——设置文件权限 文件管理器》计算机网络》右键》属性》————查看虚拟机计算机名称 主机访问 主机…

GIS常见前端开发框架

#1024程序员节|征文# 伴随GIS的发展,陆续出现了众多开源地图框架,这些地图框架与众多行业应用融合,极大地拓展了GIS的生命力,这里介绍几个常见的GIS前端开发框架,排名不分先后。 1.Leaflet https://leafl…

android 微信分享报:签名不对,请检查签名是否与开发平台签名一致的解决

1、微信分享会检查签名与开发平台的签名是否一致: 基本信息 | 微信开放文档 官方文档 下载签名工具,并且,将包名输入,然后点击生成,得到这个一串字符串。 2、到开发平台中:微信开放平台 登录,…

Vue2、Element中实现Enter模拟Tab,实现切换下一个框的效果

目录 📃前序 👉开发历程 💻实际代码 📽实现效果图 前序 在几乎所有的浏览器中,都具备通过 Tab 键来切换焦点的功能。然而,有些用户提出了强烈要求,希望能够增加通过 Enter 键…

批量合并PDF 文件的 5 大解决方案

PDF 可以将一个、两个、三个甚至更多的记录封装在一起,以显示完整的信息和用于逻辑和交互式结构化的不同元素。由于 PDF 可以提出多层结构,因此当用户知道如何最大化这种格式时,将所有文件组织到其中非常有效。正如许多经验丰富的用户和 PDF …

selenium案例——爬取哔哩哔哩排行榜

案例需求: 1.使用selenium自动化爬虫爬取哔哩哔哩排行榜中舞蹈类的数据(包括视频标题、up主、播放量和评论量) 2.利用bs4进行数据解析和提取 3.将爬取的数据保存在本地json文件中 4.保存在excel文件中 分析: 1.请求url地址&…

03 springboot-国际化

Spring Boot 提供了很好的国际化支持,可以轻松地实现中英文国际化。 项目创建,及其springboot系列相关知识点详见:springboot系列 springboot系列,最近持续更新中,如需要请关注 如果你觉得我分享的内容或者我的努力对…

2024年软件设计师中级(软考中级)详细笔记【11】知识产权基础知识(分值2~3分)

目录 前言第11章 知识产权基础知识【2-3分】11.1 标准化基础知识11.2 知识产权基础知识11.2.2 计算机软件著作权11.2.3 计算机软件的商业秘密权11.2.4 专利权概述习题 结语 前言 在备考软件设计师中级考试的过程中,我遇到了些许挑战,也收获了宝贵的经验…

基于django的个人相册日记管理系统

你是否还在为毕业设计苦思冥想,不知道怎么选择一个合适又实用的技术项目?今天给大家介绍一款功能全面的Django项目——个人相册日记管理系统,堪称毕业设计的完美选择! 首先,这不是简单的相册或日记本,而是…

苍穹外卖05

redis 1. 启动redis .\redis-server.exe redis.windows.conf 2. 连接redis到客户端(这里我们使用ARDM图形化工具) 新建连接 一旦建立好后就永久直接可用(和mysql一个道理) 连接成功界面

【华为HCIP实战课程十八】OSPF的外部路由类型,网络工程师

一、外部路由类型: 上节讲的外部路由类型,无关乎COST大小,OSPF外部路由类型1优先于外部路由类型2 二、转发地址实验拓扑 我们再SW3/R5/R6三台设备运行RIP,SW3即运行RIP又运行OSPF SW3配置rip [SW3-rip-1]ver 2 [SW3-rip-1]network 10.0.0.0 AR5去掉ospf配置和AR6配置rip…

win10中mysql数据库binlog恢复

win10中mysql数据库binlog恢复 昨天有朋友江湖救急,说测试库里的表不小心删除更新了数据。这里也复习下binlog数据恢复,当然需要一定的条件:首先mysql开启binlog,然后每天需要备份对应的数据库 1 单库单表准备 在恢复数据前&am…