姓名:任佩怡 学号;19020100348 学院:电子工程学院
转自:https://blog.csdn.net/weixin_38815998/article/details/102778007
【嵌牛导读】在软件方面,完善的嵌入式操作系统已经成熟,比如Symbian, Linux,WinCE。基于完善的操作系统,诸如字处理,图像,视频,音频,游戏,网页浏览等各种应用程序层出不穷,其功能性和复杂度比诸PC软件不遑多让。原来多选用专用硬件和专用系统的一些商业设备公司也开始转换思路,以出色而廉价的硬件和完善的操作系统为基础,用软件的方式代替以前使用专有硬件实现的功能,从而实现更低的成本和更高的可变更,可维护性。
【嵌牛鼻子】嵌入式系统架构
【嵌牛提问】嵌入式系统之软件
【嵌牛正文】
1.嵌入式系统overview
2. Uboot
Uboot(universal bootloader(通用的启动代码)),Uboot属于一段裸机程序,最终的目的是启动内核。历史的发展Uboot的功能也越来越强大。如今的Uboot主要具备如下主要功能:
1.初始化硬件平台,初始化处理器核心接口:时钟、内存、中断、串口...,初始化板级接口:网卡、USB、LCD...(不是说启动内核吗?为什么要初始化硬件呢?后面会说。)
2.提供命令行操作以及一些小工具
为什么需要有命令行操作,因为内核启动可以传递一些参数,设计者可以在命令行中进行相关操作,同时Uboot还提供tftp、fastboot等小工具,tftp在我们下载文件时会用到,fastboot在刷机时可以用到。而这些小工具都需要硬件支持,所以Uboot中会具有硬件的驱动代码。
3.启动内核。
3. linux APP
linux APP主要是处于操作系统上层的应用层,通过各种系统调用实现业务要求。比如linux系统中的各种应用(浏览器、播放器、编辑器)都属于linux APP。
4.roofs
文件系统在嵌入式系统中非常重要,玩过STM32操作FLASH的同学就知道了,直接操作FLASH需要注意起始位置,长度,是否换页,加入文件系统之后,我们就有了一种文件路径的概念,更加形象方便。
应用程通过系统调用(SCI)操作虚拟文件系统(VFS),为什么需要VFS,因为linux支持多种文件系统类型,接口个不一定兼容,VFS就是将这些接口进行又一层的封装,消除差异。
说这么多,roofs难道就是一个文件系统?当然不是,roofs称为根文件系统,既然能称为“根”,重要性不言而喻,根文件系统是内核加载后第一个挂载得称为根文件系统,其他文件系统只能挂在在这个文件系统得某个目录(例如插入一个U盘,就会挂载到 /mnt/udisk/ 下)。根文件系统除了存储文件之外,为了系统更好得运行,还会包括一些shell命令工具、应用程序运行所需要的动态库、系统环境变量配置信息以及系统工作信息等。
5. linux kernel
linux kernel(内核)是嵌入式的软件大脑,地位十分重要,主要提供如下几个功能:
1.内存管理
内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存的请求。linux内存管理支持虚拟内存,虚拟内存有助于实现进程内存的独立性和安全性、有助于系统数据共享以及内存的“扩充”(通过SWAP分区实现)
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,网络接口提供了各种网络通讯协议和网络驱动设备,进而形成各种网络通讯工具提供给应用层。