LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

嵌入式Linux软件设计系统设计的一般流程是什么?(图)

2022年11月24日 474点热度

嵌入式Linux软件设计学习过程:

熟悉C语言和基本程序设计方法; (C程序设计、数据结构、操作系统原理)了解基本软硬件调试方法; (微机原理实验或单片机实验)熟练掌握搜索相关网络资源的技巧;熟悉UNIX/Linux操作系统的基本操作

因为本人是小白。所以希望可以大家指正错误及时改进。

一:嵌入式系统概述:

什么是嵌入式系统?以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗 严格要求的专用计算机系统。(这里的可裁剪的意思是本人理解为就是像手机,智能手环,LOT产品等这种嵌入式产品,可以在硬件平台和软件平台由开发者自行决定。)

嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理等目标。

嵌入式系统的架构:

典型的嵌入式系统基本硬件组成:

在这里插入图片描述

嵌入式系统未来的发展趋势?

嵌入式应用软件的开发需要强大的开发工具和操作系统的支持

• 采用实时多任务编程技术和交叉开发工具来实现复杂的控制功能

• 简化应用程序设计,保障软件质量和缩短开发周期

联网成为必然趋势

实现小尺寸、微功耗和底成本

提供精巧的多媒体人机界面

嵌入式系统软件开发:

1.与普通软件开发的区别:

• 是否需要操作系统一般采用Linux系统配套下的开发工具和开发平台。

• 程序编译和程序执行是在两个平台

存在host端和target端,需要交叉编译

• 输入/输出的界面不同 • 可利用的资源非常有限

• 常常要和硬件打交道

2. 嵌入式系统设计的一般流程:

3.嵌入式软件开发的一般流程:

BSP开发:

在其他博主的CSDN里找到比较详细的解释;BSP是板级支持包操作系统原理unix篇,(board support package)是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改),这样才能与上层OS保持正确的接口,良好的支持上层OS…。

4.嵌入式系统软件的开发环境:

嵌入式系统的一个特点在于其开发的特殊性与困难性。

• 开发机器 != 执行机器

• 开发环境 != 执行环境

专门的开发环境与开发工具

Linux系统配套的gcc,gdb等开发工具

-VxWorks系统配套的Tornado集成开发工具

这里因为不太了解VxWorks系统配套的Tornado集成开发工具,查找资料:

风河公司已经在Tornado平台基础上开发推出了workbench开发平台,采用新的Eclipse软件框架结构,易于系统的拓展。 Tornado开发环境包括三个部分:1.运行在宿主机以及目标机上的强有力的交叉开发工具及应用程序;例如:GNU,Diab编译器,文本编译器,各种调试工具,VxSim模拟器等;2.运行在目标机上的高性能linux apache 虚拟主机,可裁剪的实时操作系统VxWorks; 3.连接宿主机以及目标机的各种通讯方式:如以太网,串口,JTAG等。

5.大型连接式开发环境:

在这里插入图片描述

6.嵌入式系统开发以及软件开发工具:

unix操作系统应用基础_操作系统原理unix篇_unix操作系统的安全审计内容

1.嵌入式系统开发工具:

• 编译器 • 链接器• 定址器• 软件仿真 • 调试工具

• 硬件调试器 ICE(In-Circuit Emulator) ICD(In-Circuit Debugger)

• 集成开发环境(IDE)

2. 常见嵌入式软件开发工具:

典型的商业开发工具及供应商

• ARM公司的SDT、ADS和Realview

• Windriver公司的Tornado for VxWorks

• MontaVisa公司的HardHat Linux

• Microsoft公司的Platform Builder和eMbedded Visual C++

免费开发工具

• GNU系列开发工具 (从源代码开始 ;已编译好的二进制工具)

• Wiggler调试器

嵌入式操作系统 嵌入式操作系统的组成:

嵌入式操作系统的分类:

• 多任务操作系统 并行性、调度性和无序性

• 分时操作系统 并行性、独立性、交互性和及时性

• 实时操作系统(IEEE实时UNIX分委会的定义)

异步事件响应;切换时间和中断延迟时间确定;抢占式调度;内存锁定;优先级中断和调度 ;连续文件;同步

unix操作系统应用基础_操作系统原理unix篇_unix操作系统的安全审计内容

3.对实时系统的一些误解:嵌入式系统经常就是实时性系统—其实很多嵌入式系统并不需要实时性;

实时系统处理速度很快—其实实时性是一个相对概念;

4… 实时系统的特点:

• 在实时系统中,系统的正确性不仅仅依赖于 计算的逻辑结果而且依赖于结果产生的时间

• 实时操作系统必须在指定的时间内对外部或 内部的事件进行响应和处理

• 需要高效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数 据收发应用

5… 实时操作系统的基本功能:

• 任务管理 (多任务和基于优先级的任务调度)

• 任务间同步和通信 (信号量和共享内存等)

• 存储器优化管理(含ROM的管理) • 中断管理服务

注:什么是信号量?为了避免多个线程同时读写同一个数据而产生不可预料的后果,所以要将各个线程对一个数据的访问同步。信号量相当于一种锁,一个初始值为N的信号量允许N个线程并发访问。

操作如下: 将信号量的值减1;

如果信号量的值小于0,则进入等待状态,否则继续执行。访问完资源之后,线程释放信号量,进行如下操作;

将信号量的值加1;

如果信号量的值小于1,唤醒一个等待中的线程。

6… 典型的嵌入式操作系统:

• 嵌入式Linux

• VxWorks

• Windows CE

• Palm OS

unix操作系统应用基础_操作系统原理unix篇_unix操作系统的安全审计内容

• Symbian OS

• μC/OS-II GNU/Linux操作系统:

GNU代表GNU’s Not Unix。它既是一个操作系统,也是一种规范。

传统意义上的Linux是一个内核,然而一个完整的操作系统不仅仅是内核而已。

Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux,即采用Linux内核的 GNU操作系统。

GNU/Linux操作系统的版本:

• Linux最早是Linus Torvalds于1991年在芬兰 赫尔辛基大学原创开发的,并在GNU的GPL (General Public License)原则下发行。

• Linux的版本号又分为两部分:内核(Kernel) 版本和发行(Distribution)版本。内核版本 的序号由3部分数字构成,其形式如下: major.minor.patchlevel 如2.4.18

Linux系统常见的自由发行版本:

在这里因为本人使用Ubuntu版本所以简略介绍Ubuntu:

Debian最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范Linux系统。

Debian是Linux发行版当中比较自由的一种,由位于世界各地上千名的自愿者不断开发和维护。它不属于任何的商业公司,完全由开源社区所有。Debian GNU/Linux不单是个操作系统,它也包含多过15490个软件包,它们是一些 经已编译的软件操作系统原理unix篇,并包装成一个容易安装的格式。dpkg是 Debian系列特有的软件包管理工具linux启动盘制作工具,它被誉为所有Linux 软件包管理工具(比如RPM)最强大的!配合apt-get,在 Debian上安装、升级、删除和管理软件变得异常容易。

Ubuntu是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。 Ubuntu精神的大意是“人道待人”(对他人仁慈)。另一种翻译可以是:“天下共享的信念, 连接起每个人”。 Ubuntu项目完全遵从开源软件开发的原则;并且鼓励人们使用、 完善并传播开源软件。也就是说Ubuntu目前是并将永远是免费的。Ubuntu是基于Debian之上,旨在创建一个可以为桌面和服务器提供一个最新且一贯的Linux系统。Ubuntu囊括了大量精挑细选自Debian发行版的软件包,同时保留了Debian强大的软 件包管理系统,以便简易的安装或彻底的删除程序。与大多数 发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用程序。

2… Linux的特点:

多任务、多用户 支持多种文件系统

采用虚拟内存管理技术

良好的可移植性

设备独立性

丰富的网络功能

unix操作系统应用基础_unix操作系统的安全审计内容_操作系统原理unix篇

提供全部源代码

3… Linux的功能:

稳定的核心

丰富的应用软件

X Window系统(仿Windows系统在Linux下的软件窗口系统,图形化界面)

多重启动

网络功能

软件开发工具

4… Linux内核体系结构:

与UNIX系统相似,Linux系统大致可分为3层: 靠近硬件的底层是内核,即Linux操作系统的 常驻内存部分;中间层是内核之外的Shell层,亦即操作系统的系统程序部分;最高层是应用层,即用户程序部分,包括各种文本处理程序、语言编译程序及游戏程序等。Linux的系统结构如图所示。

在这里插入图片描述

5.嵌入式Linux的优势:

• Linux系统是层次结构且内核完全开放 • 强大的网络支持功能

• Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且 可以跨越嵌入式系统开发中仿真工具的障碍

• Linux具有广泛的硬件支持特性 Linux程序设计基础 编辑器vi的使用:自行看文档:

举例::set number 设置显示行号;h(向右),j(向下),k(向上),l(向左)移动光标;

2.GNU cc的使用

在终端键入gcc-v,可以看到正在使用的gcc版本,还可以确定系统支持ELF还是a.out文件格式;

可以看到我的gcc版本是7.4.0;Gcc的使用格式如下:• $ gcc [options][filenames] • 其中filenames为所要编译的程序源文件。 • 当使用gcc时,gcc会完成预处理、编译、 汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。 gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: gnu linux系统 嵌入式系统 嵌入式计算机 嵌入式软件
最后更新:2022年11月24日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
(Linux基础知识)Linux察看版本信息的信息三 从容迎接Windows时代:Ubuntu安装Win7虚拟机教程 教下大伙儿红旗linux系统镜像系统安装实例教程流程汇总 轻松压缩文件,linux命令必备! 红旗Linux推出新版本:界面设计媲美Windows Linux部署项目:构建高效稳定的运行环境 掌握Linux下载文件命令技巧,轻松高效获取所需资料 Linux系统查看系统运行状态的top命令的功能 轻松解决Linux内存溢出问题:9个实用方法 Linux常用的命令大全-系统管理进程与作业管理命令解释大全 linux内核api 深入探索Linux内核API,你真的了解吗? 教你在XShell软件中使用sz和rz命令下载和上传文件 RedHatEnterprise命令删除空文件夹命令教程操作环境介绍 轻松掌握Linux目录权限777提升技巧 LinuxTCP协议栈的内部机制和优化技术介绍 手动删除400多万个小文件,rm-删除执行不动 mysql执行sql脚本文件的方法:SQLServerjava能写游戏吗 解密Unix时间戳转换技巧,轻松读懂日期奥秘 在Linux中轻松删除单个文件、文件组或整个文件夹 掌握Linux编译C语言的命令,轻松使用编译器
Linux文件路径查询方法,轻松获取文件位置Linux移植6410:从零开始的挑战!linux php安装 快速掌握Linux下PHP安装,轻松入门流行技术linux patch 文件 解决LinuxPatch文件10大疑难杂症,轻松应对!Ubuntu系统更改IP地址的简易教程,跟随以下步骤即可搞定!高效搭建Linux Android开发环境,轻松提升开发体验轻松掌握:如何查询Linux内核版本?Linux安装Matlab指南,快速掌握安装步骤Ubuntu 16安装网卡驱动教程,轻松解决网络连接问题Linux启动时,不使用图形界面可能更有效率!移植Linux,手机变身“大杀器”!详解8大关键操作Linux更高效,掌握启动终端快捷键!纯Python库实现上面介绍的HTML转换为PDF的软件Fedora 13服务器配置指南:9个实用技巧全解析9种方法轻松获取Linux版本,快速掌握系统信息!博客韦东山freeRTOS系列教程:入门文档教程+进阶视频教程轻松掌握linux ldd命令的技巧,成为高效开发者与管理员Linux VPS安全检测,保障服务器稳定运行!Linux下高效开发必备:配置Tomcat和JDK分析Linux中的I2C驱动程序框架核心结构(i2c-bus结构)
比特币挖矿程序 linux CalvinStandridgeStandridge分校Ho理学硕士研究生加州大学分校研究生申请 自定义登录session时要注意的几个小细节,你知道吗? 解密Unix时间戳转换技巧,轻松读懂日期奥秘 指令中各个make-C~/linuxM=`pwd编译 LINUX设备驱动程序(第3版)-设备 PS教程:如何用gif文件来形容文件的意思? Contents[show]如何在Linux中创建目录和子文件夹? Linux上使用Smartmontools工具扫描坏道工具 cron定时器 《Linux基础知识》命令文件操作相关命令操作命令 web应用漏洞/心脏滴血8069zabbix服务远程命令执行/注入8161activemq弱口令 2022年3月7日Linux中提权漏洞被安全研究员爆出 从容迎接Windows时代:Ubuntu安装Win7虚拟机教程 Linux一模一样远程连接编辑的操作图是什么? 精通Linux程序设计的高级程序员并非一件可望不可及的事情 盘点一下目前主流的国产操作系统,你知道几个? 1.使用标准Ubuntu仓库进行自动安装2.使用官方的NVIDIA驱动 CentOS8虚拟机的网络设置对话框的解决方法和解决办法 Linux上架构示意图munin的架构非常简单的配置和客户端插件 linux系统怎么在文件夹里搜索文件?方法总结及方法
标签聚合
命令模式 linux服务器 命令 linux系统 sudo 虚拟机 软件 文件目录 linux脚本 电脑
书籍
课程
技术群
技术干货大合集↓
  • 2023年3月 / 89篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.