笔记——嵌入式软件开发学习(一)

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

  1. 熟悉C语言和基本程序设计方法; (C程序设计、数据结构、操作系统原理)
  2. 了解基本软硬件调试方法; (微机原理实验或单片机实验)
  3. 熟练掌握搜索相关网络资源的技巧;
  4. 熟悉UNIX/Linux操作系统的基本操作
    因为本人是小白。所以希望可以大家指正错误及时改进。
    一:嵌入式系统概述:

什么是嵌入式系统?以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗 严格要求的专用计算机系统。(这里的可裁剪的意思是本人理解为就是像手机,智能手环,LOT产品等这种嵌入式产品,可以在硬件平台和软件平台由开发者自行决定。)
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理等目标。
嵌入式系统的架构:

笔记——嵌入式软件开发学习(一)_第1张图片
典型的嵌入式系统基本硬件组成:
笔记——嵌入式软件开发学习(一)_第2张图片
嵌入式系统未来的发展趋势?
嵌入式应用软件的开发需要强大的开发工具和操作系统的支持
• 采用实时多任务编程技术交叉开发工具来实现复杂的控制功能
• 简化应用程序设计,保障软件质量和缩短开发周期
联网成为必然趋势
实现小尺寸微功耗底成本
提供精巧的多媒体人机界面

嵌入式系统软件开发:

1.与普通软件开发的区别:
• 是否需要操作系统一般采用Linux系统配套下的开发工具和开发平台。
• 程序编译和程序执行是在两个平台
存在host端和target端,需要交叉编译
• 输入/输出的界面不同 • 可利用的资源非常有限
• 常常要和硬件打交道
2. 嵌入式系统设计的一般流程:
笔记——嵌入式软件开发学习(一)_第3张图片
3.嵌入式软件开发的一般流程:
笔记——嵌入式软件开发学习(一)_第4张图片
BSP开发:https://blog.csdn.net/ibelieve1974/article/details/72235579
在其他博主的CSDN里找到比较详细的解释;BSP是板级支持包,(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.运行在目标机上的高性能,可裁剪的实时操作系统VxWorks; 3.连接宿主机以及目标机的各种通讯方式:如以太网,串口,JTAG等。
5.大型连接式开发环境:
笔记——嵌入式软件开发学习(一)_第5张图片
6.嵌入式系统开发以及软件开发工具:
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调试器

嵌入式操作系统

  1. 嵌入式操作系统的组成:
    笔记——嵌入式软件开发学习(一)_第6张图片
  2. 嵌入式操作系统的分类:
    • 多任务操作系统 并行性、调度性和无序性
    • 分时操作系统 并行性、独立性、交互性和及时性
    • 实时操作系统(IEEE实时UNIX分委会的定义)
    异步事件响应;切换时间和中断延迟时间确定;抢占式调度;内存锁定;优先级中断和调度 ;连续文件;同步
    3.对实时系统的一些误解:嵌入式系统经常就是实时性系统—其实很多嵌入式系统并不需要实时性;
    实时系统处理速度很快—其实实时性是一个相对概念;
    4… 实时系统的特点:
    • 在实时系统中,系统的正确性不仅仅依赖于 计算的逻辑结果而且依赖于结果产生的时间
    • 实时操作系统必须在指定的时间内对外部或 内部的事件进行响应和处理
    • 需要高效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数 据收发应用
    5… 实时操作系统的基本功能:
    • 任务管理 (多任务和基于优先级的任务调度)
    • 任务间同步和通信 (信号量和共享内存等)
    • 存储器优化管理(含ROM的管理) • 中断管理服务
    注:什么是信号量?为了避免多个线程同时读写同一个数据而产生不可预料的后果,所以要将各个线程对一个数据的访问同步。信号量相当于一种锁,一个初始值为N的信号量允许N个线程并发访问。
    操作如下: 将信号量的值减1;
    如果信号量的值小于0,则进入等待状态,否则继续执行。访问完资源之后,线程释放信号量,进行如下操作;
    将信号量的值加1;
    如果信号量的值小于1,唤醒一个等待中的线程。
    6… 典型的嵌入式操作系统:
    • 嵌入式Linux
    • VxWorks
    • Windows CE
    • Palm OS
    • Symbian OS
    • μC/OS-II

GNU/Linux操作系统:

GNU代表GNU’s Not Unix。它既是一个操作系统,也是一种规范。
传统意义上的Linux是一个内核,然而一个完整的操作系统不仅仅是内核而已。
Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux,即采用Linux内核的 GNU操作系统。

  1. GNU/Linux操作系统的版本:
    • Linux最早是Linus Torvalds于1991年在芬兰 赫尔辛基大学原创开发的,并在GNU的GPL (General Public License)原则下发行。
    • Linux的版本号又分为两部分:内核(Kernel) 版本和发行(Distribution)版本。内核版本 的序号由3部分数字构成,其形式如下: major.minor.patchlevel 如2.4.18
    Linux系统常见的自由发行版本:
    笔记——嵌入式软件开发学习(一)_第7张图片
    在这里因为本人使用Ubuntu版本所以简略介绍Ubuntu:
    Debian最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范Linux系统。
    Debian是Linux发行版当中比较自由的一种,由位于世界各地上千名的自愿者不断开发和维护。它不属于任何的商业公司,完全由开源社区所有。Debian GNU/Linux不单是个操作系统,它也包含多过15490个软件包,它们是一些 经已编译的软件,并包装成一个容易安装的格式。dpkg是 Debian系列特有的软件包管理工具,它被誉为所有Linux 软件包管理工具(比如RPM)最强大的!配合apt-get,在 Debian上安装、升级、删除和管理软件变得异常容易。
    Ubuntu是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。 Ubuntu精神的大意是“人道待人”(对他人仁慈)。另一种翻译可以是:“天下共享的信念, 连接起每个人”。 Ubuntu项目完全遵从开源软件开发的原则;并且鼓励人们使用、 完善并传播开源软件。也就是说Ubuntu目前是并将永远是免费的。Ubuntu是基于Debian之上,旨在创建一个可以为桌面和服务器提供一个最新且一贯的Linux系统。Ubuntu囊括了大量精挑细选自Debian发行版的软件包,同时保留了Debian强大的软 件包管理系统,以便简易的安装或彻底的删除程序。与大多数 发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用程序。
    2… Linux的特点:
    多任务、多用户 支持多种文件系统
    采用虚拟内存管理技术
    良好的可移植性
    设备独立性
    丰富的网络功能
    提供全部源代码
    3… Linux的功能:
    稳定的核心
    丰富的应用软件
    X Window系统(仿Windows系统在Linux下的软件窗口系统,图形化界面)
    多重启动
    网络功能
    软件开发工具
    4… Linux内核体系结构:
    与UNIX系统相似,Linux系统大致可分为3层: 靠近硬件的底层是内核,即Linux操作系统的 常驻内存部分;中间层是内核之外的Shell层,亦即操作系统的系统程序部分;最高层是应用层,即用户程序部分,包括各种文本处理程序、语言编译程序及游戏程序等。Linux的系统结构如图所示。
    笔记——嵌入式软件开发学习(一)_第8张图片
    5.嵌入式Linux的优势:
    • Linux系统是层次结构且内核完全开放 • 强大的网络支持功能
    • Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且 可以跨越嵌入式系统开发中仿真工具的障碍
    • Linux具有广泛的硬件支持特性

Linux程序设计基础

  1. 编辑器vi的使用:自行看文档:
    举例::set number 设置显示行号;h(向右),j(向下),k(向上),l(向左)移动光标;
    2.GNU cc的使用
    笔记——嵌入式软件开发学习(一)_第9张图片
    在终端键入gcc-v,可以看到正在使用的gcc版本,还可以确定系统支持ELF还是a.out文件格式;
    笔记——嵌入式软件开发学习(一)_第10张图片
    可以看到我的gcc版本是7.4.0;Gcc的使用格式如下:• $ gcc [options][filenames] • 其中filenames为所要编译的程序源文件。 • 当使用gcc时,gcc会完成预处理、编译、 汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。 gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。
    笔记——嵌入式软件开发学习(一)_第11张图片

你可能感兴趣的:(笔记——嵌入式软件开发学习(一))