侧边栏壁纸
    • 累计撰写 215 篇文章
    • 累计收到 471 条评论
    嵌入式与应用知识点学习&复习提纲
    2021-06-09 / 252 评论 / 1,910 阅读 / 71 点赞

    嵌入式与应用知识点学习&复习提纲

    刘航宇
    2021-06-09 / 252 评论 / 1,910 阅读 / 正在检测是否收录...

    自己整理的复习提纲

    部分程序讲解

    培养目标1

    1.嵌入式系统分三层:应用、内核、硬件层。ARM为硬件层、驱动内核层。
    2.嵌入式系统与PC的区别
    讲解:嵌入式系统一般指非 pc 系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于 pc 中 bios 的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。
    答案:下面3点缺一不可


    即:
    1.嵌入式系统的硬件和软件都必须具备高度可定制性
    2.运行环境差异很大
    3.功耗低、体积小、集成度高、成本低

    3.嵌入式系统的特点
    1)联网:嵌入式设备支持网络连接,可实现物联。
    2)UI:嵌入式设备更多的采用是自定义的简单UI。

    提示联网和UI必须答,不答0分,少答扣分

    3)包含专用调试电路
    4)具有完整的系统测试和可靠性评估体系

    培养目标2

    4.gcc编译hello.c为hello
    答: gcc hello.c -o hellogcc -o hello hello.c
    5.Linux 删除文件夹命令和CD命令含义
    rmdir 目录 或者“rm -rf /目录”
    cd命令:切换当前目录至其它目录。
    知识点补充:

    新建文件夹和删除文件夹命令是mkdir和rmdir;
    Linux 删除文件夹和文件的命令:
    -r 就是向下递归,不管有多少级目录,一并删除
    -f 就是直接强行删除,不作任何提示的意思
    删除文件夹实例:
    rm -rf /var/log/httpd/access
    将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
    删除文件使用实例:
    rm -f /var/log/httpd/access.log
    将会强制删除/var/log/httpd/access.log这个文件

    6.【判断题】Vi有三种基本工作模式:写程序在文本输入模式。 (对)
    知识点补充:

    Test
    Vi有三种基本工作模式:

    • 命令模式
    • 文本输入模式
    • 末行模式。
      参考课本P21

      培养目标3

      7.int p[n]:数组;int *p[n]指针;
      必考补充:数组指针和指针数组区分:

      数组指针(也称行指针)
      定义 int (*p)[n];
      指针数组
      定义 int *p[n];

      培养目标4

      8.文件IO中write返回正确值为:向内核文件fd中写的字节数 参考P84

      培养目标5

      9.程序分析题
      (1)运行时间小于20秒有几个进程?
      (2)什么是僵尸进程?什么孤儿进程,20秒后会产生什么?

      #include "stdio.h"
      #include "stdlib.h"
      int main()
      {
         int i;
         int pid;
         pid = fork();
         if(pid > 0)
         {
             while(1);
         }
         if(pid == 0)
         { 
           for(i=0;i<20;i++)
             {
            printf("我爱刘航宇%d次了\n",i);
            sleep(1);
            }
         }
        return 0;
      }

      答:

      (1)小于20秒2个进程
      (2)孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作
      僵尸进程:进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程
      20秒后只有一个进程,我们称为僵尸进程。

    培养目标6

    10.创建有名管道文件函数是: mkfifo

    11.有名管道,管道文件名chat.txt,编写A.c与B.c单向聊天
    (1)B发A收
    (2)程序具备退出功能
    答:本题不要求实现过程可以不写,只写程序,至于过程学习参考本站其它文章
    管道程序:

    #include "stdio.h"
    int main()
    {
       int ret;
       ret = mkfifo("./chat.txt",0777);
       if(ret == -1)
       {
         printf("mkfifo error\n");
         return -1;
       }
       return 0;
    }

    A端程序:(收方!!!)

    #include "stdio.h"
    #include "fcntl.h"
    #include "string.h"
    int main()
    {
       int fd;
       int i;
       char buf[32] = {0};
       fd = open("./chat.txt",O_RDONLY,0777);
       if(fd == -1)
       {
           printf("open error\n");
           return -1;
       }
       //start read
       while(1)
       {
           read(fd,buf,32);
           if(buf[0] == 'q')
           {
              break;
           }
           printf("buf = %s\n",buf);
           for(i = 0 ;i < 32; i++ )
           {
               buf[i] = 0;
           }
       }
       close(fd);
       return 0;
    }

    B端程序(发方):

    #include "stdio.h"
    #include "fcntl.h"
    #include "string.h"
    int main()
    {
       int fd;
       int i;
       char buf[32] = {0};
       fd = open("./chat.txt",O_WRONLY,0777);
       if(fd == -1)
       {
           printf("open error\n");
           return -1;
       }
       //start write
       while(1)
       {
           printf("please input send data\n");
           scanf("%s",buf);
           write(fd,buf,strlen(buf));
           if(buf[0] == 'q')
           {
               break;
           }
           for(i = 0 ;i < 32; i++ )
           {
               buf[i] = 0;
           }
       }
       close(fd);
       return 0;
    }

    补充知识点:高概率考点
    有名管道双向通信,并可靠退出

    培养目标7

    12 socket函数,UDP通信,参数: int type赋值为 SOCK_DGRAM
    13 SOC全称是 System on Chip称为芯片级系统或片上系统
    14 判断:AHB总线下挂接都是高速模块,如LCD控制器、中断控制器等 (×)
    15 判断ARM 公司不生产芯片 (√)
    16 简答:CPU、SOC和嵌入式产品关系:
    三个要点:1 CPU是一台计算机的运算核心和控制核心。(第一句必答,后面可以简写)CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。主要功能是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。2.SOC单片系统或片上系统是一个将电脑或其他电子系统集成到单一芯片的集成电路。(第一句必答,后面可以简写)单片系统可以处理数字信号、模拟信号、混合信号甚至更高频率的信号。单片系统常常应用在嵌入式系统中。单片系统的集成规模很大,一般达到几百万门到几千万门。SoC 可以基于 MCU 或 MPU,并将提供执行某些类型的应用程序所需的一切。3.嵌入式产品的核心是嵌入式微处理器,是面向特定应用的嵌入式CPU。(第一句必答,后面可以简写)与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式产品设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

    17.综合题:LED问题(本文推荐用电脑或平板观看,手机可能看不清)
    预测题目:点亮GPF4的LED灯,实现其亮灭,将下面程序3个空区域补充完整。
    (去年题目是点亮GPF4、5、6。看明白下面程序后可以同学自行尝试做一下,不过据说今年考点亮一个)
    平台原理图:

    例图:
    Test
    控制与数据端口

    程序:(可能与部分同学拍的略微不同,但是程序是一个意思,变量我图快方便写换了一部分,不影响,while循环改成for也是一个道理,这个东西很灵活 表情

    //#include "global.h"
    #define  GPFCON    0x56000050
    #define  GPFDAT    0x56000054
    #define  MPLLCON   0x4C000004
    #define  CLKDIVN   0x4C000014
    void init_system_clock()
    {
           int *p;
           p = (int *)CLKDIVN;
           *p = 0x03;            // FCLK:HCLK:PCLK=4:2:1, HDIVN=1,PDIVN=1  
                __asm__
             {
                            mrc    p15, 0, r1, c1, c0, 0      
                            orr    r1, r1, #0xc0000000        
                            mcr    p15, 0, r1, c1, c0, 0     
             }
           p = (int *)MPLLCON;
           *p =  (0x5c<<12)|(0x01<<4)|(0x02);
    }
    void mymain()
    {
          int *p;
          int  i;
          init_system_clock(); //FCLK:HCLK:PCLK=200:100:50MHZ
          (1)------------
          while(1)
            {
                  
    
                (2)------------
                 for(i = 0 ;i < 10000; i ++);
                (3)------------
                 for(i = 0 ;i < 10000; i ++);
            }            
            return ;
    }

    解答:


    注意答案不唯一:下面提供一种好理解的

    LED会有变动,后面有时间出教程,希望能先理解下面程序这个是什么意思

    (1)填写

          p = (int *)GPFCON;
          *p = ((*p) | (1 << 8));
          *p = ((*p) & (~(1 << 9)));
          p = (int *)GPFDAT;

    (2)填写 *p = ((*p) & (~(1 << 4)));
    (3)填写 *p = ((*p) | (1 << 4));

    培养目标8

    18.rmmod功能:将驱动程序从liunx内核卸载;lsmod:查看内核中存在哪些模块
    19.判断:驱动程序设备号分主设备号和次设备号 (√)
    20.判断:驱动程序和应用程序一样有main函数 (×)

    71

    打赏

    海报

    正在生成.....
    Linux sleep函数
    « 上一篇 2021-06-10
    奇函数积分是偶函数吗?偶函数积分是奇函数吗?
    下一篇 » 2021-06-09

    评论 (252)

    取消
    1. 头像
      刘航宇的粉丝 Lv.1
      惠州 ·Windows 10 · Google Chrome
      沙发

      表情

      回复 删除 垃圾
      1. 头像
        刘航宇 Lv.6 作者
        咸阳 ·Windows 10 · Google Chrome
        @ 刘航宇的粉丝

        表情表情表情

        回复 删除 垃圾
    2. 头像
      Lv.1
      XX ·Windows X64 · QQ Browser
      板凳

      星辰

      回复 删除 垃圾
    3. 头像
      Lv.1
      XX ·Windows X64 · QQ Browser
      地毯

      回复 删除 垃圾
    4. 头像
      n Lv.1
      武汉 ·Windows X64 · QQ Browser
      第4楼

      表情

      回复 删除 垃圾
    5. 头像
      jk Lv.1
      XX ·Windows X64 · QQ Browser
      第5楼

      表情

      回复 删除 垃圾
    6. 头像
      1 Lv.1
      马鞍山 ·Android · QQ Browser
      第6楼

      表情

      回复 删除 垃圾
    7. 头像
      zxz Lv.1
      XX ·Windows X64 · QQ Browser
      第7楼

      哇!

      回复 删除 垃圾
    8. 头像
      123 Lv.1
      马鞍山 ·Windows X64 · QQ Browser
      第8楼

      牛啊

      回复 删除 垃圾
    9. 头像
      123 Lv.1
      马鞍山 ·Windows X64 · QQ Browser
      第9楼

      牛啊

      回复 删除 垃圾
    10. 头像
      q Lv.1
      XX ·Windows 10 · Google Chrome
      第10楼

      回复 删除 垃圾
      1. 头像
        停云时雨 Lv.1
        宿州 ·Windows X64 · QQ Browser
        @ q

        六啊

        回复 删除 垃圾
    11. 头像
      感谢 Lv.1
      合肥 ·Windows X64 · QQ Browser
      第11楼

      感谢

      回复 删除 垃圾
    12. 头像
      懵的 Lv.1
      合肥 ·Windows X64 · QQ Browser
      第12楼

      感想分享

      回复 删除 垃圾
    13. 头像
      懵的 Lv.1
      合肥 ·Windows X64 · QQ Browser
      第13楼

      感想分享

      回复 删除 垃圾
    14. 头像
      吴徐一 Lv.1
      马鞍山 ·Windows X64 · QQ Browser
      第14楼

      厉害

      回复 删除 垃圾
    15. 头像
      柒柒 Lv.1
      XX ·Windows X64 · QQ Browser
      第15楼

      厉害

      回复 删除 垃圾