[课程背景]
    当今嵌入式领域中使用最为广泛的是基于ARM体系结构的嵌入式处理器,其占据了80%以上的32位嵌入式处理器市场份额,从发展之初至今,ARM公司已经推出ARM7,ARM9,ARM9E,ARM10,SecurCore以及Cortex系列的处理器内核。目前,世界上各大芯片生产商纷纷推出自己的ARM芯片,并且越来越多地在工业控制、通信领域、消费类电子产品等发展方向上广泛应用。本课程通过详细介绍ARM的基础体系结构、 ADS开发工具的使用和开发技巧、及大量的应用动手实验让学员快速掌握ARM嵌入式开发要领。
[质量保证]
  ·所有课程内容均可免费重听,直到学员完全掌握为止。
  ·凡是亚嵌学员,在以后工作中遇到课程相关问题,可得到免费技术支持。
  ·雄厚的师资力量、经典的课程体系、丰富的教学经验确保教学质量。
  ·成绩优秀的学员可免费到亚嵌合作单位实习、就业。
[培养对象]
  有志从事ARM嵌入式开发的工程技术人员、本科二年级及以上相关专业的在校大学生;
  有兴趣深入了解ARM体系结构的技术爱好者、以及从事相关硬件设计工作的技术人员。
[学习目标]
  ·了解ARM结构,熟悉ADS开发工具的使用;
  ·系统掌握ARM的体系结构、各种寄存器以及ARM指令集;
  ·理解ARM下的中断和异常的处理机制及处理办法;
  ·掌握ADS下ARM开发的相关编程技巧;
  ·掌握ARM平台下常用外设接口程序设计;;
  ·ARM Bootloader启动原理分析以及设计实现;
[基础要求]
  ·学员学习本课程应具备下列基础知识:
  ·有微机原理和汇编语言的基础;
  ·熟悉C语言编程;
[课程教材]
  《亚嵌 ARM开发实验班内部讲义》
[参考资料]
  《ARM嵌入式处理器结构与应用基础》,北航出版社,马忠梅著,2002
  《ARM体系结构与编程》,北京清华大学出版社,杜春雷编著,2003
[教师简介]
    李明,清华大学计算机系硕士,亚嵌金牌讲师,10年软件开发经验,5年嵌入式行业教学经验。是www.lumit.org开源项目lumit(嵌入式个人学习网)的创办者,《源码开放的嵌入式系统软件分析与实践——基于 SKYEYE 和 ARM 开发平台》一书作者, SkyEye 嵌入式开源项目核心开发成员。国内最早将 uC/OS-II 实时操作系统移植到 SkyEye 模拟器上,独立设计并实现 CEBus 协议的解释器,并将其移植到 ColdFire 平台;曾负责国家高技术研究发展计划项目-微小型直升机控制系统设计与姿态控制研究项目,并且基于 RTLinux 实时操作系统完成了“国家863计划-虚拟漫游智能机器人平台项目”的控制软件总体设计和实施。
[开课情况]
  开课时间: 5天 (30学时)
  上课地点:中科院校区
  学    费:公司=3800元;个人=3200元;学生=2600元
            为保证教学质量,本班为小班授课,15人为满,报满15人即停止报名或顺延下一期,如您决定上课请
  及时填写报名表并办理报名手续。(报名时需携带本人身份证复印件1张及本人一寸照片3张)
   课程安排 课程内容
第一天上午
理论课
3学时

嵌入式系统概述与ARM简介
      1 ARM处理器与其他体系结构处理器异同比较
      2 ARM芯片选型
      3 ARM外围硬件设计
      4 ARM程序和算法
      5 ARM操作系统(uC/OS-II/ARM Linux/uCLinux/WinCE)
ARM知识体系
      1 ARM的特点(体系结构/流水线/异常处理/寄存器组织)
      2 ARM内核概述(内核命名/应用内核/嵌入式内核/安全内核)
      3 ARM内核系列ARM7/ARM9/ARM9E/ARM10E/ARM11/StrongARM/XScale

第一天下午
实验课
3学时

ARM 开发工具实验 (实验1-8)
      实验1:安装开发工具实验 (ADS+AXD)
      实验2:ADS 编程实验 (helloworld)
      实验3:AXD 调试实验 (debug)
      实验4:ARM 工具链实验 (armcc+armasm+armlink)
      实验5:fromelf 实用工具实验 (fromelf)
      实验6:uuencode 编码工具实验 (uuencode)
      实验7:使用 Jtag 调试开发板实验
      实验8:使用 Bootloader 下载执行实验

第二天上午
理论课
3学时

ARM结构与编程
      1 ARM的工作模式
      2 ARM存储器格式
      3 ARM运行模式
      4 ARM寄存器组织
      5 ARM的异常
      6 流水线
      7 AHBA总线
ARM指令系统与汇编语言编程
      1 ARM指令概述与特点
      2 ARM寻址方式
      3 ARM指令集
      4 Thumb指令集
      5 ARM汇编语言编程

第二天下午
实验课
3学时

ARM 体系结构与汇编语言实验(实验9-16)
      实验9:ARM 数据处理指令操作数寻址方式实验
      实验10:ARM 内存访问指令寻址实验
      实验11:ARM 堆栈指针寄存器实验 (r13)
      实验12:ARM 返回连接寄存器实验 (r14)
      实验13:ARM 程序计数器实验(r15)
      实验14:ARM 程序状态寄存器实验(cpsr+spsr)
      实验15:ARM 工作模式切换实验(svc+irq)
      实验16:ARM 汇编与C语言混合编程实验

第三天上午
理论课
3学时

使用ARM ADS 开发工具的方法、流程和技巧
      1 编译器参数(armcc/armcpp/armasm)
      2 链接器使用(armlink/scatter-file)
      3 调试器及调试工具(axd/jtag)
      4 辅助开发工具(fromelf/armprof/nmake/Makefile)
      5 内存地址重映射(memory remap)
      6 堆栈初始化(stack&heap)
      7 RO/RW/ZI 段地址分配
      8 系统呼叫机制(SoftWare Interrupt)

第三天下午
实验课
3学时

ARM 开发板外设接口实验(实验17-24 )
      实验17:ARM 开发板-启动代码烧写实验
      实验18:ARM 开发板-LED显示灯实验
      实验19:ARM 开发板-七段数码管实验
      实验20:ARM 开发板-四位拨段开关实验
      实验21:ARM 开发板-蜂鸣器实验
      实验22:ARM 开发板-中断按钮实验
      实验23:ARM 开发板-定时器实验
      实验24:ARM 开发板-串口通讯实验

第四天上午
实验课
3学时

ARM启动代码工作原理
      1 启动代码基本概念和执行流程
      2 全局变量和局部变量的存储结构
      3 程序的存储和加载过程
      4 RO、RW以及ZI 段的存储特性
      5 启动代码的搬移过程
      6 启动代码的初始化流程

第四天下午
实验课
3学时

ARM Bootloader 编写实验(实验25-32)
      实验25:ARM Bootloader-ledblink实验
      实验26:ARM Bootloader-uart driver实验
      实验27:ARM Bootloader-printf实验
      实验28:ARM Bootloader-stdio实验
      实验29:ARM Bootloader-shell实验
      实验30:ARM Bootloader-command实验
      实验31:ARM Bootloader-flashwrite实验
      实验32:ARM Bootloader-autoboot实验

第五天上午
理论课
3学时

ARM异常和中断处理
      1 异常向量表(exception vector table)
      2 异常响应
      3 产生异常后的处理过程
      4 未定义指令异常的特殊用途
      5 SWI 软中断指令与系统调用
      6 异常返回处理流程

第五天下午
实验课
3学时

ARM 异常和中断处理实验(实验33-40)
      实验33:ARM异常向量表实验
      实验34:ARM软中断 SWI 异常发生和响应实验
      实验35:ARM GPIO中断源使能触发实验
      实验36:ARM GPIO中断处理和响应实验
      实验37:ARM Timer定时器中断源使能触发实验
      实验38:ARM Timer定时器中断处理和响应实验
      实验39:ARM中断流程代码分层实验
      实验40:ARM中断驱动框架实验