• 物联网应用系统设计复习提纲-上


    目录

     

    1.掌握Linux常用的基本命令功能、语法结构、用法等。

    2.什么是操作系统OS?

    3.现代操作系统类型【五大类】

    (1)分时系统

    (2)实时操作系统

    (3)微机操作系统

    (4)多处理机、分布式和网络操作系统

    分布式操作系统

    网络操作系统

    (5)嵌入式操作系统和智能卡操作系统

    4.分布式操作系统与网络操作系统的区别

    (1)资源管理

    (2)用户感觉

    (3)操作方式

    5.嵌入式操作系统EOS概念

    6.大多数嵌入式操作系统主要提供3种项目的机制

    (1)内存管理

    (2)多任务调度

    (3)外围资源管理

    7.嵌入式操作系统的优点

    8.嵌入式操作系统区别于通用操作系统的特征

    9.作业(job)的概念

    10.进程的概念

    11.进程与程序的区别与联系:

    区别

    联系

    12.操作系统的功能

    13.操作系统的分类

    14.linux基本组成部分

    (1)linux内核

    (2)linux shell

    (3)linux文件系统

    (4)linux应用程序

    15.linux运行外壳脚本文件的方法

    (1)修改外壳脚本的权限

    (2)通过项外壳命令传递参数

    (3)

    (4)使用命令替换

    16.linux内核版本号由3个数字组成:r,x,y

    17.“虚拟文件系统”VFS概念(VFS是virtual file system的缩写,或者是virtual filesystem缩写)

    18.常用linux编辑器

    19.vim编辑器概念

    20.vim编辑器模式

    21.shell简介

    22.外壳脚本(shell script)

    (1)定义

    23.嵌入式linux系统开发平台

    (1)嵌入式linux软件操作平台

    (2)嵌入式Linux系统硬件平台

    24.生成嵌入式开发工具链的流程图

    25.建立开发链过程

    (1)选定软件版本

    (2)建立工作目录

    (3)设置输出环境变量

    (4)内核头文件的配置

    (5)设置binutils二进制工具程序

    (6)初始编译器的建立

    (7)建立C库(glibc)

    (8)完整编译器的设置    

    (9)完整工具链的设置

    26.GDB简介

    27.GDB的主要功能

    28.GDB调试举例

    29.一套完整的开发工具

    30.开发环境


    1.掌握Linux常用的基本命令功能、语法结构、用法等。

    2.什么是操作系统OS?

            操作系统是用以控制和管理计算机系统资源,方便用户使用的程序和数据结构的集合。在所有的系统软件中,操作系统是一种首要的、最基本、最重要的系统程序,也是最庞大、最复杂的系统软件。

    3.现代操作系统类型【五大类】

    (1)分时系统

            基本特征:多路性、独立性、交互性、及时性。

    (2)实时操作系统

            能在限定的时间内输入,进行快速处理并作出响应的计算机处理系统。

    (3)微机操作系统

    (4)多处理机、分布式和网络操作系统

    分布式操作系统

            分布式操作系统:分布式系统具有一个统一的操作系统,它可以把一个大任务划分成许多可以并行执行的子任务,并按一定的策略将它们动态地分配给各个计算机执行,并控制管理各个计算的资源分配、运行及计算机之间的通信,以协调任务的并行执行。

    网络操作系统

            网络操作系统:不是一个集中、统一的操作系统。它基本上是在各种各样自治的计算机原有操作系统基础上加上具有各种网络访问功能的模块,这些模块使网络上的计算机能方便、有效地共享网络资源,实现各种通信服务的有关协议。

    (5)嵌入式操作系统和智能卡操作系统

    4.分布式操作系统与网络操作系统的区别

    (1)资源管理

            网络操作系统各个主机独立管理自己的资源;分布式则由一台主机统一管理系统中的资源。

    (2)用户感觉

            网络操作系统用户面对多台主机,分布式用户好像在使用同一台主机。

    (3)操作方式

            网络操作系统是多用户操作,分布式是单用户操作。

    5.嵌入式操作系统EOS概念

            运行在嵌入式芯片环境中,对整个芯片以及它所操作和控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。

    6.大多数嵌入式操作系统主要提供3种项目的机制

    (1)内存管理

    (2)多任务调度

    (3)外围资源管理

    7.嵌入式操作系统的优点

            具有高可靠性、实时性、占有资源少、低成本等。

    8.嵌入式操作系统区别于通用操作系统的特征

            体积小、运行时间长、故障重启、低功耗、价格便宜、动态加载。

    9.作业(job)的概念

     · 请求计算机完成的一个完整的处理任务称为作业,它可以包括几个程序的相继执行。

     · 用户在键盘上输入的一条完整的命令就是一个作业。

     · 复杂的作业也可由作业说明书(如shell命令程序)来描述。一个复杂的作业可由多个作业步组成,如编译、运行、打印一个程序的全部工作是一个作业,其中相对独立的每一部分称为作业步。

    10.进程的概念

            程序在一个数据集合上的运行活动,它是系统进行资源分配和调度的一个可并发执行的独立单位。

    11.进程与程序的区别与联系:

    区别

     · 程序是一组指令的集合,它是静态的实体,没有执行的含义。

     · 进程是一个动态的实体,有自己的生命周期。一般来说,一个程序可以只有一个进程,也可有多个进程;一个进程可以同这个程序相对应,也可以同另一个程序相对应。

    联系

     · 进程为应用程序的运行实例,是应用程序的一次动态执行。

    12.操作系统的功能

            处理机管理、存储管理、设备管理、文件管理、用户接口。

    13.操作系统的分类

            最基本的操作系统:多任务操作系统、分时操作系统、实时操作系统。

    14.Linux基本组成部分

    (1)Linux内核

             是一个操作系统最基本的组成部分,由它来向应用程序访问硬件时提供服务。

    (2)Linux shell

            是系统的用户界面,提供用户与内核的交互接口。实际上shell是一个命令解释器,它接收并解释用户输入的命令并把它们送到内核

    (3)Linux文件系统

            是文件存放在磁盘等存储设备上的组织方法。Linux支持多种目前流行的文件系统,如EXT2、EXT3、FAT、VFAT、IS09660、NFS、SMB等。

    (4)Linux应用程序

            标准Linux系统都有一套称为应用程序的程序集,包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。

    15.Linux运行外壳脚本文件的方法

    (1)修改外壳脚本的权限

            可以把外壳脚本的的权限设置为可执行,在外壳提示符下直接执行;也可使用chmod命令更改外壳脚本的权限。

    (2)通过项外壳命令传递参数

            在调用执行的外壳命令后面跟随外壳脚本的文件名作为命令行参数。

    (3)

            在pdksh和bash下使用.命令,或在tcsh下使用source命令。

    (4)使用命令替换

            如果想要使某个命令的输出成为另一个命令的参数时,就可以使用这个方法。我们将命令列于两个’号之间,而外壳会以这个命令执行后的输出结果代替这个命令以及两个’符号。

    16.linux内核版本号由3个数字组成:r,x,y

            r:目前发布的Kernel主版本。

            x:偶数为稳定版本,奇数为开发中版本。

            y:错误修补的次数。

           一般来说,x位为偶数的版本是一个可以使用的稳定版本,如2.4.4;x位为奇数的版本一般加入了一些新的内容,所以性能不一定很稳定,仍是处于测试阶段,系统是一个测试版本,如2.5.5。

    17.“虚拟文件系统”VFS概念(VFS是virtual file system的缩写,或者是virtual filesystem switch缩写)

            VFS由一组标准的、抽象的文件操作系统构成,以系统调用的形式提供于用户程序,如read()、write()、lseek()等。用户程序可以把所有的文件都看作一致的、抽象的“VFS文件”。

    18.常用linux编辑器

            常用的linux编辑器有很多,比如图形模式下的gedit、kwrite、openoffice,文本模式下的VIM、Emacs和nano。VIM和Emacs是我们在Linux下最常用的两个编辑器。

    19.vim编辑器概念

            vim是linux最基本的文本编辑工具,是创建和编辑简单文档最高效的工具,尤其适用于没有安装xWindows桌面环境或桌面环境崩溃等场合。

    20.vim编辑器模式

     · 一般模式:进入vim就是处于一般模式,只能通过按键向编辑器发送指令,不能输入文字。这些命令可能是移动光标的命令,也可能是编辑命令或寻找替换命令。

     · 编辑模式:在一般模式下按i,此时可以输入文件、写文章、按esc又回到一般模式下。

     · ​​​​​​​​​​​​​​命令模式:在一般模式下按:就会进入命令模式,左下角会有一个冒号出现,此时可以敲入命令并执行,按esc回到一般模式。

    21.shell简介

             shell是一种具备特殊功能的程序,它是介于使用者和Unix/Linux操作系统内核间的一个接口。简单地说,shell就是一个命令解释器。用户可以用shell来启动、挂起、停止甚至是编写一些程序。

            计算机对于命令的接收和处理则需要用到shell,shell首先向用户提供了一个界面系统,用户通过该界面可以向计算机发出指令,同时,shell对命令进行解释,并向内核提出请求。

    22.外壳脚本(shell script)

    (1)定义

            Shell Script定义: 在shell程序中执行一些批处理命令,这些批处理命令在Linux中叫做外壳脚本。

            不同外壳的脚本会有一些差异,写给A外壳的脚本一般不能在B外壳中执行。Linux系统最常用的外壳有Bourne外壳和C外壳。

    23.嵌入式Linux系统开发平台

    (1)嵌入式Linux软件操作平台

            三个基本元素:系统引导工具(用于机器加电后的系统定位引导)、linux微内核(内存管理、程序管理)、初始化进程。

            如果想要成为完整的操作系统并且继续保持小型化,还必须加上:硬件驱动程序、硬件接口程序、应用程序组。

            GCC是基于GNU的编译器套件,作为GNU工具链的一部分,与gdb调试器一起工作。它提供了开发嵌入式Linux系统的所有软件工具。

    (2)嵌入式Linux系统硬件平台

            如果要寻找嵌入式软件系统,那么,应首先确定硬件平台,即确定微处理器CPU的型号。硬件开发成本常是开发者很关心的。当考虑硬件成本时,需要考虑产品的整个成本而不仅是CPU的成本。因为合适的CPU,一旦加上总线逻辑和延时电路使之与外设一起工作,硬件系统就可能变得非常昂贵。

    24.生成嵌入式开发工具链的流程图

    25.建立开发链过程

            根据生成嵌入式开发工具链的流程图,简述: 

            在redhat Linux9.0环境下建立基于ARM+Linux的嵌入式开发工具链的过程。

    (1)选定软件版本

            选用适当的版本,找到适合主机和目标板的组合。

    (2)建立工作目录

    (3)设置输出环境变量

    (4)内核头文件的配置

            内核头文件的配置是建立工具链的第一步。它与后面将要执行的其他步骤有着类似性,大多需要执行下面几步操作:

     · ​​​​​​​​​​​​​​解压缩包、为跨平台开发设定包的配置、建立包、安装包;

     · ​​​​​​​​​​​​​​其中,进行配置时,变量ARCH和CROSS_COMPILE的值与目标板的架构类型有关。

     · ​​​​​​​​​​​​​​如果使用PPC目标板,则 ARCH=ppc CROSS-COMPILE=ppc-linux-。

     · ​​​​​​​​​​​​​​如果使用i386目标板,则:ARCH=i386  CROSS-COMPILE=i386-linux-。

            本例中,配置的具体参数是:

    $make  ARCH=arm  CROSS-COMPILE=arm-linux-  menuconfig                                           

            ​​​​​​​​​​​​​​配置工具选择:

    make menuconfig是以文本菜单方式配置。

    make xconfig是以图形界面方式配置。

    make config是纯文本界面方式配置。

    (5)设置binutils二进制工具程序

            binutils包中的工具常用来操作二进制目标文件。该包中最重要的两个工具就是GNU汇编器as和链接器ld。

            因为是交叉编译器,还不需要目标板的系统头文件,所以需要使用-without-headers这个选项。

            -enable-language=c用来告诉配置脚本,需要产生的编译器支持何种语言,现在只能支持c语言。

    (6)初始编译器的建立

            开始只能建立支持C语言的引导编译器,因为缺少C链接库(glibc)的支持。等到glibc编译好之后,可以重新编译gcc并提供完整的C++支持。

    (7)建立C库(glibc)

            这一步是最为繁琐的过程。目标板必须靠它来执行或者是开发大部分的应用程序。glibc套件常被称为C链接库,但是glibc实际产生很多链接库,其中之一是c链接库libc。因为嵌入式系统的限制,标准GNU C链接库显得太大,不适合应用在目标板上。所以需要寻找c链接库的替代品,比如uclibc。

    (8)完整编译器的设置    

            为目标板安装支持C和C++的完整编译器。这个步骤相对于前面的建立过程要简单一些。具体命令:

    $cd  $PRJROOT/build-dir/build-gcc

    $..  /..  /src-dir/gcc-2.95.3/configure  --target=$TARGET  --prefix=$PREFIX

    --enable-languages=c,c++

    $make all

    $make install

    (9)完整工具链的设置

    26.GDB简介

            调试器GDB能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。

    27.GDB的主要功能

            完成以下四件事,帮助找出程序中的错误。

    (1)运行程序,设置所有的能影响程序运行的东西。

    (2)保证程序在指定的条件下停止。

    (3)当程序停止时,让你检查发生了什么。

    (4)改变程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一个bug。

    28.GDB调试举例

            在文本编辑器emacs中编写一个简单的C程序,使用嵌入式开发工具链编译,并用gdb调试的例子。

    $cd  $PRJROOT/program

    $emacs  hello.c

      在文本编辑器emacs中编写:

    #include

    int main()

    {

         int i;

         for(i=1;i<9;i++)

         printf(“Hello World%d times!\n”,i);

    }

           保存退出。

    $gcc -g hello.c  -o hello

    $gdb

    (gdb)file hello

    (gdb)l

    #include

    int main()

    {

         int i;

         for(i=1;i<9;i++)

         printf(“Hello World%d times!\n”,i);

    }

    (gdb)r

    (gdb)q

    $arm-linux-gcc  -g hello.c -o hello-linux

    $file hello-linux

    hello-linux:ELF 32-bit LSB executable,ARM,version  1(ARM),for GNU/Linux2.0.0,

    dynamically linked(uses shared libs),not stripped

            上面的输出说明已成功编译了一个能在arm体系结构下运行的hello-linux,证明编译工具安装成功了。

    29.一套完整的开发工具

            一套完整的开发工具应至少包括以下三种工具:编辑工具、编译工具和调试工具。如果是大型项目,还要有配置工具和项目管理工具

    30.开发环境

            开发环境分为基于文本的开发平台(典型组合是vim/emacs + gcc + gdb)和集成开发平台(Eclipse+CDT插件)。​​​​​​​

    课堂提问

    1.    该Makefile包含几个规则?

    2.    该Makefile执行后,生成的最终目标文件是什么?

    3.    按照各个目标文件生成的先后顺序,写出该Makefiles生成的目标文件。

    4.    使用make命令执行该Makefile时,所有的规则都自动执行吗?如果不是,哪条规则没有自动执行?为什么?

  • 相关阅读:
    C语言for循环必备练习题
    同步服务器操作系统公网仓库到本地 _ 统信UOS _ 麒麟KYLINOS
    07 hdfs 集群搭建
    批量下载微信公众号要点
    Docker 中的 .NET 异常了怎么抓 Dump
    基于AVR单片机的心电信号获取与分析
    国庆作业4
    Python数据分析 ——Matplotlib数据可视化
    系统篇: linux 下实现 U 盘自动挂载
    MCU设计--M3内核整体功能说明
  • 原文地址:https://blog.csdn.net/m0_57656758/article/details/127552630