嵌入式系统框架----软件篇

姓名:刘琛  学号:19020100265   学院:电子工程学院

转自:https://blog.csdn.net/weixin_38815998/article/details/102778007?utm_source=app&app_version=4.13.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

【嵌牛导读】相关软件的嵌入式系统框架介绍

【嵌牛鼻子】嵌入式系统分为硬件以及软件两大部分,大多数人参与的是嵌入式软件设计,更多的是接触的是上层软件系统部分,可以分为两大类型嵌入式软件应用工程师以及嵌入式驱动工程师。

【嵌牛提问】怎样才能更好地理解嵌入式系统软件部分

【嵌牛正文】

1.overview

图1-1 嵌入式框架图

嵌入式系统分为硬件以及软件两大部分,大多数人参与的是嵌入式软件设计,更多的是接触的是上层软件系统部分,可以分为两大类型嵌入式软件应用工程师以及嵌入式驱动工程师。

前者主要负责 linux APP 设计,负责应用层业务开发,主要具备如下几个专业技能:

      1.熟悉网络编程、TCP/IP协议、IIC、SPI协议

      2.熟悉多线程管理、进程间通信、文件IO操作

      3.了解基本的shell编程

      4.熟悉数据库操作

      5.了解QT或者Android

后者负责驱动开发,更加涉及底层。

      1.熟悉uboot和Linux内核,完成Linux内核裁剪定制以及系统的固件更新

      2.熟悉Linux驱动模型

      3.熟悉ARM架构

      4.熟悉基本的电路原理

歪了歪了,只是做一些基本介绍,明白嵌入式到底干啥,才能更好的去了解嵌入式系统。

2.Uboot

Uboot(universal bootloader(通用的启动代码)),Uboot属于一段裸机程序,最终的目的是启动内核。历史的发展Uboot的功能也越来越强大。如今的Uboot主要具备如下主要功能:

1.初始化硬件平台,初始化处理器核心接口:时钟、内存、中断、串口...,初始化板级接口:网卡、USB、LCD...(不是说启动内核吗?为什么要初始化硬件呢?后面会说。)

2.提供命令行操作以及一些小工具

      为什么需要有命令行操作,因为内核启动可以传递一些参数,设计者可以在命令行中进行相关操作,同时Uboot还提供tftp、fastboot等小工具,tftp在我们下载文件时会用到,fastboot在刷机时可以用到。而这些小工具都需要硬件支持,所以Uboot中会具有硬件的驱动代码。

3.启动内核。

Uboot官网 <---

3.linux APP

linux APP主要是处于操作系统上层的应用层,通过各种系统调用实现业务要求。比如linux系统中的各种应用(浏览器、播放器、编辑器)都属于linux APP

4.roofs

图1-2 文件系统在系统中的层次关系

文件系统在嵌入式系统中非常重要,玩过STM32操作FLASH的同学就知道了,直接操作FLASH需要注意起始位置,长度,是否换页,加入文件系统之后,我们就有了一种文件路径的概念,更加形象方便。

应用程通过系统调用(SCI)操作虚拟文件系统(VFS),为什么需要VFS,因为linux支持多种文件系统类型,接口个不一定兼容,VFS就是将这些接口进行又一层的封装,消除差异。

说这么多,roofs难道就是一个文件系统?当然不是,roofs称为根文件系统,既然能称为“根”,重要性不言而喻,根文件系统是内核加载后第一个挂载得称为根文件系统,其他文件系统只能挂在在这个文件系统得某个目录(例如插入一个U盘,就会挂载到 /mnt/udisk/ 下)。根文件系统除了存储文件之外,为了系统更好得运行,还会包括一些shell命令工具、应用程序运行所需要的动态库、系统环境变量配置信息以及系统工作信息等。

5.linux kernel

linux kernel(内核)是嵌入式的软件大脑,地位十分重要,主要提供如下几个功能:

1.内存管理

内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存的请求。linux内存管理支持虚拟内存,虚拟内存有助于实现进程内存的独立性和安全性、有助于系统数据共享以及内存的“扩充”(通过SWAP分区实现)

理解linux虚拟内存

2.进程管理

进程管理主要是进程调度,所谓的进程调度,就是在多任务领域,操作系统合理分配单一的CPU资源的过程。进程管理决定了某个进程什么时候等待CPU资源、利用CPU资源以及释放CPU资源。(这些话语只是为了更加明了表达,深入学习进程管理会遇到 单核以及多核处理器、时间片、进程状态转换等概念)

3.进程间通信

由于需要保证单个进程的独立性和安全性,每个进程的内存在虚拟内存中的隔开的,但是由于进程之间的相互协作是不可缺少的(例如微信访问相册),相互协作的基础是信息交流,linux设计基于这种需求,引入内核作为中间交换信息的桥梁,内核提供多种接口提供给进程间通信。

1.无名管道、有名管道

2.消息队列

3.信号量、共享内存

4.信号

5.套接字

4.虚拟文件系统(VFS)

linux支持多种文件系统(ext2、ext3、ext4、xfs、btsfs),各个文件系统的驱动程序各不相同,甚至向上开放给应用程序的接口也不相同,VFS就是为了消除底层差异,将文件系统接口做了层封装,抽象称为虚拟文件系统。

5.网络接口

网络知识深如海,但是却不可或缺,linux内核提供各种常用的网络接口,例如常见的TCP/IP,网络接口提供了各种网络通讯协议和网络驱动设备,进而形成各种网络通讯工具提供给应用层。

————————————————

版权声明:本文为CSDN博主「ora_czw」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_38815998/article/details/102778007

你可能感兴趣的:(嵌入式系统框架----软件篇)