欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    嵌入式处理器架构与程式设计课件.ppt

    • 资源ID:1559236       资源大小:237KB        全文页数:72页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式处理器架构与程式设计课件.ppt

    嵌入式處理器架構與程式設計,王建民中央研究院 資訊所2008年 7月,2,Contents,IntroductionComputer ArchitectureARM ArchitectureDevelopment ToolsGNU Development ToolsARM Instruction SetARM Assembly LanguageARM Assembly ProgrammingGNU ARM ToolChainInterrupts and Monitor,Lecture 10Interrupts and Monitor,4,Outline,Exception Handling and Software InterruptsELF: Executable and Linking FormatARM Monitor and Program Loading,5,Normal Program Flow vs. Exception,Normally, programs execute sequentially (with a few branches to make life interesting) Normally, programs execute in user mode Exceptions and interrupts break the sequential flow of a program, jumping to architecturallydefined memory locations In ARM, SoftWare Interrupt (SWI) is the “system call” exception,6,ARM Exceptions,Types of ARM exceptions Reset: when CPU reset pin is asserted undefined instruction: when CPU tries to execute an undefined op-code software interrupt: when CPU executes the SWI instruction prefetch abort: when CPU tries to execute an instruction pre-fetched from an illegal addressdata abort: when data transfer instruction tries to read or write at an illegal address IRQ: when CPUs external interrupt request pin is asserted FIQ: when CPUs external fast interrupt request pin is asserted,7,The Programmers Model,Processor Modes (of interest)User: the “normal” program execution mode.IRQ: used for general-purpose interrupt handling.Supervisor: a protected mode for the operating system.The Register SetRegisters R0-R15 + CPSRR13: Stack Pointer (by convention)R14: Link Register (hardwired)R15: Program Counter where bits 0:1 are ignored (hardwired),8,Terminology,The terms exception and interrupt are often confused Exception usually refers to an internal CPU eventfloating point overflow MMU fault (e.g., page fault) trap (SWI) Interrupt usually refers to an external I/O eventI/O device request reset In the ARM architecture manuals, the two terms are mixed together,9,What do SWIs do?,SWIs (often called software traps) allow a user program to “call” the OS that is, SWIs are how system calls are implemented. When SWIs execute, the processor changes modes (from User to Supervisor mode on the ARM) and disables interrupts.,10,SWI Example,Types of SWIs in ARM Angel (axd or armsd)SWI_WriteC(SWI 0) Write a byte to the debug channel SWI_Write0(SWI 2) Write the nullterminated string to debug channel SWI_ReadC(SWI 4) Read a byte from the debug channel SWI_Exit(SWI 0 x11) Halt emulation this is how a program exits SWI_EnterOS(SWI 0 x16) Put the processor in supervisor mode SWI_Clock(SWI 0 x61) Return the number of centiseconds SWI_Time(SWI 0 x63) Return the number of secs since Jan. 1, 1970,11,What happens on an SWI?1,The ARM architecture defines a Vector Table indexed by exception type One SWI, CPU does the following: PC 0 x08 Also, sets LR_svc, SPSR_svc, CPSR (supervisor mode, no IRQ),12,What happens on an SWI?2,Not enough space in the table (only one instruction per entry) to hold all of the code for the SWI handler function This one instruction must transfer control to appropriate SWI Handler Several options are presented in the next slide,13,“Vectoring” Exceptions to Handlers,Option of choice: Load PC from jump table (shown below) Another option: Direct branch (limited range),14,What happens on SWI completion?,Vectoring to the S_Handler starts executing the SWI handler When the handler is done, it returns to the program at the instruction following the SWI MOVS restores the original CPSR as well as changing pc,15,How to determine the SWI number?,All SWIs go to 0 x08,16,SWI Instruction Format,Example: SWI 0 x18,17,Executing SWI Instruction,On SWI, the processor(1) copies CPSR to SPSR_SVC (2) set the CPSR mode bits to supervisor mode (3) sets the CPSR IRQ to disable (4) stores the value (PC + 4) into LR_SVC (5) forces PC to 0 x08,LDR r0,lr,#4BIC r0,r0,#0 xff000000R0 holds SWI number,MOVS pc, lr,SWI Handler(S_Handler),18,Jump to “Service Routine”,LDR r0,lr,#4BIC r0,r0,#0 xff000000switch (r0) case 0 x00: service_SWI1(); case 0 x01: service_SWI2(); case 0 x02: service_SWI3();,MOVS pc, lr,SWI Handler(S_Handler),On SWI, the processor(1) copies CPSR to SPSR_SVC (2) set the CPSR mode bits to supervisor mode (3) sets the CPSR IRQ to disable (4) stores the value (PC + 4) into LR_SVC (5) forces PC to 0 x08,19,Problem with The Current Handler,On SWI, the processor(1) copies CPSR to SPSR_SVC (2) set the CPSR mode bits to supervisor mode (3) sets the CPSR IRQ to disable (4) stores the value (PC + 4) into LR_SVC (5) forces PC to 0 x08,LDR r0,lr,#4BIC r0,r0,#0 xff000000switch (r0) case 0 x00: service_SWI1(); case 0 x01: service_SWI2(); case 0 x02: service_SWI3();,MOVS pc, lr,SWI Handler(S_Handler),What was in R0? User program may have been using this register. Therefore, cannot just use it must first save it,20,Full SWI Handler,S_Handler:SUB sp, sp, #4 leave room on stack for SPSR STMFD sp!, r0r12, lr store users gp registersMRS r2, spsr get SPSR into gp registersSTR r2, sp, #14*4 store SPSR above gp registersMOV r1, sp pointer to parameters on stack LDR r0, lr, #4 extract the SWI number BIC r0,r0,#0 xff000000 get SWI # by bit-maskingBL C_SWI_handler go to handler (see next slide) LDR r2, sp, #14*4 restore SPSR (NOT “sp!”)MSR spsr_csxf, r2 csxf flagsLDMFD sp!, r0r12, lr unstack users registers ADD sp, sp, #4 remove space used to store SPSR MOVS pc, lr return from handler,gp = general-purpose,SPSR is stored above gp registers since the registers may contain system call parameters (sp in r1),21,C_SWI_Handler,void C_SWI_handler(unsigned number, unsigned *regs) switch (number) case 0: /* SWI number 0 code */ break; case 1: /* SWI number 1 code */ break; . case 0 x100: puts(“SWI 0 x100 trigged!n”); break;. case XXX: /* SWI number XXX code */ break; default: /* end switch */ /* end C_SWI_handler() */,22,Loading the Vector Table,/* For 18-349, the Vector Table will use the LDR PC, PC, * offset springboard approach */unsigned Install_Handler(unsigned int routine, unsigned int *vector) unsigned int pcload_instr, old_handler, *soft_vector; pcload_instr = *vector; /* read the Vector Table instr (LDR .) */ pcload_instr ,23,.text .align 2 .global triggertrigger: STMFD sp!, lr SWI #0 x100 LDMFD sp!, pc,extern void S_Handler();extern void trigger();int main() unsigned *swivec = (unsigned *) 0 x08; unsigned backup; backup = Install_Handler (unsigned) S_Handler, swivec); trigger(); Install_Handler (backup, swivec);,Example: SWI Application,24,Exercise #3,Write a service routine that receives a file name from a trigger and display the first lines of the file on the screen.Void service101(char *filename);Write a trigger that pass a file name as an argument to the above service routine through SWI #0 x101.void trigger101(char *filename);Write a main program to perform a demonstration.,25,Outline,Exception Handling and Software InterruptsELF: Executable and Linking FormatARM Monitor and Program Loading,26,Introduction to ELF,Executable and Linking FormatDeveloped by Unix System Lab.Default binary format on Linux, Solaris 2.x, etcSome of the capabilities of ELF are dynamic linking, dynamic loading, imposing runtime control on a program, and an improved method for creating shared libraries.The ELF representation of control data in an object file is platform independent.,27,Three Types of ELF Files,Relocatable filedescribes how it should be linked with other object files to create an executable file or shared library.Executable filesupplies information necessary for the operating system to create a process image suitable for executing the code and accessing the data contained within the file.Shared object filecontains information needed in both static and dynamic linking.,28,ELF File Format,Two views for each of the three file types.Linking view and execution viewThese views support both the linking and execution of a program.Linking view is partitioned by sections.Execution view is partitioned by segments.The ELF access library, libelf, provides tools to extract and manipulate ELF object files.,29,ELF File Format (cont.),Linking View Execution View,30,Example: readelf,We can use “readelf” to output ELF informationExampleuse “-e” option to read all header from the executable file of “hello.c”,$ cat hello.c/* hello.c, a simple example program */#define GREETING Hello, World!nint main() puts(GREETING);$ arm-elf-gcc o hello.elf hello.c$ arm-elf-readelf e hello.elf,31,Example: ELF Header,ELF Header: Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2s complement, little endian Version: 1 (current) OS/ABI: ARM ABI Version: 0 Type: EXEC (Executable file) Machine: ARM Version: 0 x1 Entry point address: 0 x8100 Start of program headers: 52 (bytes into file) Start of section headers: 168152 (bytes into file) Flags: 0 x202, has entry point, GNU EABI, software FP Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 1 Size of section headers: 40 (bytes) Number of section headers: 25 Section header string table index: 22,32,Example: Section Header,Section Headers: Nr Name Type Addr Off Size ES Flg Lk Inf Al 0 NULL 00000000 000000 000000 00 0 0 0 1 .init PROGBITS 00008000 008000 000020 00 AX 0 0 4 2 .text PROGBITS 00008020 008020 0030e8 00 AX 0 0 4 3 .fini PROGBITS 0000b108 00b108 00001c 00 AX 0 0 4 4 .rodata PROGBITS 0000b124 00b124 000020 00 A 0 0 4 5 .data PROGBITS 0000b244 00b244 00092c 00 WA 0 0 4 6 .eh_frame PROGBITS 0000bb70 00bb70 000004 00 A 0 0 4 7 .ctors PROGBITS 0000bb74 00bb74 000008 00 WA 0 0 4 8 .dtors PROGBITS 0000bb7c 00bb7c 000008 00 WA 0 0 4 9 .jcr PROGBITS 0000bb84 00bb84 000004 00 WA 0 0 4 10 .bss NOBITS 0000bb88 00bb88 00010c 00 WA 0 0 4 11 .comment PROGBITS 00000000 00bb88 000288 00 0 0 1 12 .debug_aranges PROGBITS 00000000 00be10 000420 00 0 0 8 13 .debug_pubnames PROGBITS 00000000 00c230 000726 00 0 0 1 14 .debug_info PROGBITS 00000000 00c956 011f48 00 0 0 1 15 .debug_abbrev PROGBITS 00000000 01e89e 0031f4 00 0 0 1 16 .debug_line PROGBITS 00000000 021a92 002a14 00 0 0 1 17 .debug_frame PROGBITS 00000000 0244a8 000a14 00 0 0 4 18 .debug_str PROGBITS 00000000 024ebc 001406 01 MS 0 0 1 19 .debug_loc PROGBITS 00000000 0262c2 002be0 00 0 0 1 20 .stack PROGBITS 00080000 028ea2 000000 00 W 0 0 1 21 .debug_ranges PROGBITS 00000000 028ea2 000150 00 0 0 1 22 .shstrtab STRTAB 00000000 028ff2 0000e3 00 0 0 1 23 .symtab SYMTAB 00000000 0294c0 001590 10 24 ef 4 24 .strtab STRTAB 00000000 02aa50 0007f9 00 0 0 1Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific),33,Example: Program Header,Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0 x008000 0 x00008000 0 x00008000 0 x03b88 0 x03c94 RWE 0 x8000 Section to Segment mapping: Segment Sections. 00 .init .text .fini .rodata .data .eh_frame .ctors .dtors .jcr .bss,34,Data Representation,Support various processors with 8-bit bytes and 32-bit architectures.Intended to be extensible to larger or smaller architecture.,35,ELF Header1,It is always the first section of the file. Describes the type of the object file .Its target architecture, and the version of ELF it is using.The location of the Program Header table, Section Header table, and String table along with associated number and size of entries for each table are also given.Contains the location of the first executable instruction.,36,ELF Header2,#define EI_NIDENT 16typedef struct unsigned chare_identEI_NIDENT;/ file ID, interpretation Elf32_Halfe_type; / object file type Elf32_Halfe_machine; / target architecture Elf32_Worde_version; / ELF version Elf32_Addre_entry; / starting virtual address Elf32_Offe_phoff; / file offset to program header Elf32_Offe_shoff; / file offset to section header Elf32_Worde_flags; / processor-specific flags Elf32_Halfe_ehsize; / the ELF headers size Elf32_Halfe_phentsize; / program header entry size Elf32_Halfe_phnum; / program header entry number Elf32_Halfe_shentsize; / section header entry size Elf32_Halfe_shnum; / section header entry number Elf32_Halfe_shtrndx; / section header index for string Elf32_Ehdr;,37,Section Header,The section header table is an array of structures.A section header table index is a subscript into this array.Each entry correlates to a section in the file.The entry provides the name, type, memory image starting address, file offset, the sections size in bytes, alignment.,38,The Section Header Table,typedef struct Elf32_Wordsh_name;/ name of section, an indexElf32_Wordsh_type;/ type of sectionElf32_Wordsh_flags;/ section-specific attributesElf32_Addrsh_addr;/ memory location of sectionElf32_Offsh_offset;/ file offset to sectionElf32_Wordsh_size;/ size of sectionElf32_Wordsh_link;/ section type, dependentElf32_Wordsh_info;/ extra information, dependentElf32_Wordsh_addralign;/ address alignmentElf32_Wordsh_entsize;/ size of an entry in sectionElf32_Shdr;,39,ELF Sections,A number of types of sections described by entries in the section header table.Sections can hold executable code, data, dynamic linking information, debugging data, symbol tables, relocation information, comments, string tables, and notes.,40,Special Sections1,Various sections in ELF are pre-defined.A list of special sections.bssun-initialized mentversion control information.data and .data1initialized data present.debuginformation for symbolic debugging.dynamicdynamic linking information.dynstrstrings needed for dynamic linking.hashsymbol hash table.lineline number information for debugging,41,Special Sections2,A list of special sections (cont.).notefile notes .relname and .relanamerelocation data.rodata and .rodata1read-only data.shstrtabsection names.strtabthe strings that represent the namesassociated with symbol table entries.symtabsymbol table.textexecutable instructions,42,String Table,The object file uses these strings to represent symbol and section names.The first and last byte is defined to hold a null character.An empty string table section is permitted.Ex:,43,Symbol Table,Holds information needed to locate and relocate a programs symbolic definitions and references.A symbol table entry,typedef struct Elf32_Wordst_name; / symbol name, an index Elf32_Addrst_value; / symbol value Elf32_Wordst_size; / symbol size unsigned charst_info; / symbols type and binding attributes unsigned charst_other; / symbol visibility Elf32_Halfst_shndx; / relevant section header table index Elf32_Sym;,44,Program Header,Program headers are meaningful only for executable and shared object files.The program header table is an array of structures, each describing a segment or other information.An object file segment contains one or more sections.A file specifies its own program header size with the ELF headers e_phentsize & e_phnum.,45,The Program Header Table,typedef struct Elf32_Wordp_type;/ type of the segment Elf32_Offp_offset;/ file offset to segment Elf32_Addrp_vaddr;/ virtual address of first byte

    注意事项

    本文(嵌入式处理器架构与程式设计课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开