美文网首页
物理与光电学院《嵌入式系统》复习内容

物理与光电学院《嵌入式系统》复习内容

作者: aiyolo | 来源:发表于2017-06-07 19:33 被阅读154次

    来源: https://shimo.im/doc/dvSE3Wj0mTILi7BF

    1. ROM, RAM, SRAM, DRAM, SDRAM, FLASH存储器的特点。
      【答】
      ROM为只读内存,在断电后仍可以保持数据;
      RAM为随机存取内存,断电后丢失数据;
      SRAM为静态RAM,速度非常快;
      DRAM为动态RAM,保留数据时间短,速度比SRAM慢,但比任何ROM都快;
      SDRAM为同步动态RAM,拥有DRAM的所有特点;
      FLASH为闪存,具有ROM和RAM的长处,断电保持数据,同时快速读取数据

    2. ARM7采用的 I/O编址方式。

    【答】I/O接口与存储器统一编址

    1. Samsung S3C44B0x存储器单元特点和分组特点。

    【答】
    支持大小端模式,通过外部引脚来选择
    包含8个地址空间,Bank0-Bank7,每个地址空间32MB
    所有地址空间都可以通过编程设置8为、16位、32为宽数据对齐访问
    Bank0-Bank5支持ROM、SRAM,Bank6,Bank7支持ROM,SRAM,FP/EDO/SDRAM等
    Bank0-Bank5起始地址、大小固定,Bank6起始地址固定但大小可变,Bank7与Bank6大小相同

    1. ARM处理器异常组成,特点和地址分配。

    【答】
    异常组成:
    指令执行引起的直接异常:如软件中断,未定义指令,预取指中止
    指令执行引起的间接异常:数据中止
    外部产生的与指令流无关的异常:复位,IRQ,FIQ

    特点:
    发生异常中断时,ARM进入相应的异常模式,然后从异常向量表中对应的异常地址开始执行中断处理程序。
    地址分配:
    复位:0x0
    未定义指令:0x4
    软件中断:0x8
    指令预取中止:0xC
    数据访问中止:0x10
    外部中断请求:0x18
    快速中断请求:0x1c

    1. Samsung S3C44B0x 寻址特点。

    【答】
    内存访问要通过LDR,STR指令

    1. ARM7中, STMED SP!, {R0-R12, LR}指令执行过程和 SP的变化。

    【答】
    空递减堆栈,R0->[sp],R1->[sp-0x4],...,R12->[sp-0x30],LR->[sp-0x34],最后sp->sp-0x38

    1. Samsung S3C44B0x矢量和非矢量中断的过程。

    2. ARM7指令系统中,哪类指令可以访问存储器。

    【答】str,ldr,stm,ldm

    1. 堆栈操作指令。

    【答】stm/ldm(ia,ib,da,db,fa,fd,ea,ed)

    1. 嵌入式系统启动代码流程。

    【答】
    (1)启动代码的第一步是设置中断和异常向量。
    (2)完成系统启动所必须的最小配置,某些处理器芯片包含一个或几个全局寄存器,这些寄存器必须在系统启动的最初进行配置。
    (3)设置看门狗,用户设计的部分外围电路如果必须在系统启动时初始化,就可以放在这一步。
    (4)配置系统所使用的存储器,包括 Flash,SRAM和 DRAM等,并为他们分配地址空间。如果系统使用了 DRAM或其它外设,就需要设置相关的寄存器,以确定其刷新频率,数据总线宽度等信息,初始化存储器系统。有些芯片可通过寄存器编程初始化存储器系统,而对于较复杂系统通常集成有 MMU来管理内存空间。
    (5)为处理器的每个工作模式设置栈指针, ARM处理器有多种工作模式,每种工作模式都需要设置单独的栈空间。
    (6)变量初始化,这里的变量指的是在软件中定义的已经赋好初值的全局变量,启动过程中需要将这部分变量从只读区域,也就是 Flash拷贝到读写区域中,因为这部分变量的值在软件运行时有可能重新赋值。还有一种变量不需要处理,就是已经赋好初值的静态全局变量,这部分变量在软件运行过程中不会改变,因此可以直接固化在只读的Flash或 EEPROM中。
    (7)数据区准备,对于软件中所有未赋初值的全局变量,启动过程中需要将这部分变量所在区域全部清零。
    (8)最后一步是调用高级语言入口函数,如 main函数等。

    1. ARM7中,调用子程序和实现从子程序返回的指令。

    【答】BL xxx, MOV PC,R14

    1. Samsung S3C44B0x异常矢量表。

    【答】
    复位:0x0
    未定义指令:0x4
    软件中断:0x8
    指令预取中止:0xC
    数据访问中止:0x10
    外部中断请求:0x18
    快速中断请求:0x1c

    1. ARM7三级流水线

      【答】
      取值,译码,执行
      取值,译码,执行
      取值,译码,执行

    2. Samsung S3C44B0x 执行指令 LDR R2, =0x01C80000;LDR R1, [R2,#8]!后,选中的地址空间。

    【答】[0x01c80008]->R1, R2+0x8->R2, 执行后R2=0x01c80008

    1. ARM7中 ,若 SP=0x2028,执行指令STMED SP!, {R0-R4, R5, R6, R7, LR}后 SP值。

    【答】sp=0x2028-9*4=0x2004

    1. ARM7处理器异常(EXCEPTIONS) 中断的优先级

      【答】1、复位; 2、数据异常中止; 3、fiq; 4、irq; 5、预取指异常; 6、swi,未定义指令

    2. ADDHIS R5, R4, R3, LSL R2的十六进制机器码。

    Shift type: 00 = logical left, 01 = logical right,
    10 = arithmetic right, 11 = rotate right

    【答】
    31-27
    27-26
    25
    24-21
    20
    19-16
    15-12
    11-8
    7
    6-5
    4
    3-0

    cond(HI)
    00

    (Rs)

    opcode(add)
    S
    Rn(R4)
    Rd(R5)
    Rs(R2)
    0
    sh(lsl)
    1
    Rm(R3)

    1000
    00
    0
    0100
    1
    0100
    0101
    0010
    0
    00
    1
    0011

    0b1000-0000-1001-0100-0101-0010-0001-0011
    0x8094-5213

    1. S3C44B0X 存储控制器。

    【答】

    1. S3C44B0X I/O端口。

    【答】
    外围器件地址分配:
    nGCS0
    flash
    BANKCON0
    0x0~0x01BF-FFFF

    nGCS6
    sdram
    BANKCON6
    0x0c00-0000~0x0dff-ffff

    中断分配:int0-触摸屏中断源,int2-键盘中断源
    I/O端口分配:A-F

    20.S3C44B0X 中断控制器。

    【答】
    30个中断源
    向量irq中断模式减少中断响应周期
    外部中断源的电平/边沿模式
    可编程的电平/边沿极性
    支持fiq

    1. S3C44B0X 时钟和电源管理 。

    【答】
    电源管理方案:
    正常模式:时钟向cpu和外设提供时钟信号
    低速模式:外部时钟(非pll)作为主时钟
    空闲模式:时钟断开与cpu的连接,仍提供外设时钟信号
    停止模式:通过禁止pll来冻结cpu和外设提供时钟信号
    SL空闲模式:cpu和除lcd之外所有外设的时钟都被禁止

    1. S3C44B0X CPU wrapper 和总线优先权。

    【答】

    1. S3C44B0X 看门狗定时器。

    【答】
    片内集成,属于软件看门狗
    受到故障时,能继续控制器的操作。可作为16位定时器请求中断服务,并在每128个MCLK后产生周期复位信号

    带中断请求的普通间隔定时器模式
    计数值达到0时,内部复位信号被激活128个MCLK周期
    16位看门狗定时器
    定时器溢出时,发生中断请求或系统复位

    1. CISC和 RISC (Reduced Instruction Set Computing)的主要特征

      【答】
      CISC:复杂指令集,高性能,指令长度不相等,指令较多,难以实现流水线操作
      RISC:简单指令集,指令格式长度固定,指令类型少,寻址方式少而简单,只有Load/Store结构的存取指令能访问内存

    2. 下列常用的指令作用:

    (1)

    0x00000000: b Reset_Handler

    0x00000004: b Undefined_Handler

    0x00000008: b SWI_Handler

    0x0000000C:b Prefetch_Handler

    0x00000010: b Abort_Handler

    0x00000014: b. ;Reserved vector

    0x00000018: b IRQ_Handler

    0x0000001C: b FIQ_Handler

    【答】当中断请求产生时,根据上面的中断向量表,跳转到相应的中断处理程序

    (2)

    /* copy kernel from Flash address 0x10000 to RAM address 0xc300000 */

    ldr r0, =0x10000

    ldr r1, =0xc300000

    add r2, r0, #(1536*1024)

    copy_kernel:

    ldmia r0!, {r3-r10}

    stmia r1!, {r3-r10}

    cmp r0, r2

    ble copy_kernel

    /* jump to ram */

    ldr r0, =0xc300000

    mov pc, r0

    【答】将以0x10000为起始地址flash地址的连续1536*1024个字节复制到以0xc300000为起始地址的RAM内存地址,最后跳转到0xc300000的RAM中执行指令

    (3)

    ldr r0, =SMRDATA

    ldmia r0, {r1-r13}

    ldr r0, =0x01c80000 ; BWSCON Address

    stmia r0, {r1-r13}

    SMRDATA DATA

    DCD 0x22221210 ; BWSCON

    DCD 0x00000600 ; GCS0

    DCD 0x00000700 ; GCS1

    DCD 0x00000700 ; GCS2

    DCD 0x00000700 ; GCS3

    DCD 0x00000700 ; GCS4

    DCD 0x00000700 ; GCS5

    DCD 0x0001002a ; GCS6, EDO DRAM (Trcd=3, Tcas=2, Tcp=1,

    CAN=10bit)

    DCD 0x0001002a ; GCS7, EDO DRAM

    DCD 0x00960000 + 953 ; Refresh (REFEN=1, TREFMD=0, Trp=3,

    Trc=5, Tchr=3)

    DCD 0x00000000 ; Bank Size, 32MB/32MB

    DCD 0x00000020 ; MRSR 6(CL=2)

    DCD 0x00000020 ; MRSR 7(CL=2)

    【答】
    取smrdata 数据段里的内容存放到寄存器{r0-r13}
    再把{r0-r13}寄存器的内容存入地址0x01c80000,相当于给BWSCON,GCS0...等寄存器赋值

    1. ARM7 reset后的PC地址,如何处理复位。下列指令写入FLash后的地址。

    Vectors

    b ResetHandler ; for debug

    b HandlerUndef ; handlerUndef

    b HandlerSWI ; SWI interrupt handler

    b HandlerPabort ; handlerPAbort

    b HandlerDabort ; handlerDAbort

    b . ; handlerReserved

    ldr pc, =HandlerIRQ

    b HandlerFIQ

    【答】
    在上电后首先处理复位中断,跳转到相应的子程序,在子程序里初始化硬件配置;依次是0x0,0x4..

    1. 矢量中断方式中,下列指令执行过程。

    HandlerEINT4567 ;HANDLER HandleEINT4567

    sub sp, sp, #4 ;reserved for PC

    stmfd sp!,{r8-r9}

    ldr r8, =HandleEINT4567

    ldr r9, [r8 ]

    str r9,[sp,#8]

    ldmfd sp!,{r8-r9,pc}

    【答】
    sp地址减4,将r8-r9推入堆栈,sp指向[sp-12],取HandlerEINT4567地址的内容给r9,并存入[sp-4],入栈操作,r8-r9恢复原来数据,pc=HandlerEINT4567第一条指令的16进制编码,sp重新指向[sp]
    sp

    sp-4
    HandlerEINT4567地址的内容

    sp-8
    r9

    sp-12
    r8

    1. 如何用 ARM汇编语言实现中断的初始化。 (没做完)

    void init_int(void)

    {

    // interrupt settings

    rI_ISPC = 0x3ffffff; // clear interrupt pending register

    rEXTINTPND = 0xf; // clear EXTINTPND register

    rINTMOD = 0x0; // all for IRQ mode

    rINTCON = 0x1; // nonVectored mode, IRQ disable, FIQ

    disable

    rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567);

                   // set EINT interrupt handler   
    

    pISR_EINT4567 = (int)int4567_isr;

    // PORT G configuration

    rPCONG = 0xffff; // EINT7~0

    rPUPG = 0x0; // pull up enable

    rEXTINT = rEXTINT | 0x22220020; // EINT4567 falling edge

    mode

    rI_ISPC |= BIT_EINT4567;

    rEXTINTPND = 0xf; // clear EXTINTPND reg

    }

    【答】
    rI_ISPC EQU 0X3FFFFFFF
    rEXTINTPND EQU 0xf
    rINTMOD EQU 0x0
    rINTCON EQU 0x1
    ;rINTMSK EQU :NOT:(BIT_GLOBAL|BIT_EINT4567)
    ;pISR_EINT4567 = (int)int4567_isr;
    // PORT G configuration
    rPCONG EQU 0xffff; // EINT7~0
    rPUPG EQU 0x0; // pull up enable

    rEXTINT EQU rEXTINT :OR: 0x22220020; // EINT4567 falling edge
    mode
    rI_ISPC |= BIT_EINT4567;
    rEXTINTPND EQU 0xf; // clear EXTINTPND reg

    1. 把内存中从 0x00000000开始的 32Bytes写入 SDRAM中。

    【答】
    ldr r0, =0x0
    ldr r1, =0xc000000
    ldmia r0!,{r3-r10}
    stmia r1!,{r3-r10}

    33.如何实现:把0x00000000~0x00000003空间中的32位二进制机器码由高位到低位用LED亮/灭时间顺序显示,亮表示1,灭表示0,亮/灭时间各1s。

    【答】
    参考28题,利用GPB5实现。 (PCONB: Address 0x01D20008,PDATB: Address 0x01D2000C)

         area test,code,readonly
         entry
         code32 
            
         ldr r0, =0x01D20008
    

    ;取端口 B的控制寄存器端口地址
    ldr r1, [r0] ;保留原来设置
    ldr r2, =0xFFFFFFDF
    and r1,r1,r2 ;端口 B的控制字为 PB[5]=0, 作为输出端口
    str r1,[r0]

          ldr r0, =0x01D2000C
          ldr r5, [r0]
          ldr r10, =0x7DF
          ldr r11, =0x020
                   
         ldr r1, =0x0
         ldr r3,[r1]        ;把0x00000000~0x00000003空间中的32位二进制机器码取出给r3
         ror r3,#26
    

    loop
    ror r3,#1
    bic r4,r3,r2
    cmp r4,r11
    beq led_on

    led_off
    orr r5,r5,r11
    str r5, [r0] ;向端口B数据寄存器写入PB[5]=1, 使LED灭

         bl delay1s         ;延时 1秒 
         b judge
    

    led_on
    and r5,r5,r10
    str r5, [r0] ;向端口B数据寄存器写入PB[5]=0, 使LED亮
    bl delay1s ;延时 1秒

    judge
    add r6,r6,#1
    cmp r6,#31
    bls loop

        b .
        end 
    

    来源: https://shimo.im/doc/dvSE3Wj0mTILi7BF

    相关文章

      网友评论

          本文标题:物理与光电学院《嵌入式系统》复习内容

          本文链接:https://www.haomeiwen.com/subject/ueuafxtx.html