嵌入式底层系统了解

当裸机功能不复杂的时候,即类似与点亮一个LED灯,驱动LCD和OLED这样的模块,以及各位大学生的搭积木式的毕业设计(狗头保命),此时可以简单地分为硬件和软件层(应用层),以及以中间层作为中间联系。

当需要实现更复杂的功能式,操作系统(OS)就显得非常必要了 。

没有操作系统:

  1. 功能有限:通常只能执行特定的、单一的任务,无法同时运行多个程序。例如,一个简单的单片机系统可能只用于控制一个特定的设备,如电子钟。
  2. 资源利用效率低:对硬件资源的管理较为简单粗糙,可能导致资源浪费或冲突。没有有效的内存管理机制,可能会出现内存泄漏等问题。
  3. 用户交互性差:缺乏友好的用户交互方式,操作相对复杂和困难。可能需要通过复杂的硬件开关或特定的编程指令来控制。
  4. 软件开发困难:没有统一的开发标准和接口,软件开发需要针对特定的硬件进行,难度较大。每次开发新的功能都需要从底层开始考虑硬件特性。
  5. 安全性和稳定性差:难以保障系统的安全性和稳定性,容易受到外部干扰和错误的影响。缺乏对病毒、恶意软件的防护机制。

有操作系统:

  1. 资源管理:能够有效地管理计算机的硬件资源,如内存、CPU 时间、磁盘空间、输入输出设备等,使得多个程序可以同时运行而不会相互干扰,资源分配更加合理和高效。例如,在多任务操作系统中,可以同时运行多个应用程序,如一边播放音乐一边编辑文档。
  2. 用户接口:提供了友好的用户界面,包括图形用户界面(GUI)和命令行界面(CLI),使用户能够方便地与计算机进行交互。像 Windows 和 macOS 这样的操作系统具有直观的图形界面,用户可以通过点击图标和菜单来执行操作。
  3. 软件支持:为各种应用软件提供了统一的运行环境和接口标准,使得软件的开发和安装更加便捷。大多数软件都是针对特定操作系统进行开发和优化的,如 Windows 上的 Office 套件。
  4. 安全性和稳定性:具备一定的安全机制来保护系统和用户数据,同时能够处理错误和异常情况,提高系统的稳定性。操作系统可以进行用户认证、权限管理,并自动处理一些软件崩溃的情况。
  5. 网络支持:集成了网络功能,方便计算机之间的通信和资源共享。可以轻松地连接到网络,进行文件共享、远程访问等操作。

步骤:

在 Linux 系统移植过程中,交叉编译环境是指在一个平台(通常是主机,如 x86 架构的 PC)上生成能够在另一个不同架构的平台(目标平台,如 ARM、MIPS 等)上运行的代码的编译环境。

交叉编译环境主要由以下几个部分组成:

  1. 交叉编译器:这是交叉编译环境的核心组件。它能够将针对一种架构编写的源代码编译为另一种架构的可执行代码。例如,将在 x86 架构上编写的 C 或 C++ 代码编译为 ARM 架构可执行的二进制文件。
  2. 相关的库和头文件:目标平台所需的各种库文件和头文件,以便在编译过程中正确链接和引用。
  3. 工具链:除了编译器,还可能包括链接器、汇编器、调试器等一系列工具,共同构成完整的工具链,支持整个编译、链接和调试过程。

使用交叉编译环境的主要原因是目标平台的资源有限(如计算能力、存储等),或者目标平台可能还不具备完整的开发环境,无法直接在上面进行编译。

例如,如果要将 Linux 系统移植到一个基于 ARM 架构的嵌入式设备上,就需要在 x86 架构的 PC 上建立一个交叉编译环境,将 Linux 内核及相关应用程序编译为适合 ARM 架构运行的代码。

在实际操作中,搭建交叉编译环境可能需要下载和安装特定的工具包,并进行一些配置,以确保编译器和工具链能够正确地针对目标平台进行工作。

bootloader的选择和移植:

  • 初始化硬件:Bootloader 是在操作系统内核运行之前运行的一段小程序,可以初始化硬件设备,为内核的运行准备好软硬件环境。
  • 建立内存空间映射图:Bootloader 可以建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。内存空间映射图是一种描述内存物理地址与逻辑地址之间对应关系的图表或数据结构。通过建立这个映射图,Bootloader 能够清晰地了解系统内存的布局和可用空间情况。 Bootloader 可以根据硬件的特性和需求,对内存进行初始化和配置,例如设置内存的读写权限、缓存策略等,从而为后续操作系统内核的运行提供一个稳定和可靠的内存环境。
  • 加载内核:Bootloader 可以将内核加载到内存 RAM 中去运行,没有 Bootloader,系统无法运行。
  • 支持多种处理器架构:不同的处理器架构需要不同的 Bootloader,选择和移植适合目标平台的 Bootloader 可以确保系统能够正常启动和运行。
  • 提供调试接口:Bootloader 通常提供一些调试接口,方便开发人员进行调试和测试。例如单片机学习中熟悉的串口、JTAG,还有网络接口(TCP/IP)等。

Kernel:

配置(Configuration)
这一步是根据目标硬件平台的特性和需求,对 Linux 内核进行定制化设置。例如,选择支持的硬件设备驱动、文件系统类型、内核模块、网络协议等。配置过程通常通过修改内核的配置文件(如 .config)或使用图形化的配置工具来完成。

编译(Compilation)
在完成配置后,使用相应的交叉编译工具链将内核源代码编译成可在目标平台上运行的二进制文件。编译过程会将选择的内核模块和功能编译到最终的内核映像中。

移植(Porting)
将编译生成的内核映像和相关的模块文件部署到目标硬件平台上。这可能涉及将内核映像烧录到存储设备(如闪存)中,或者通过其他方式加载到目标系统的内存中。

调试(Debugging)
在移植后,对内核在目标平台上的运行情况进行监测和调试,以确保其正常工作。调试可能包括查看内核的启动日志、处理内核崩溃或异常、优化性能、解决设备驱动的兼容性问题等。可以使用调试工具(如 JTAG 调试器、串口输出等)来获取调试信息。

例如,假设要将 Linux 内核移植到一个基于特定型号 ARM 处理器的开发板上。首先,根据开发板的硬件配置,如处理器型号、内存大小、存储设备、网络芯片等,进行内核配置,选择对应的驱动和功能。然后,使用针对 ARM 架构的交叉编译工具链进行编译。接着,将生成的内核映像通过烧写工具烧录到开发板的闪存中。最后,在开发板上电启动后,通过串口查看内核的启动信息,检查是否能正确识别硬件设备,处理可能出现的错误,如驱动加载失败、内存分配异常等,以完成整个调试过程。

根文件系统的制作:

在 Linux 移植中,根文件系统的制作指的是创建一个包含了 Linux 系统启动和运行所需的基本文件和目录结构的文件系统。

根文件系统是 Linux 系统的基础,它包含了系统启动时必需的文件和目录,例如:

  1. 基本的命令和工具,如 bash 外壳程序、lscat 等命令。
  2. 系统配置文件,如 /etc/passwd(用户信息)、/etc/fstab(文件系统挂载配置)等。
  3. 设备文件,例如 /dev 目录下的各种设备节点。
  4. 初始化脚本和服务配置文件,用于系统启动时的初始化和服务管理。
  5. 库文件,为应用程序提供必要的函数库支持。

制作根文件系统通常包括以下步骤:

  1. 选择一个基础的文件系统格式,如 ext4jffs2 等。
  2. 创建必要的目录结构,如 /bin/etc/dev/lib 等。
  3. 移植或安装所需的命令和工具。
  4. 配置系统的初始化脚本,如 init 或 systemd 的相关配置。
  5. 可能需要根据目标硬件和应用需求,添加特定的驱动模块或配置文件。

例如,如果要将 Linux 移植到一个嵌入式设备上,可能会制作一个精简的根文件系统,只包含该设备运行所需的最基本的命令和配置,以节省存储空间和提高系统启动速度。

一种电子产品的不同型号可能就需要不同大小的系统,这也是这一行的需求所在。

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

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

相关文章

必备的 Adobe XD 辅助工具

想要高效便捷的使用 Adobe XD, Adobe XD 插件是必不可少的, Adobe XD 的插件非常多,但 90%都是英文,并且良莠不齐。在这儿挑选 9 个好用的 Adobe XD 插件给大家,这里是我整理的一些实用 Adobe XD 插件,让你…

No module named ‘MySQLdb‘

python 运行代码的时候遇到No module named ‘MySQLdb’报错如何解决? 解决办法 如果没有安装可以先安装以下依赖库 pip install PyMySQL如果已经安装了PyMySQL,仍然报MySQLdb模块找不到,可以尝试安装以下依赖库。 pip install mysqlclient

window下git bash设置启动后默认路径进入自己的工程

方法一:更改快捷方式 方法二:修改~/.bashrc

Vulkan学习——渲染3D模型

摘要:本文简要描述了Vulkan渲染一个3D模型需要做的事情,不会对太细节的内容进行深究。   关键字:Vulkan,Render,3D 源码 1 简介 1.1 Vulkan简介 Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API&#x…

在windows上安装objection

安装命令pip install objection -i https://mirrors.aliyun.com/pypi/simple hook指定进程 objection -g 测试 explore 进程名不定是包名,也可能是app名字,如“测试”就是app的名字 若出现如下错误,说明python 缺少setuptools 直接安装setu…

全面教程:在Ubuntu上快速部署ZeroTier,实现Windows与VSCode的局域网无缝访问

文章目录 1 背景介绍2 Windows上的操作3 Ubuntu上的操作4 连接 1 背景介绍 在现代工作环境中,远程访问公司内网的Ubuntu主机对于开发者来说是一项基本需求。然而,由于内网的限制,传统的远程控制软件如向日葵和todesk往往无法满足这一需求。作…

Java教程之IO模式精讲,NIO+BIO

第一章 BIO、NIO、AIO介绍 背景 在java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或 者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说&#x…

【JavaEE】多线程代码案例(2)

🎏🎏🎏个人主页🎏🎏🎏 🎏🎏🎏JavaEE专栏🎏🎏🎏 🎏🎏🎏上一篇文章:多线程代码案例(1)&a…

用户资料门户的构建

1. 需求背景 老的页面停止维护了,且老旧, 功能单一,且页面分散. 急需做功能集成的平台化建设原先的用户资料查询没有做权限管控, 每一次查询都会消耗我们组的人力资源. 2. 项目介绍 2.1. 项目地址 服务地址: [公司内网服务(略)] 工蜂地址: [公司内网仓库(略)] 2.2 项目的价…

​​服务拆分的原则

目录 一、单一职责原则 二、服务自治原则 三、单向依赖 一、单一职责原则 单⼀职责原则原本是面向对象设计中的⼀个基本原则, 它指的是⼀个类应该专注于单⼀功能. 不要存在多于⼀个导致类变更的原因 在微服务架构中, ⼀个微服务也应该只负责⼀个功能或业务领域, 每个服务应该…

2024亚太赛(中文赛)数学建模竞赛选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;B<C<A&#xff0c;开放度&#xff1a;C<A<B。 综合评价来看 A题适合有较强计算几何和优化能力的团队&#xff0c;难度较高&#xff0c;但适用面较窄。 B题数据处理和分析为主&#xff0c;适合数据科学背景的团队…

【秋招突围】2024届秋招笔试-科大讯飞笔试题-04-三语言题解(Java/Cpp/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边…

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

Linux学习第54天:Linux WIFI 驱动:蓝星互联

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 数字化、现代化的今天&#xff0c;随处的WIFI给与了大众极大的方便&#xff0c;也感受到了科技的力量。万物互联、无线互联越来越成为一个不可逆转的趋势。现在比较火…

Android EditText的属性与用法

EditText 是编辑框控件&#xff0c;可以接收用户输入&#xff0c;并在程序中对用户输入进行处理。EditText在App里随处可见&#xff0c;在进行搜索、聊天、拨号等需要输入信息的场合&#xff0c;都可以使用 EditText。 图1 编辑框示意图 EditText 是TextView的子类&#xff0c…

华为云盘古大模型5.0将如何促进工业领域的发展?

6月21日&#xff0c;在华为开发者大会2024&#xff08;HDC2024&#xff09;主题演讲环节中&#xff0c;华为常务董事、华为云CEO张平安重磅发布盘古大模型5.0&#xff0c;这一重要技术成果标志着人工智能在工业领域的应用迈出了新的步伐。当前&#xff0c;工业领域正面临着数字…

【ESP32】打造全网最强esp-idf基础教程——15.WiFi连接STA模式

WiFi连接STA模式 一、ESP32的WiFi功能介绍 前面章节内容&#xff0c;基本上都是描述了ESP32强大的MCU能力&#xff0c;这些MCU能力使得ESP32可以替换许多类型的单片机工作&#xff0c;而自己承担这部分功能&#xff1b;当然ESP32的IOT能力才是它的主业&#xff0c;从硬件配置来…

关于软件本地化,您应该了解什么?

软件本地化是调整软件应用程序以满足目标市场的语言、文化和技术要求的过程。它不仅仅涉及翻译用户界面&#xff1b;它包含一系列活动&#xff0c;以确保软件在目标语言环境中可用且相关。以下是您应该了解的有关软件本地化的一些关键方面&#xff1a; 了解范围 软件本地化是…

阳光倒灌试验太阳辐射系统日光模拟器

太阳光模拟器概述 太阳光模拟器是一种能在实验室环境下模拟太阳光照射特性的设备&#xff0c;广泛应用于材料科学、能源研究、环境科学等领域。通过模拟太阳光的光谱分布和辐射强度&#xff0c;太阳光模拟器可以为科研和工业提供稳定且可重复的光照条件&#xff0c;进而对材料…

人工智能|深度学习——多模态条件机制 Cross Attention 原理及实现

一、引入 虽然之前写过 Attention 的文章&#xff0c;但现在回头看之前写的一些文章&#xff0c;感觉都好啰嗦&#xff0c;正好下一篇要写的 Stable Diffusion 中有 cross-attention&#xff0c;索性就再单拎出来简单说一下 Attention 吧&#xff0c;那么这篇文章的作用有两个&…