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

RT-Thread自动初始化机制

自动初始化机制是指初始化函数不需要被显示调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。

int rt_hw_usart_init(void)
{rt_hw_serial_register(&serial1, "uart1",RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,uart);
}
INIT_BOARD_EXPORT(rt_hw_usart_init); //使用组件自动初始化机制

INIT_BOARD_EXPORT(rt_hw_usart_init)表示使用自动初始化功能,按照这种方式,rt_hw_usart_init()函数就会被系统自动调用。

在这里插入图片描述
在系统启动流程图中,有两个函数rt_components_board_init()与rt_components_init(),其后的带底色方框内部的函数表示被自动初始化的函数,其中:

  1. “board init functions”为所有通过INIT_BOARD_EXPORT(fn)申明的初始化函数。
  2. “pre-initialization functions” 为所有通过 INIT_PREV_EXPORT(fn)申明的初始化函数。
  3. “device init functions” 为所有通过 INIT_DEVICE_EXPORT(fn) 申明的初始化函数。
  4. “components init functions” 为所有通过 INIT_COMPONENT_EXPORT(fn)申明的初始化函数。
  5. “enviroment init functions” 为所有通过 INIT_ENV_EXPORT(fn) 申明的初始化函数。
  6. “application init functions” 为所有通过 INIT_APP_EXPORT(fn)申明的初始化函数。

rt_components_board_init()函数执行的比较早,主要初始化相关硬件环境,执行这个函数时会遍历通过INIT_BOARD_EXPORT(fn)申明的初始化函数表,并调用各个函数。

rt_conponents_init()函数会在操作系统运行起来之后创建的main线程里被调用执行,这个时候硬件环境和操作系统已经初始化完成,可以执行应用相关代码。rt_components_init() 函数会遍历通过剩下的其他几个宏申明的初始化函数表。

RTT的自动初始化机制使用了自定义RTI符号段,将需要在启动时进行初始化的函数指针放到了该断中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。

在这里插入图片描述

初始化函数主动通过这些宏接口进行申明,如INIT_BOARD_EXPORT(rt_hw_usart_init),链接器会自动收集所有被申明的初始化函数,放到RTI符号段,该符号段位于内存分布的RO段中,该 RTI 符号段中的所有函数在系统初始化时会被自动调用。

相关文章:

RT-Thread自动初始化机制

自动初始化机制是指初始化函数不需要被显示调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。 int rt_hw_usart_init(void) {rt_hw_serial_register(&serial1, "uart1",RT_DEVICE_FLAG_RDWR | RT_DEVICE_FL…...

在本地搭建Jellyfin影音服务器,支持公网远程访问影音库的方法分享

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…...

强盛集团面试题实战(持续更新)

目录 第一章、面试题1.1)王:8月301.2)1.3) 第二章、2.1)2.2)2.3) 第三章、3.1)3.2)3.3) 第四章、4.1)4.2)4.3) 友情提醒:先…...

golang 协程的实现原理

核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…...

go gin 参数绑定常用验证器

https://pkg.go.dev/github.com/go-playground/validator/v10#readme-baked-in-validations min 最小max 最大len 长度限制gt 大于eq 等于ne 不等于eqfield 与某个字段值一样nefield 与某个字段值不一样oneof 枚举 ,以空格分开startswithendswithdive 数组 package mainimpor…...

多用户商城系统常见的安全性和数据保护措施有哪些?

电子商务的迅速发展,越来越多的企业选择搭建多用户商城系统来扩展业务。然而,随之而来的是对数据安全和保护的日益关注。在选择多用户商城系统时,我们需要考虑一系列的安全性和数据保护措施,以确保商城系统的稳定性和用户数据的完…...

如何在WSL上导入任何Linux发行版

文章目录 一、准备1. 开启WSL相关功能2. 升级WSL3. 设置默认的wsl版本 二、通过 Microsoft Store 安装 Linux1. 查看 Microsoft Store 有哪些可安装的 Linux 发行版2. 安装 Linux 发行版3. 查看已安装的 Linux 发行版4. 启动Linux发行版 三、通过Linux发行商提供的tar文件安装1…...

汽车自适应巡航系统车距控制策略研究

1 引言 自适应巡航控制( Adaptive Cruise Control,ACC) 是汽车驾驶辅助系统的重要组成部分,其作用是根据车距传感器探测到本车( ACC 车辆) 与主目标车辆( 前车) 之间的相对位置和相对速度信息,自动调节ACC 车辆的节气门开度或部分制动力矩( 即…...

鸿蒙系列-如何更好地使用 ArkUI 的 Image 组件?

如何使用好 ArkUI 的 Image 组件? 开发者经常需要在应用中显示一些图片,例如:按钮中的logo、网络图片、本地图片等。在应用中显示图片需要使用 Image 组件实现,Image支持多种图片格式,包括png、jpg、bmp、svg和gif&am…...

机器学习简介[01/2]:简单线性回归

Python 中的机器学习简介:简单线性回归 一、说明 简单线性回归为机器学习提供了优雅的介绍。它可用于标识自变量和因变量之间的关系。使用梯度下降,可以训练基本模型以拟合一组点以供未来预测。 二、技术背景 这是涵盖回归、梯度下降、分类和机器学习的其…...

Kubernetes技术--k8s核心技术yaml资源编排

(1).引入 我们可以使用kubectl实现单行指令的操作,但是这样做的坏处是不复用,所以为了更好的实现对一系列资源的编排工作。kuberntes中使用一种叫做资源清单文件(yaml)来实现对资源管理和资源对象编排部署。 (2).概述 yaml是一种标记语言。为了强调这种语言以数据做为中心,而…...

clickhouse-配置解释

详细内容看官网文档 一、全局服务配置 1.配置详解 名称含义默认值allow_use_jemalloc_memory允许使用 jemalloc 内存1(布尔)asynchronous_heavy_metrics_update_period_s更新异步指标的时间段(以秒为单位)120asynchronous_metr…...

基于亚马逊云科技无服务器服务快速搭建电商平台——性能篇

使用 Serverless 构建独立站的优势 在传统架构模式下,如果需要进行电商大促需要提前预置计算资源以支撑高并发访问,会造成计算资源浪费并且增加运维工作量。本文介绍一种新的部署方式,将 WordPress 和 WooCommerce 部署在 Amazon Lambda 中。…...

LINQ详解(查询表达式)

什么是LINQ? LINQ(语言集成查询)是将查询功能直接集成到C#中。数据查询表示简单的字符串,在编译时不会进行类型检查和IntelliSense(代码补全辅助工具)支持。 在开发中,通常需要对不同类型的数据源了解不同的查询语句,如SQL数据库…...

【DEVOPS】现状篇

0. 目录 1. 前言2. 现状2.1 需求管理2.2 开发流程2.3 测试流程2.4 部署流程2.5 维护阶段 3. 后记4. 相关 1. 前言 一直以来,深感内部工程化能力欠缺,急于将事情向前推进,总是希望能够向前走几步,再走几步。 可惜的是&#xff0c…...

Linux文件管理知识:查找文件(第二篇)

Linux文件管理知识:查找文件(第二篇) 上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。 Find命令所属操作列表中的条目,有助于我们想要…...

医疗小程序:让服务更高效,用户体验更优化

随着移动互联网的快速发展,小程序已经成为了一个热门的开发方向。医疗健康类小程序也不例外,拥有广泛的市场需求和前景。本文将为你提供一份完整的医疗健康类小程序开发攻略,帮助你快速开发上线一个专业成熟的小程序商城。 一、选择合适的小程…...

C++11 std::transform函数使用说明

std::transform是C标准库中的一个算法,它用于对输入范围内的元素进行操作,并将结果存储在输出范围内。这个算法特别适合于将一种数据类型转换为另一种数据类型。 函数定义在头文件algorithm中 std::transform的基本语法如下: std::transfor…...

JavaScript-DOM查询

获取元素节点 获取元素节点的子节点 元素节点的属性 节点的修改 JavaScript中的DOM(文档对象模型)是一种编程接口,它允许JavaScript与HTML文档交互。创建DOM查询,可以使用多种方法. 获取元素节点 1. getElementById() – 通…...

大数据-玩转数据-Flink 水印

一、Flink 中的水印 在Flink的流式操作中, 会涉及不同的时间概念: 1.1 处理时间 是指的执行操作的各个设备的时间,对于运行在处理时间上的流程序, 所有的基于时间的操作(比如时间窗口)都是使用的设备时钟。比如, 一个长度为1个小时的窗口将会包含设备…...

Qwen3-ASR-0.6B效果展示:金融客服录音(专业术语+缩略语)识别术语表匹配

Qwen3-ASR-0.6B效果展示:金融客服录音(专业术语缩略语)识别术语表匹配 金融客服电话录音里,客户和坐席的对话常常像在说“天书”。一会儿是“LPR”,一会儿是“T0”,还有各种产品代码和内部术语。把这些录音…...

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略 1. 项目概述与核心价值 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的多模态对话终端,将强大的文本理解能力与视觉感知功能完美结合。与传统对话系统相比&…...

CMake + VTK 编译

CMake VTK 编译 1下载 1 CMake下载 https://cmake.org/download/#older2 VTK 下载 https://gitlab.kitware.com/vtk/vtk/-/tags2 安装和解压缩 3 配置CMake 这一部分忘了截图 ,可以查看这里的步骤,基本一致 https://blog.csdn.net/weixin_42964413/arti…...

CMake实战:用ExternalProject_Add一键集成第三方库(附spdlog完整配置)

CMake实战:用ExternalProject_Add一键集成第三方库(附spdlog完整配置) 在C项目开发中,第三方库的集成往往是最耗时的环节之一。传统的手动下载、编译、配置头文件路径和链接库文件的方式,不仅效率低下,还会…...

【实战指南】腾讯会议回放视频如何批量下载与本地永久保存?免费工具全解析

1. 为什么需要本地保存腾讯会议回放? 每次参加完重要会议或培训课程,最怕的就是回放视频突然过期。我遇到过好几次这种情况:刚想复习某个关键知识点,发现视频已经显示"已过期"。特别是当会议组织者设置了7天自动删除规则…...

告别Transformer的O(n²)烦恼:手把手带你用Mamba-2.0搭建一个长文本摘要模型

突破长文本处理瓶颈:基于Mamba-2.0的高效摘要系统实战指南 在当今信息爆炸的时代,我们每天都被海量文本内容包围——从学术论文、技术文档到商业报告,这些长文本的有效处理已成为知识工作者面临的核心挑战。传统基于Transformer的摘要系统虽然…...

数据库工具集成与自动化:awesome-db-tools 中的工作流优化终极指南

数据库工具集成与自动化:awesome-db-tools 中的工作流优化终极指南 【免费下载链接】awesome-db-tools Everything that makes working with databases easier 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-db-tools awesome-db-tools 是一个社区驱…...

ssm+java2026年毕设数据分析教学网站【源码+论文】

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于会议管理问题的研究,现有研究主要以传统OA办公系统或通用协同办公平台为主,专门针对会议全生命周期…...

别只盯着Web日志!一次Windows服务器被黑,我是这样用系统日志和FTP记录挖出攻击链的

从Windows系统日志到FTP记录:一次完整的服务器入侵溯源实战 深夜的应急响应中心,刺眼的告警提示打破了宁静。大多数安全工程师的第一反应是打开Web访问日志开始排查——这几乎成了行业条件反射。但真实攻击往往发生在你最意想不到的角落。上周处理的一起…...

GESP三级语法知识(六、string 入门与基础操作)

🌟 第一课:《string 入门与基础操作》🏰 第一章:string 是什么?(升级版小火车)1、🎯 故事以前我们用的是:👉 char数组 小火车 🚂(要自…...