初出茅庐的小李博客之TobudOS移植到EVB_AIoT开发板

本博客参考教程:

https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md

介绍一下EVB_AIoT开发板

在这里插入图片描述
这个开发板是由TobudOS开源社区联合意法半导体、南京厚德物联网设计的一款高性能IoT开发平台,主控芯片是STM32H750XBH6。

开发板特性

内置 TobudOS 开源物联网操作系统

意法半导体高性能处理器,最高主频 480M

1M RAM; 256Mbits SDRAM; 128K 片上Flash;64MB qspi flash 128MB spi flash

板载 Type-C 接口 Stlink V2 仿真器

板载 PCIE 接口,可扩展 4G 类物联网模组

板载物联网俱乐部 WAN Interface 接口,可支持 NB-IoT、WiFi、4G cat1、LoRa 等模组

板载物联网俱乐部 E53 Interface 接口,可扩展全系 E53 传感器

板载标准 24P DVP 摄像头接口,可支持最高 500 万像素摄像头;

板载 RGB 显示接口,可转换 HDMI 输出;

板载高性能音频解码芯片,可做语音识别测试;

预留 SD 卡、用户按键、SPI Flash

调试 ARM Cortex M 核还需要仿真器,EVB_AIoT_STM32自带 Stlink V2 仿真器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如 J-Link、U-Link 之类的。

编译环境的准备

用在Keil上的支持包
下载地址:https://www.keil.arm.com/packs/stm32h7xx_dfp-keil/boards/

在这里插入图片描述

准备移植的裸机工程

使用 ST 官方的 STM32CubeMX 软件来自动化生成 MDK 裸机工程

在这里插入图片描述

配置一个LED灯跟一个打印的串口

在这里插入图片描述

在这里插入图片描述

裸机代码:

 /* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);HAL_Delay(1000);}

这样 EVB_AIoT_ATM32开发板的裸机工程生成完成,该工程可直接编译并烧写在板子上运行。

移植 TobudOS 的源码

在这里插入图片描述
tos_cpu.c 是 TobudOS 的 CPU 适配文件,包括堆栈初始化,中断适配等,如果您的芯片是 ARM Cortex M 核,该文件可以不做改动,M0、M3、M4、M7 是通用的,其他 IP 核需要重新适配;
port_s.S 文件是 TobudOS 的任务调度汇编代码,主要做弹栈压栈等处理的,port_c.c 适配 systick 等,这两个文件 每个 IP 核和编译器都是不一样的,如果您的芯片是 ARM Cortex M 核,我们都已经适配好,比如现在我们移植的芯片是 STM32H750,是 ARM Cortex M7核,使用的编译器是 KEIL,所以我们选择 arch\arm\arm-v7m\cortex-m7\armcc 下的适配代码,如果你的开发板是 STM32F429IG,M4 核,编译器是 GCC,则可以选择 arch\arm\arm-v7m\cortex-m4\gcc 目录下的适配文件。

最终的目的是把需要的C文件添加进去,把需要的依赖头文件路径包含

源文件

在这里插入图片描述

头文件包含

在这里插入图片描述

如果编译出错 修改config文件 或者就用之前自带的不修改

在这里插入图片描述

串口重定向要勾选微库

在这里插入图片描述

编写两个测试任务


#define TASK1_STK_SIZE       1024
k_task_t task1;
uint8_t task1_stk[TASK1_STK_SIZE];#define TASK2_STK_SIZE       1024
k_task_t task2;
uint8_t task2_stk[TASK2_STK_SIZE];void task1_entry(void *arg)
{while(1) {printf("TASK1 测试...\r\n");tos_task_delay(2000);}
}void task2_entry(void *arg)
{while(1) {printf("TASK2 初出茅庐的小李...\r\n");HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);tos_task_delay(1000);}
}

编译测试

在这里插入图片描述

有个BUG

串口5使用的PB5 PB13 不是PB6

默认生成的是PB6…

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

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

相关文章

SystemVerilog学习(0)——目录与传送门

一、验证导论 SystemVerilog学习(1)——验证导论-CSDN博客文章浏览阅读403次。SystemVerilog自学,验证系统概述,什么是SVhttps://blog.csdn.net/apple_53311083/article/details/133953016 二、数据类型 SystemVerilog学习&…

@FunctionalInterface、Lambda表达式和方法引用

知识不回顾是会被遗忘的! 网上看了一些相关文章,这里记录一下,仅供参考 Java语言从JDK1.8开始引入了函数式编程。 函数式编程的核心特点是,函数作为一段功能代码,可以像变量一样进行引用和传递,以便在有需…

stm32 使用18B20 测试温度

用18b20 测试温度是非常常用的,不过18B20的调试不是这么容易的,有些内容网上很多的,不再重复说了,我先把波形说一下,再说程序部分: 整个都温度数据的顺序是: 1.700uS的低电平复位并测试18B20的…

mfc110u.dll丢失的解决方法,mfc110u.dll丢失原因是什么?

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“mfc110u.dll文件丢失”。那么,mfc110u.dll是什么?为什么会出现丢失的情况呢?本文将为您详细介绍mfc110u.dll文件的含义、丢失原因以及解决方法。 首先&…

MyBatis进阶之结果集映射注解版

文章目录 注解实现结果集映射注解实现关系映射常用功能注解汇总 注解实现结果集映射 注意 配置结果集映射&#xff0c;只用看 SQL 执行结果&#xff0c;不看 SQL 语句&#xff01; 注意 由于注解在映射结果集上没有实现 <resultMap> 的 100% 功能&#xff0c;因此&#x…

【车载开发系列】Visio工具使用小技巧

【车载开发系列】Visio工具使用小技巧 【车载开发系列】Visio工具使用小技巧 【车载开发系列】Visio工具使用小技巧一. Word中编辑Visio技巧二. Word中插入visio图形的问题三. 总结 一. Word中编辑Visio技巧 本节主要介绍了Microsoft Word中编辑Visio图形的具体方法。 在 Word…

单臂路由与三层交换机

单臂路由 划分VLAN后同一VLAN的计算机属于同一个广播域&#xff0c;同一VLAN的计算机之间的通信是不成问题的。然而&#xff0c;处于不同VLAN的计算机即使是在同一交换机上&#xff0c;它们之间的通信也必须使用路由器。 图&#xff08;a&#xff09;是一种实现VLAN间路由的方…

电脑中环境变量的设置方法

环境变量是在操作系统中一个具有特定名字的对象&#xff0c;它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量&#xff0c;当要求系统运行一个程序而没有告诉它程序所在的完整路径时&#xff0c;系统除了在当前目录下面寻找此程序外&a…

从赋码、防窜到私域营销,爱创科技助力西卡德高驶入发展快车道

在家居建材行业&#xff0c;西卡德高是一个绕不开的品牌。在瓷砖胶、美缝剂、防水等领域&#xff0c;西卡德高甚至一度成为这些细分产品的代名词。西卡德高的销售渠道以零售为主&#xff0c;其80%的产品是通过全国3000多个经销商、3000多家专卖店、4000多个装修师傅社群以及近2…

class_2:Java概念 java se ee me jdk jre jvm

一、什么是Java&#xff1f; Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地…

JDK 9 模块化系统 (Module System) 和 多版本兼容 Jar (Multi-Release Jar)

博文目录 文章目录 Module System原因JDK 模块化模块描述文件关键字 启用模块化测试结论 Multi-Release jar (MRJAR)原因原理结论用 IDEA 创建多版本兼容 Jar项目结构pom.xml测试 Module System 原因 Java 9引入了模块化系统的主要原因是为了解决Java平台面临的复杂性和可维…

C++中STL的容器vector

文章目录 什么是vectorvector与普通顺序表不同的点 vector的成员函数operatoroperator[]begin与end与iteratorsize()capacityresizeemptyreservepush_backpop_backinserteraseswapclear成员变量 总结 什么是vector vector&#xff1a;是数据结构里面的顺序表&#xff0c;开辟一…

【LeetCode刷题】数组篇2

&#x1f387;数组中等题Part &#x1f308; 开启LeetCode刷题之旅 &#x1f308; 文章目录 &#x1f387;数组中等题Part&#x1f370;229.多数元素II&#x1f451;思路分析1.哈希表法2.摩尔投票法(进阶) &#x1f370;15.三数之和&#x1f451;思路分析1.排序双指针 &#x…

音乐曲谱软件Guitar Pro 8.1.1 破解版下载和网盘补丁

Guitar Pro 8.1.1 for Mac 中文破解版是一款功能强大的音乐曲谱软件&#xff0c;非常适合学习如何玩&#xff0c;改进技巧&#xff0c;重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作&#xff0c;它包含了几乎所有的吉他现有指法及音色&#xff0c;在做弹拨…

角谷定理 C语言xdoj32

角谷定理定义如下&#xff1a; 对于一个大于1的整数n&#xff0c;如果n是偶数&#xff0c;则n n / 2。如果n是奇数&#xff0c;则n 3 * n 1&#xff0c;反复操作后&#xff0c;n一定为1。 例如输入22的变化过程&#xff1a; 22 ->11 -> 34 -> 17 -> 52 -> 26 …

电源小白入门学习3——电源系统常见元件选型MOS管、二极管、电感篇

电源小白入门学习3——电源系统常见元件选型MOS管、二极管、电感篇 MOS管二极管电感 书接上文&#xff0c;上一期我们讲了电阻、电容选型中需要注意的事项&#xff0c;下面我们接着来介绍MOS管和二极管。 MOS管 关于MOS管的基本原理和内部的一些结构&#xff0c;PN结、半导体的…

FPGA 低延时 TCP UDP IP协议栈兼容1G 10G 25G MAC

在计算和数据中心、军事和航天、政府、仪器与测量、金融服务和广播和视频等行业&#xff0c;需要高可靠性的硬件和软件产品&#xff0c;帮助客户更快地开发部署新一代产品&#xff0c;减少技术和市场风险&#xff0c;我司研发的低延迟TCP/IP的IP核的传输速率高于传统网口&#…

uni-app 设置当前page界面进入直接变为横屏模式

首先 我们打开项目的 manifest.json 在左侧导航栏中找到 源码视图 然后找到 app-plus 配置 在下面加上 "orientation": [//竖屏正方向"portrait-primary",//竖屏反方向"portrait-secondary",//横屏正方向"landscape-primary",//横屏…

99、NeRF ray space

CG相机模型 在图形学中最常用的相机模型的原理和小孔成像是类似的。 不同之处在于&#xff0c;如上图&#xff0c;小孔成像得到的图像是倒立的&#xff0c;但是我们希望得到的图像是正向的&#xff0c;因此&#xff0c;我们选择小孔前成像。 从 3D 到 2D 的投影&#xff0c;…

Grad-CAM原理

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 只要大家一提到深度学习 缺乏一定的解释性 比如说在我们之前讲的分类网络当中 网络它为什么要这么预测 它针对每个类别所关注的点在哪里呢 在great cam这篇论文当中呢 就完美的解决了在cam这篇论…