【嵌入式Linux系统开发】——系统移植概述

 

在这里插入图片描述

目录

🍉🍉一、什么是嵌入式系统

🍉🍉二、嵌入式系统操作

🍉🍉三、嵌入式Linux的特点

🍉🍉四、嵌入式系统的组成

1、硬件和软件

 2、硬件层

3、中间层

4、软件层

5、 功能层与执行装置

🍉🍉五、 Linux内核目录结构


一、什么是嵌入式系统

  •  嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。
  • 嵌入式系统与通用计算机系统的本质区别在于系统应用不同,嵌入式系统是将一个计算机系统嵌入到对象系统中。这个对象可能是庞大的机器,也可能是小巧的手持设备,用户并不关心这个计算机系统的存在。
  • 嵌入式系统一般包含嵌入式微处理器、外围硬件设备、嵌入式操作系统和应用程序4个部分。嵌入式领域已经有丰富的软硬件资源可以选择,涵盖了通信、网络、工业控制、消费电子、汽车电子等各种行业。

二、嵌入式系统操作

嵌入式操作系统的一个重要特性是实时性。所谓实时性,就是在确定的时间范围内响应某个事件的特性。

著名的嵌入式操作系统有:VxWorks、Linux和Windows CE等。

三、嵌入式Linux的特点

1、Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。

2、强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。

3、Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEE POSIX1标准,使应用程序具有较好的可移植性

传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。

4、Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是64位等各种处理器Linux都能运行。这意味着嵌入式Linux将具有更广泛的应用前景

四、嵌入式系统的组成

1、硬件和软件

①硬件嵌入式处理器、存储系统、(由IO连接)外设、时钟、复位、电源。

三大件全部集成:嵌入式微控制器(单片机)

三大件部分集成:嵌入式微处理器、IO集成在一个芯片内部,存储外置

②软件嵌入式操作系统(可裁剪移植的、定制开发)、应用软件(专用性、固化)

嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等几大部分组成。

 2、硬件层

硬件层由嵌入式处理器、存储器系统、通用设备接口和I/O接口(如A/D、D/A、I/O等)组成。在一片嵌入式微处理器基础上增加电源电路、时钟电路和存储器电路(ROM和SDRAM等),就构成了七个嵌入式核心控制模块。其中,操作系统和应用程序都可以固化在ROM中。

3、中间层

中间层也称为硬件抽象层或板极支持包,它把系统软件与底层硬件部分隔离。板极支持包对上具有操作系统相关性,对下具有硬件相关性。设计一个完整的中间层需要完成两部分工作:
① 嵌入式系统的初始化,它包括片级初始化、板级初始化和系统级初始化。
② 设计硬件相关的设备驱动

4、软件层

软件层由多任务操作系统(OS)、文件系统、图形用户接口(GUI)、网络系统及通用组件模块组成。OS是嵌入式应用软件的基础和开发平台;是一段嵌入式目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其他应用程序都建立在OS之上;是一个标准的内核,它将CPU时钟、中断、I/O、定时器等资源都封装起来,留给用户的是一个标准的API函数接口。

5、 功能层与执行装置

功能层由基于OS开发的应用程序组成,用来完成对被控对象的控制功能。功能层是面向被控制对象和用户的,为方便用户操作,往往需要提供一个友好的人机界面。执行装置是指那些可以接受嵌入式计算机系统发出控制命令,执行所规定的操作或任务的设备和装置。在不同应用领域中,嵌入式系统的执行装置一般是不同的,应该根据具体的应用场合和系统所要求实现的功能选择不同的设备和执行装置。

五、 Linux内核目录结构

  • arch :包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、powerpc、mips 等。Linux 内核目前已经支持30 种左右的体系结构。在arch目录下,存放的是各个平台以及各个平台的芯片对Linux 内核进程调度、内存管理、中断等的支持,以及每个具体的SoC 和电路板的板级支持代码。
  • block:块设备驱动程序I/O 调度。
  • crypto:常用加密和散列算法(如AES、SHA 等),还有一些压缩和CRC 校验算法。
  • documentation:内核各部分的通用解释和注释。
  • drivers :设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c 等。
  • fs:所支持的各种文件系统,如EXT、FAT、NTFS、JFFS2 等。
  • include:头文件,与系统相关的头文件放置在include/linux 子目录下。
  • init:内核初始化代码。著名的start_kernel() 就位于init/main.c 文件中。
  • ipc:进程间通信的代码。
  • kernel :内核最核心的部分,包括进程调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel 目录下。
  • lib:库文件代码。
  • mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm 目录下。
  • net:网络相关代码,实现各种常见的网络协议。
  • scripts:用于配置内核的脚本文件。
  • security:主要是一个SELinux 的模块。
  • sound:ALSA、OSS 音频设备的驱动核心代码和常用设备驱动。
  • usr:实现用于打包和压缩的cpio 等。
  • include:内核API 级别头文件。

 

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

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

相关文章

如何用Python统计CSDN质量分

文章目录 CSDN质量分查询selenium爬取博客地址单篇测试批量查询分析 CSDN质量分查询 CSDN对博客有一套分数评价标准,其查询入口在这里:质量分查询,效果大致如下 如果质量分太低,就会在博文的标题下面出现黄底黄字: 这…

Redis简介,设置redis内存大小,设置redis淘汰机制,查看内存占用情况,内存占用分析

为什么使用Redis缓存数据库 我们日常的开发,无非是对数据的处理。程序的定义也可以这样狭义的解释:算法数据。可见数据库是多么重要的工具。但是关系型数据库的读写能力在200-1000次/秒不等,服务器好点可能更多,这导致在高并发的…

排序链表——力扣148

文章目录 题目描述法一 自顶向下归并排序法二)自底向上归并排序 题目描述 题目的进阶问题要求达到 O(nlogn) 的时间复杂度和 O(1) 的空间复杂度,时间复杂度是 O(nlogn) 的排序算法包括归并排序、堆排序和快速排序(快速排序的最差时间复杂度是…

【C#】.Net Framework框架下的Authorize权限类

2023年,第31周,第3篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! 在C#的.NET Framework中,你可以使用Authorize类来处理权限认证。Authorize类位于System.Web.Mvc命名空间中,它提供了…

关于Docker的知识点

Docker是一个快速交付应用、运行应用的技术。 Docker基本操作--容器 示例:创建运行一个Nginx容器

Python不是一门伟大的语言

作为一门简洁易用、生态蓬勃且具有高泛用性的编程语言,Python一直以来都被不少人称作“编程语言中的瑞士军刀”。 尤其随着近来AI热潮席卷全球,Python在编程语言圈中的地位也随之水涨船高,甚至一度被视作AI专用语言或大数据专用语言。 然而…

QT第四讲

思维导图 基于QT的网络聊天室 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器类 #include<QTcpSocket> //客户端类 #include<QMessageBox> //对话框类 #include<QList…

二叉树的层序遍历(两种方法:迭代+递归)

题目&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 解题思路&#xff1a;迭代法…

string类的模拟实现

文章目录 string类的模拟实现string基本框架的实现operator的实现string常用函数的实现 string类的模拟实现 前文对于string的常用函数做了讲解&#xff0c;由于string是一个面试官常考的点&#xff0c;总喜欢让模拟实现string类&#xff0c;下面来模拟实现一下string&#xf…

优化企业集成架构:iPaaS集成平台助力数字化转型

前言 在数字化时代全面来临之际&#xff0c;企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局&#xff0c;不断推动着企业迈向新的前程。然而&#xff0c;这一数字化时代亦衍生出一系列复杂而深奥的难题&#xff1a;各异系统之间数据…

Vite创建Vue+TS项目引入文件路径报错

使用vite搭建vue3脚手架的时候&#xff0c;发现main.ts中引入App.vue编辑器会报错&#xff0c;但是不影响代码运行。 报错信息&#xff1a;TS2307: Cannot find module ‘./App.vue’ or its corresponding type declarations. 翻译过来是找不到模块或者相关的声明类型&#…

如何快速模拟一个后端 API

第一步&#xff1a;创建一个文件夹&#xff0c;用来存储你的数据 数据&#xff1a; {"todos": [{ "id": 1, "text": "学习html44", "done": false },{ "id": 2, "text": "学习css", "…

Redis7学习笔记01

一、redis7实战教程简洁 1、大纲&#xff1a; ①、适合对象&#xff0c;从小白到熟手&#xff0c;一套全包圆 ②、Redis专题-大厂面试题&#xff0c;含100道 ③、Redis专题-真实需求生产真实案例 ④、Redis7新特性 2、小白篇高阶篇&#xff1a; 3、大厂面试题&#xff1a…

自动化测试——APP测试

一、环境配置 1、安装jdk 配置环境变量 2、Android SDK 环境安装 3、Appium Server安装 4、模拟器安装 5、安装appium-python-client Python第三方库 二、APP自动化测试原理 三、Desired Capabilites——APPium自动化配置项 1、设置参数 2、操作系统 3、选择版本 4、设备名称…

TCP KeepAlive与HTTP Keep-Alive

TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后&#xff0c;如果应用程序或者上层协议一直不发送数据&#xff0c;或者隔很长时间才发送一次数据&#xff0c;那么TCP需要判断是应用程序掉线了还…

Android Studio 启用设备远程调试配置完整步聚

启用手机设置->开发者选项-无线调试,然后选择允许 已启用后无线调试变成绿色 ,点击无线调试进入详情页面 点击Android Studio的Device Manager 下的WIFI图标 会弹出下图窗口 打开手机的开发者选项中的WIFI调试(无线调试)下的使用二维码配对设备进行扫描. 设备配对成功后手机…

Unity Shader - if 和 keyword 的指令比较

文章目录 环境TestingIf4Sampleunity shaderlab 中的 TestingIf4Sample.shadergraphics analyzer 中的 TestingIf4Sample.glsl TestingKW4Sampleunity shaderlab 中的 TestingKW4Sample.shadergraphics analyzer 中的 TestingKW4Sample.glsl 比较 环境 Unity : 2020.3.37f1 Pi…

在Linux中用strsignal函数输出对各种信号的描述

2023年7月29日&#xff0c;周六上午 目录 函数原型Linux有多少种信号使用示例 函数原型 #include <string.h>char* strsignal(int signum);strsignal函数接受一个整数参数signum&#xff0c;表示信号的编号。 用于把信号编号转换成一个简短的对这个信号编号的描述。 L…

JAVA SE -- 第十一天

&#xff08;全部来自“韩顺平教育”&#xff09; 异常-Exception 一、异常介绍 1、基本介绍 Java语言中&#xff0c;将程序执行中发生的不正常情况为“异常”&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; 2、执行过程中发生的异常事件可分为两大类 …

FPGA2-采集OV5640乒乓缓存后经USB3.0发送到上位机显示

1.场景 基于特权A7系列开发板&#xff0c;采用OV5640摄像头实时采集图像数据&#xff0c;并将其经过USB3.0传输到上位机显示。这是验证数据流能力的很好的项目。其中&#xff0c;用到的软件版本&#xff0c;如下表所示&#xff0c;基本的硬件情况如下。该项目对应FPGA工程源码…