嵌入式中STM32上模拟启动Linux自动初始化

     Linux中有很多编程思想可以学习,很多大佬把这些思想、机制运用到单片机的编程上。

    下文,在STM32上模拟Linux kernel自动初始化流程。

    通常我们写程序都是按照这个套路,一个函数一个函数按照顺序逻辑一个一个的执行下去。

图片

    如果逻辑非常复杂,涉及的模块比较多,那么这种顺序执行的代码就会比较臃肿,各模块耦合非常紧密。Linux kernel 中,有各种外设驱动,想按照一个顺序逻辑执行下去,几乎是不可能的。

    而kenrel 代码能有这么大的代码量,大而不乱,把各层次,各模块有效的分离,而大量的代码又有逻辑的组织在一起,和这个initcall 有至关重要的作用。

    通过模仿这种方式,最后把图片中main函数代码清空,分离这种逻辑,又实现同样的功能。

    如何能实现这样的功能了,需要一些背景知识:

1,程序代码的组织

2,链接脚本相关的知识。

3,函数指针的应用。

图片

    代码的组织,如图片需要知

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio使用——vs解决方案显示所有文件

目录 引出vs解决方案显示所有文件Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 总结 引出 Visual Studio使用——自定义代码片段 & 像使用IDEA一样…

LNG船气体监测系统中甲烷传感器的应用

随着全球能源结构的转型和环保意识的增强,液化天然气(LNG)作为清洁、高效的能源,其运输需求日益增长。LNG船作为专门用于运输液化天然气的特种船舶,其安全性和可靠性直接关系到能源供应的稳定性和环境保护的有效性。在…

windows下安装redis

正常生产我们会在Linux下安装redis,windows下安装redis只做依赖环境的快速搭建、项目的快速验证。 1、下载地址 Releases microsoftarchive/redis GitHub 下载 Redis-x64-3.0.504.zip 2、解压文件夹 解压到本地某个文件夹下,比如 D:\redis-3.0.504 3…

Compose容器编排示例

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录如下: 一、从源代码开始构建、部署和管理应用程序 1.1、创建项目目录并准备应用程序的代码及其依赖 1.2、创建Dockerfile 1.3、在…

GD32驱动LCD12864

目录 1、引言 1.1、LCD12864基本概念和作用。 1.2、硬件引脚 2、GD32微控制器简介 3、LCD12864显示屏简介 3.1、模块引脚说明 3.2、模块连接方式 4、驱动原理 4.1、指令集 4.2、显示坐标关系 5、软件开发 6、硬件连接 7、效果演示 8、附录 1、引言 1.1、LCD12…

C语言 | Leetcode C语言题解之第88题合并两个有序数组

题目: 题解: void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int p1 m - 1, p2 n - 1;int tail m n - 1;int cur;while (p1 > 0 || p2 > 0) {if (p1 -1) {cur nums2[p2--];} else if (p2 -1) {cur nu…

sudo apt-get update失败,怎么解决

本篇文章主要是从我的解决方案出发,因为个体差异性,对大家的帮助可能有限,不过大家也可以作为参考之一。 输入sudo apt-get update,结果一直显示: W: 无法下载 http://mirrors.aliyun.com/ubuntu/dists/jammy-securi…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月14日,星期二

每天一分钟,知晓天下事! 2024年5月14日 星期二 农历四月初七 1、 两部门:2024年全国计划招聘“特岗计划”教师3.7万名。 2、 人社部:2024年“三支一扶”计划拟招募3.44万名高校毕业生。 3、 财政部:5月17日、5月24日…

Nios实验入门——用Verilog编程方式完成LED流水灯显示并使用串口输出“Hello Nios-II”字符到笔记本电脑

文章目录 前言一、Verilog编程方式完成LED流水灯显示1.1 新建工程并添加FPGA芯片1.2 新建.v文件并添加至顶层实体1.3 引脚分配1.4 编译(包含分析与综合)1.5 选择烧录器1.6 添加烧录文件1.7 下载1.8 实验现象 二、Verilog编程方式实现串口2.1 uart_tx.v文件2.2 test.v文件2.3 to…

Linux x86_64 dump_stack()函数基于FP栈回溯

文章目录 前言一、dump_stack函数使用二、dump_stack函数源码解析2.1 show_stack2.2 show_stack_log_lvl2.3 show_trace_log_lvl2.4 dump_trace2.5 print_context_stack 参考资料 前言 Linux x86_64 centos7 Linux:3.10.0 一、dump_stack函数使用 dump_stack函数…

LeetCode 力扣题目:买卖股票的最佳时机 III

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

Autosar架构

蓝框那种叫component,绿框的叫function cluster。 接口 有三种接口,RTE跟SWC之间链接的叫Autosar Interface,RTE跟BSW的Components链接是Standardized Interface,RTE跟BSW的services链接的是Standardized Autosar Interface。 St…

C语言 8 函数递归

目录 1. 递归是什么? 2.递归的限制条件 3. 递归举例1 4. 递归举例2 5.迭代 6. 递归举例3 拓展学习: 1. 递归是什么? 递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢? 递归其实是⼀种解决问题的⽅法&#xff0c…

【Spring】Springmvc学习Ⅲ

# Springmvc学习Ⅲ 文章目录 一、图书管理系统1. 功能1.1 登录前端接口前端代码后端接口后端代码 1.2 图书列表展示步骤:图书类代码mock数据代码控制层调用代码服务层代码(存储除数据库中需要存储的数据) 2. 分层控制2.1 三层架构2.2 代码重…

Softing dataFEED OPC Suite通过OPC UA标准加速数字化转型

数字化转型的关键在于成功将信息技术(IT)与运营技术(OT)相融合,例如将商业应用程序和服务器与可编程逻辑控制器(PLC)和设备传感器相融合,为此,各种设备和系统必须能够相互…

【Day1:JAVA导学】

目录 1、path环境变量2、Java背景介绍2.1 Java SE:2.2 Java ME:2.3 Java EE: 3、Java的跨平台性3.1 Java跨平台的原理: 4、Java开发程序的三个步骤5、JDK的组成和配置5.1 JDK的组成: 6、IDEA项目结构介绍7、Java关键字…

01 | 为什么需要消息队列?

哪些问题适合使用消息队列来解决? 1. 异步处理 2. 流量控制 使用消息队列隔离网关和后端服务,以达到流量控制和保护后端服务的目的。 3. 服务解耦 无论增加、减少下游系统或是下游系统需求如何变化,订单服务都无需做任何更改&#xff0c…

秋招算法——AcWing101——拦截导弹

文章目录 题目描述思路分析实现源码分析总结 题目描述 思路分析 目前是有一个笨办法,就是创建链表记录每一个最长下降子序列所对应的节点的链接,然后逐个记录所有结点的访问情况,直接所有节点都被访问过。这个方法不是很好,因为需…

工作玩手机监测识别摄像机

工作场所的员工玩手机已经成为了一种常见的现象,特别是在办公室、生产车间等地方。而这种现象不仅仅影响了员工的工作效率,还可能会对工作安全造成一定的隐患。为了监测和识别员工玩手机的情况,工作玩手机监测识别摄像机应运而生。工作玩手机…

不知摄像机网段IP地址?别担心,这里有解决之道

在数字化、智能化的今天,摄像机作为安全监控和日常记录的重要工具,其应用越来越广泛。然而,在实际使用中,我们可能会遇到一些问题,比如忘记了摄像机的网段IP地址,这往往会让我们感到头疼。那么,…