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

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

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

文件系统在嵌入式系统中非常重要,玩过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,网络接口提供了各种网络通讯协议和网络驱动设备,进而形成各种网络通讯工具提供给应用层。

  • 8
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
典型的嵌入式系统框架主要包括根文件系统和RTOS实时操作系统。根文件系统是内核加载后第一个挂载的文件系统,其他文件系统只能挂载在根文件系统的某个目录下。根文件系统不仅存储文件,还包括一些shell命令工具、应用程序所需的动态库、系统环境变量配置信息以及系统工作信息等。\[1\] RTOS实时操作系统是一种专门设计用于嵌入式系统的操作系统,它具有实时性和可预测性。RTOS采用事件驱动的方式进行任务调度,常见的事件驱动方式包括轮询方式、普通事件驱动方式和改进事件驱动方式。RTOS还可以使用定时器和状态机框架来实现任务调度。\[2\] 在嵌入式系统中,Linux支持多种文件系统,如ext2、ext3、ext4、xfs和btrfs。为了消除底层差异,Linux引入了虚拟文件系统(VFS),它将不同文件系统的接口进行了封装,提供了统一的文件系统接口给应用程序使用。\[3\] #### 引用[.reference_title] - *1* *3* [嵌入式系统框架----软件](https://blog.csdn.net/weixin_38815998/article/details/102778007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [嵌入式常用裸机编程框架](https://blog.csdn.net/gudao07/article/details/123135603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值