初出茅庐的小李博客之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学习&…

含掩膜mask的单通道灰度图转化为COCO数据集格式标签的json文件(python)

输入:单通道的灰度图,灰度图内含掩膜mask 目标:把灰度图中的语义mask转换为COCO数据集格式的json文件 输出:COCO数据集格式的json文件 期间遇到的问题: 发现有的掩膜内部存在其他类别的掩膜,即mask内部还套…

枚举类简单使用

1、创建一个枚举 public enum DemoEnum {// 引号里面存放的是下面所创建的属性,如果不创建属性则不能输入引号里的值的NORMAL("正常"),DESTORY("废弃");private String label;private DemoEnum(String label){this.label label;}public Strin…

使用.net core MVC实现图片上传下载

今天闲来无事&#xff0c;复习复习 1、上传 上传界面 <div class"text-center"><h1 class"display-4">Welcome</h1><form method"post" enctype"multipart/form-data" asp-controller"Home" asp-ac…

<HarmonyOS主题课>三方库【课后考核】

【习题】三方库 判断题 三方组件是开发者在系统能力的基础上进行了一层具体功能的封装&#xff0c;对其能力进行拓展的工具 。 正确(True) 可以通过ohpm uninstall 指令下载指定的三方库 错误(False) lottie使用loadAnimation方法加载动画。 正确(True) 单选题 通过ohpm安…

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

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

stm32 使用18B20 测试温度

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

【素书学习】人生境界的四个层次

冯友兰先生认为人生境界有四个层次&#xff1a; 1、自然境界。总是依照社会习惯或本性而为&#xff0c;完全随天地运转而运转&#xff0c;无明了的目的&#xff0c;不明所做的意义。日出而作&#xff0c;日落而息&#xff0c;不会去过多地思考此外的事情。不知何为苦、何为乐&…

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

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

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

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

LeetCode763. Partition Labels

文章目录 一、题目二、题解 一、题目 You are given a string s. We want to partition the string into as many parts as possible so that each letter appears in at most one part. Note that the partition is done so that after concatenating all the parts in orde…

java 有一个N位数字,各位加起来不超过M。

java 有一个N位数字&#xff0c;各位加起来不超过M。M<1000000 import java.util.*; //1:无需package //2: 类名必须Main, 不可修改public class Main { public static void main(String[] args) {Scanner scan new Scanner (System.in);int n scan.nextInt();int m scan…

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

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

鸿蒙(HarmonyOS)应用开发——从网络获取数据(题目答案)

判断题 1.在http模块中&#xff0c;多个请求可以使用同一个httpRequest对象&#xff0c;httpRequest对象可以复用。 错误(False) 2.使用http模块发起网络请求后&#xff0c;可以使用destroy方法中断网络请求。 正确(True) 3.Web组件onConfirm(callback: (event?: { url: …

单臂路由与三层交换机

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

人工智能原理复习

绪论 人工智能原理复习–绪论 知识表示 人工智能原理复习–知识表示&#xff08;一&#xff09; 人工智能原理复习–知识表示&#xff08;二&#xff09; 确定性推理 人工智能原理复习–确定性推理 不确定性推理 人工智能原理复习–不确定推理 搜索策略 人工智能原理复…

光伏连接器

光伏连接器 电子元器件百科 文章目录 光伏连接器前言一、光伏连接器是什么二、光伏连接器的类别三、光伏连接器的应用实例四、光伏连接器的作用原理总结前言 常用的光伏连接器类型包括MC4、MC3、Amphenol和Tyco等,它们根据连接方式、电气性能和标准规范等因素进行设计和选择…

【原创】【一类问题解决】有正定阵A,让求可逆阵R使得A=RTR(或A=RRT)的策略

【问题背景】有正定阵A&#xff0c;让求可逆阵R使得ARTR&#xff08;或ARRT&#xff09;的策略 【法一】代数法&#xff1a;转二次型配方 【实操】构造A的二次型fxTAx&#xff0c;将f在可逆变换xPy下配方为规范型yTy(即yTEyy1y2y3)〔即相应配方系数阵为P&#xff08;-1&#x…

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

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

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

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