(学习日记)2024.04.19:UCOSIII第四十七节:各文件夹功能介绍

news2024/11/15 23:25:57

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。

回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。
这几章想达成目的如下:

  • 能够快速的上手
  • 能够控制系统的功能
  • 明白移植的过程
  • 能够根据需要的功能来裁剪源码

从第六十一章开始的章节都是熟读源码后,根据笔者的整理方法,按照某种逻辑从系统源码中抽出来的专项解释。
笔者整理方法如下

  1. 各文件夹功能介绍(每个文件夹放什么文件,哪些是移植的,哪些不需要改,哪些需要修改)
  2. 各文件功能概览(每个文件都明白有哪些东西,是系统的哪一部分)
  3. 各文件函数概览(每个文件的有什么函数,函数的作用是什么,形参是什么)
  4. 移植的本质与移植的顺序(哪些文件需要了解,哪些文件是移植的时候需要更换的)
  5. 添加与裁剪源码(添功能与删功能怎么上手)
  6. 常用的结构体列表
  7. 常用宏介绍(如何用宏来控制整个系统,启用或关闭某个功能)
  8. main函数常用的结构顺序
  9. 创建任务的流程
  10. 任务在几种队列的变化

每个整理方法会用一章或多章的篇幅来解释。

点击此处进入μC/OS-iii章节总目录

2024.04.19:UCOSIII第四十七节:各文件夹功能介绍

  • 六十一、UCOSIII:各文件夹功能介绍
    • 1、文件夹介绍
    • 2、文件夹示意
      • Doc
      • Libraries
        • CMSIS
          • startup
        • FWlib
          • inc
          • src
      • Project
      • User
        • APP
        • BSP
        • uC-CPU
        • uC-LIB
        • uCOS-III
          • Ports
          • Source

六十一、UCOSIII:各文件夹功能介绍

1、文件夹介绍

文件夹名称子文件夹名称孙文件夹名称文件夹解释文件夹类型
Doc--用于存放对整个工程的说明文件,如readme.txt。
通常情况下,我们都要对整个工程实现的功能、如何编译、如何使用等做一个简要的说明
需自己编写
LibrariesCMSIS-CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司提供的一套软件接口标准,旨在提高基于ARM Cortex-M处理器的微控制器软件的可移植性和可重用性。

CMSIS定义了一系列通用的API,涵盖了Cortex-M处理器的核心功能,包括处理器控制、中断处理、时钟管理、内存访问和外设驱动等。

CMSIS的目标是使开发者能够更容易地编写跨平台、可移植的嵌入式软件。
移植
LibrariesCMSISstartupCMSIS中的startup文件夹通常包含针对特定处理器的启动代码(startup code)。
启动代码是在嵌入式系统上电或复位时首先执行的代码,它负责初始化处理器、配置系统时钟、设置堆栈和调用主函数等操作,为应用程序的正常运行做准备。

具体来说,startup文件夹中的启动代码通常包括以下内容:

向量表(Vector Table)的定义:处理器启动时,需要知道如何处理各种异常和中断。向量表就是一个包含处理器中断向量地址的数组,启动代码会将这些中断处理函数的地址放在向量表中。

处理器初始化:启动代码会对处理器进行基本的初始化,包括设置堆栈指针、初始化处理器的寄存器、配置时钟和系统时钟源等。

C运行时环境的设置:启动代码会对C语言的运行时环境进行设置,包括初始化全局变量、清零未初始化的变量(BSS段)、调用C库的初始化函数等。

调用主函数:最后,启动代码会调用主函数(例如main()函数),使得程序开始执行应用程序的逻辑。

总的来说,startup文件夹中的启动代码是嵌入式系统启动的关键部分,它确保系统能够正确地初始化并执行应用程序。
移植
LibrariesFWlib-FWlib指的是Firmware Library,即固件库,是一种用于嵌入式系统开发的软件库。

FWlib通常由芯片厂商或者第三方提供,旨在简化嵌入式软件开发过程,提供了一系列针对特定硬件平台的函数和驱动程序,包括处理器的初始化、外设的配置和控制、各种通信接口的操作等。

FWlib能够帮助开发者快速编写嵌入式软件,降低开发难度和提高开发效率。
移植
Project--用于存放新建的工程文件KEIL自动生成
User--
UserAPP-用于存放用户程序,如app.c,main()函数就放在app.c文件中
用户可以通过操控这个文件夹的文件来控制整个系统
需自己编写
UserBSP-BSP是板级支持包,(board support package)是介于主板硬件和操作系统之间的一层,是属于操作系统的一部分。
主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。
编写

修改
移植
UseruC-CPU-这些文件的作用在于提供对底层硬件的支持和抽象,使得 UC/OS-III 内核能够在不同的处理器平台上运行,并且能够与特定的硬件架构进行交互。移植
UseruC-LIB-这些文件通常是 Micrium OS (UC/OS-III) 提供的库文件,用于提供一些常用的功能,如ASCII字符处理、数学计算、内存操作和字符串处理等。

这些文件的功能是为了提供一些常用的工具函数,使得开发者可以更方便地进行字符处理、数学计算、内存操作和字符串处理等操作,而无需自己实现这些功能。这样可以减少重复的工作量,并提高代码的可读性和可维护性。
移植
UseruCOS-III-
UseruCOS-IIIPorts这些文件共同用于 UC/OS-III 内核在特定的 CPU 架构上运行,并提供了对底层硬件的支持和抽象。它们直接影响着操作系统的性能和可移植性,为 UC/OS-III 内核的正确运行提供了必要的底层支持。移植
UseruCOS-IIISource这些文件通常是 Micrium OS (UC/OS-III) 内核的核心文件,提供了操作系统的各种基本功能和特性。移植

根据需要修改

2、文件夹示意

在这里插入图片描述

Doc

其他的记录文件,过程文件,报告文件都可以放在这个文件夹
在这里插入图片描述

Libraries

在这里插入图片描述

CMSIS

在这里插入图片描述

startup

在这里插入图片描述

FWlib

在这里插入图片描述

inc

在这里插入图片描述

src

在这里插入图片描述

Project

在这里插入图片描述

User

在这里插入图片描述

APP

在这里插入图片描述

BSP

在这里插入图片描述

uC-CPU

在这里插入图片描述

uC-LIB

在这里插入图片描述

uCOS-III

在这里插入图片描述

Ports

在这里插入图片描述

Source

在这里插入图片描述

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

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

相关文章

JavaScript操作DOM实现页面元素更改

DOM是什么 DOM(文档对象模型)是一种用于表示和操作HTML、XML文档的标准编程接口。它将文档中的每个元素、属性、文本和事件都表示为对象,从而可以使用JavaScript等脚本语言来操作和修改文档的结构、样式和内容。 DOM 将文档表示为一个树状结…

AI绘画的算法原理:从生成模型到Diffusion

近年来,AI绘画技术引起了广泛关注,让我们深入探讨其背后的技术原理和发展历程。本文将以通俗易懂的方式,介绍AI绘画的核心算法,从生成模型到Diffusion。 1. 计算机如何生成图画? AI绘画的核心在于生成模型&#xff08…

【平台开发】MTK6833 实现lk下CQE接口移植 - cmdq request

1.函数调用图 对应协议上结构为: 2.函数拆解 cmdq_request: 1)配置task_desc和tran_desc参数 2)EN_CQHCI_IRQ 3)write CQTDBR cmdq_prep_task_desc: 设置task_desc参数 cmdq_set_tran_desc: 设置tran_desc参数

Elasticsearch下载

1 最新版下载地址 Download Elasticsearch | Elastic https://www.elastic.co/cn/downloads/elasticsearch 2 其他版本下载地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 7.9.2:https://artifacts.elastic.co/downloads/elasticsearch/elasticsear…

github two-factor authentication是个啥?

最近在逛github时,总是时不时会弹出一下界面,很烦 看到红框里的文字,这明显是强制要求做这个认证,如果不认证4天后账号将不可访问,所以今天花点时间看看怎么做这个认证,点“Enable 2FA now”进入这个界面&a…

LVGL移植

Lvgl介绍 LVGL是一个开源的图形库,专为嵌入式系统设计。它提供了丰富的图形元素和功能,可以帮助开发者快速构建现代化的用户界面。LVGL具有跨平台的特性,支持多种操作系统和硬件平台,包括ARM Cortex-M,ESP32&#xff…

【Protobuf】protobuf详细介绍

protobuf详细介绍 一、前言二、Protobuf简介2.1、核心思想2.2、Protobuf是如何工作的?2.3、如何使用 Protoc 生成代码?2.4 入门命令 一、前言 在以往的项目中进行网络通信和数据交换的应用场景中,最经常使用的技术便是json或xml。随着JSON的…

flac转wav怎么转?4种简单又快速的方法~

FLAC(Free Lossless Audio Codec)是一种无损音频编解码器,它可以将音频压缩成较小的文件大小而不损失任何音频质量。因此,将FLAC文件转换为WAV(Waveform Audio File Format)格式不会损失音频质量&#xff0…

Coursera: An Introduction to American Law 学习笔记 Week 02: Contract Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 02: Contract LawKey Contract Law TermsSupplemental Re…

谷歌个人号秒过审,他都做了什么?“20+14”封测怎么解决?

近日,有开发者分享称自己在使用谷歌个人号提交正式版应用时秒过审。在目前谷歌上架市场如此严峻的形势下,“秒过审”,这是多么小众的词汇! 相信大家都清楚,谷歌的审核系统正变得越来越智能和严格,这无疑加大…

筛选日志并生成序列化文件

1.在idea中创建项目 selectData. 2.添加依赖,插件包,指定打包方式,日志文件 大家可以直接从前面项目复制。 3.本次只需要进行序列化操作,所以不需要Reducer模块,编写Mapper模块 package com.maidu.selectdata;import…

MySQL的数据备份和恢复

📟作者主页:慢热的陕西人 🌴专栏链接:MySQL 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容涉及到mysql数据库的备份和恢复 文章目录 MySQL的数据备…

电力和能源行业如何选择设备管理系统

电力和能源行业的设备维护至关重要。无论是以煤炭、核反应还是水为燃料,发电厂都需要持续的维护以确保安全高效的能源生产。发电厂维护工程师负责执行维护工作,以满足行业标准,同时,迅速解决问题至关重要,因为未解决的…

哪款洗地机最好用?2024年四大口碑一流品牌推荐

随着人们生活质量的提升,人们的扫地、拖地都可以用智能清洁工具来高效完成,像洗地机它集合了扫地、拖地、自清洁等功能,让我们摆脱了每次打扫卫生就像打仗一样,忙活半小时下来腰酸背痛的窘境。所以越来越多的家庭纷纷开始用洗地机…

FreeBSD下安装Linux兼容系统Ubuntu

FreeBSD有个很神奇的功能,就是跟Linux二进制兼容,也就是可以直接运行linux的bin文件。还有个更神奇的功能,就是能运行出一套Linux系统,完全是linux的用户,linux的目录系统,而且还可以选是Centos系统还是Ubu…

pycharm-ieda-phpstorm超级好用插件,一键解释代码

功能:解释你看不懂的代码 当你在写python和Java代码的时候,总有你看不懂的代码,怎么办?csdn搜?那不麻烦,直接插件解决。 来安装:文件-设置 点击插件-Marketplace-搜索通义灵码 安装完成后&…

Cmake Learn

目录 1 常用命令 (1)configure_file (2).cmake文件 (3) install (4)include_directories (5) add_subdirectory (6) find_libr…

GDPU JavaWeb Servlet实现

踏入mvc的Controller层,实现servlet配置。 登录页面 1.参考课堂例子,客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。如果用户名和密码相同则视为登录成功,跳转到loginSuccess.jsp页面,显示“欢迎你”用…

SpringBoot + Vue实现Github第三方登录

前言:毕业设计终于好了,希望能有空多写几篇 1. 获取Github账号的Client ID和Client secrets 首先点击这个链接进入Github的OAuth Apps页面,页面展示如下: 之后我们可以创建一个新的apps: 填写资料: 创建之后就可以获…

从关键新闻和最新技术看AI行业发展(2024.2.12-2.25第十七期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术,同时Rocky会对这些关键信息进行解读,力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky的公众号&…