第1章嵌入式系统导论。
1.嵌入式系统的概念:
是以现代计算机技术为基础,以应用为中心,可以根据系统或用户需求(功能、可靠性、成本、体积、功耗、环境等),灵活裁剪软硬件模块的专用计算机系统。
2.嵌入式系统的分类及分类依据:
嵌入式系统由硬件和软件两大部分组成,用于实现对其他设备的控制、监视或管理等功能。前者是整个系统的物理基础,它提供软件运行平台和通信接口;后者实际控制系统的运行。
硬件:嵌入式微处理器、 外围电路、 外围硬件设备。
软件:bootloader 、嵌入式操作系统、用户的应用程序等。
3.几种典型嵌入式操作系统:(1) uc/os ii
2)uclinux
3)windows ce
4)嵌入式linux 等。
4.任务调度:
任务的调度有三种方式: 可抢占式、不可抢占式和时间片轮转。
【不可抢占式调度是指一个任务一旦获得cpu就独占其运行,除非由于某种原因使它决定放弃cpu的使用权;
可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;
当两个或两个以上任务有同样的优先级时,不同任务轮转使用cpu,直到系统分配的cpu时间片用完,这就是时间片轮转调度。】
目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的可抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。
5.针对有内存管理单元(mmu,memory management unit)的处理器而设计的一些桌面操作系统,如windows、linux,使用了虚拟存储器的概念。
6.计算机的发展:
冯诺依曼架构:将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。
哈佛结构(冯诺依曼架构的扩展):主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编制、独立访问。cortexm3
系列。按嵌入式系统的典型应用分类 :
cortex-a:高性能(high performance),【针对日益增长的运行linux、wince、symbian等操作系统在内的消费者娱乐和无线产品设计与实现。】
cortex-m:微控制器类(microcontroller),【针对应用系统对功耗、成本敏感,同时对微处理器性能要求较高的工业领域(汽车、家电、医疗器械等)。】
cortex-r:【实时类(real time),针对实时性要求较高的领域,可以运行rtos。】
cortex-w:【wireless】
cortex指令完全采用thumb-2体系架构。
第2章 cortex-m3 内核原理。
是arm公司推出的新一代32位低成本、高性能通用微控制器内核。
体系结构:cortex-m3 处理器主要由两大部分组成 :
cortex-m3 内核:
**处理器核心(cortex-m3 core
嵌套向量中断控制器(nvic )
系统时钟(systick )
存储器保护单元(mpu)
总线。 调试系统。
总线:l)ahb:advanced high performance bus,用于高性能系。
统模块的连接,支持突发模式数据传输和事务(acid:原子性、一致性、隔离性和持久性)分割;
2)asb:advanced system bus,也用于高性能系统模块的。
连接,支持突发模式数据传输,这是较老的系统总线格式,后来由ahb总线替代;
3)apb:advanced peripheral bus,用于较低性能外设的简单连接,一般是接在ahb或asb系统总线上的第二级总线。
4. cortex-m3内核是典型的32位处理器内核:
内部数据路径宽度为32位, 寄存器宽度为32位, 存储器接口宽度也是32位,cortex-m3内核拥有独立的指令总线和数据总线,其寻址能力均为4g,且共享同一个存储器空间,取指与数据访问可同时进行。
寄存器:1). 低组寄存器(r0~r7)【所有指令均能访问,字长为32位,复位后的初始值是随机的。 绝大多数16 位 thumb 指令只能访问r0~r7 。】
2). 高组寄存器(r8~r12)【只有很少的 16 位thumb 指令能访问,32位指令则不受限制,复位后的初始值是随机的。】
3). 堆栈寄存器(r13) 又称“堆栈指针sp”【cortex-m3处理器内核有两个堆栈,但这两个寄存器不会同时生效,根据系统运行状态进行堆栈切换,以保证程序运行的快速性、安全性等要求。】
①主堆栈指针(msp ),或写作sp_main。【缺省堆栈指针,它由os内核、异常服务例程以及所有需要特权访问的应用程序**来使用。】
进程堆栈指针(psp ),或写作sp_process。【用于常规的应用程序**(不处于异常服务例程中时)。】
6.在系统连接结构中,通常借助ahb-apb 桥实现内核内部高速总线到外部低速总线的数据缓冲和转换。
是一个32 位处理器,支持 4gb 存储空间, 与arm 架构相比,有很多优点:
1)预定义存储器映射和总线配置;
2)支持 “ 位带(bit ‐band )”操作;
3)支持非对齐访问和互斥访问;
4)支持小端和大端两种存储格。
8.位带操作:
1)概念: 位带操作,只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。
位带别名区中的访问操作是原子的,消灭了传统的“读-改-写”三步曲以及由此产生的被中断的可能。
2)为什么采用位带操作?
可以显著提高位操作的效率和安全性,对许多底层软件开发特别是操作系统和驱动程序具有重要意义。
3)片内外设区(peripheral ,0x40000000~0x5fffffff ,512mb)
外部ram 区(external ram ,0x60000000~0x9fffffff ,256kb )
外部设备区(external device ,0xa0000000~0xdfffffff ,768kb )
4)映射公式:
bit_word_addr =bit_band_alias_base + byte_offset ×32) +bit_number×4)
bit_word_addr 是别名存储器区中字的地址,它映射到某个目标位。
bit_band_alias_base 是别名区的基址,即起始地址。
byte_offset 是包含目标位的字节在位带区里的序号。
bit_number 是位带区目标位所在字节中的位置(0-7)。
5)例题:例1 :
位带区sram地址为0x20000300的字节中的位2,其位带别名区的映射地?
答案】? 0x22000000 + 0x300*32) +2*4).
0x22006008 = 0x22000000 + 0x300*32) +2*4).
对0x22006008地址的写操作和对sram中地址0x节的位2执行 “读--改--写 ”操作有着相同的效果。
例2 :1)地址 ? 的别名字映射为0x200fffff的bit-band字节的位0:
2)地址 ? 的别名字映射为0x200fffff的bit-band字节的位7:
3)地址 ? 的别名字映射为0x20000000 的bit-band字节的位0:
4)地址 ? 的别名字映射为0x20000000的bit-band字节的位7:
答案】1)地址 0x23ffffe0 的别名字映射为0x200fffff的bit-band字节的位0:
0x23ffffe0=0x22000000+(0xfffff*32)+0*4
2)地址0x23ffffec 的别名字映射为0x200fffff的bit-band字节的位7:
0x23ffffec=0x22000000+(0xfffff*32)+7*4
3)地址0x22000000 的别名字映射为0x20000000 的bit-band字节的位0:
0x22000000=0x22000000+(0*32)+0*4
4)地址0x220001c 的别名字映射为0x20000000 的bit-band字节的位7:
0x2200001c=0x22000000+(0*32)+7*4
例2图示:怎样利用“位带操作”进行位带区的“读—改—写”呢?
例3 :欲设置地址0x20000000中的比特2。
答案】without bit-bandwith bit-band
ldr r0,=0x20000000;setup address ldr r0, =0x22000008 ; setup address
ldr r1, [r0] ;readmov r1, #1 ; setup data
r1, #0x4 ; modify bit str r1, [r0] ;write
str r1, [r0] ;write back result
例4 :假如在(位带区)地址0x20000000处的字为0x3355aacc,要求对bit2清零。
答案】无位带。
ldr r0, =0x20000000 ; 建立地址。
ldr r1, [r0] ;read
r1, #0xfffffffb ; bit2清零。
str r1, [r0] ;write back result
有位带。ldr r0, =0x22000008 ; 建立地址。
move r1, 0 ; setup data
str r1, [r0] ;write back result
解答】① 读取地址0x22000008。本次读访问将读取0x20000000,并提取比特2,值为1。
嵌入式系统离线作业解读
浙江大学远程教育学院。嵌入式系统 课程作业。简答题。简答题。1.请简述用户自定义一个linux系统调用的步骤过程。1 添加源 2 连接新的系统调用。3 重建新的linux内核。4 用新的内核启动系统。2.简述linux的slab分配器作用和原理。slab分配器的作用。slab分配器源于 solari...
嵌入式系统复习
what why how 一 课程主要内容。1 嵌入式系统概念及基本知识。2 arm体系结构及指令集。3 ucosii内核原理。4 lpc系统芯片结构。5 基于ucosii的arm编程应用。重点 1 arm体系结构及指令集。2 ucosii内核原理。难点 1 基于ucosii的arm编程应用。二 复...
嵌入式系统复习
复习。题型。一 选择题 本题共10小题,每题2分,共20分 考察 基本概念。难度 中低。二 填空题 本题共10小题,每题2分,共20分 考察 基本概念及简单应用。难度 中高。三 简答题 本题共8小题,每题4分,共32分 考察 基本概念。难度 中等。四 程序设计题 本题共4小题,每题7分,共28分 考...