第十二讲 基于SEP3203 嵌入式系统软件和总复习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每个任务按其重要性被赋予一定的优先级。 静态优先级与动态优先级。 基于优先级的系统会出现优先级倒置的问题,一个好的实时内核应该提供 解决倒置的方法。 已开发出多种算法用于实时任务的优先级分配,基本的有单调执行率调度 法RMS和最早期限优先法EDF等
Sep 2013
No. 5
பைடு நூலகம்务的同步和通信
然后再将pc 指针指向实际的 NOR FLASH 地址,语句ldr pc, =0x200000d0 是将pc 指针指向了紧接着它的 下面第二条等待语句。
最后将pc 指针指到要执行 的程序代码的首地址处, 即0x30002000。让pc 指针从那里开始执行
Sep 2013
No. 14
NOR FLASH 启动的示意图
Sep 2013
No. 16
目 录
嵌入式操作系统原理复习 基于SEP3203软件基本组成和启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 17
PMU控制器驱动程序
了解模块功能
PMU是功耗管理模块,它控制SEP3203不同工作模式之间的切换:slow 、normal、idle 和sleep。 这些工作模式的开发目的是根据芯片不同的应用通过动态地管理芯片内部 各子模块的时钟源供给和系统的工作频率,从而降低芯片的整体功耗。
嵌入式系统概论
第十二讲
基于SEP3203嵌入式软件设计补充
附: 总复习
刘昊 东南大学国家专用集成电路系统工程技术研究中心
Sep 2013
No. 1
目 录
嵌入式操作系统原理复习 基于SEP3203软件基本组成和启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 15
NAND FLASH启动
当外部硬跳线管脚NANDBOOT 被置为高时, SEP3203 的启 动方式为从Nand Flash 启动。 芯片上电初始,系统总线被 DMA 模块所占有,DMA 默认 配置会使DMA 模块将Nand Flash 中的第一页的数据(即 Bootloader 代码)搬运到 Garfield SEP3203 片内存储体 Esram 中 然后将PC(Program Counter)指 向Esram的首地址(此时即为 零地址),开始顺序取指执行 。
进入中断入口函数: 在中断异常处理函数中添加
cmp r0, #INTSRC_GPT IMPORT GPT _HANDLER beq GPT _HANDLER GPT _HANDLER: bl gpt_handler_code b RETURN_INT
Sep 2013
其中,GPT的中断号是28号,所以 INTSRC_GPT=0X10000000。 gpt_handler_code是中断服务入口函数 。
外设
其余接口 控制模块 (如 INTC,LCD C等)
ESRAM ARM 核:ARM7TDMI EMI NOR FALSH
:SDRAM
SEP3203 目标系统
Sep 2013
No. 8
SEP3203的存储器映射
0x3000 0000+64M SDRAM
0x2000 0000+64M
NORFLASH
熟悉寄存器
Sep 2013
No. 18
寄存器功能描述 寄存器PLTR是用来配置PLL的稳定过渡时间,指PLL 配置过程中从不 稳定状态过渡到稳定状态的时间。这样做是为了保证系统中的时钟信 号没有毛刺和抖动,否则会导致同步系统的失败。PLTR 寄存器就是 为了PLL 的稳定过渡分别给系统中的主PLL 和USB 的PLL 设置一个相 对保守时间。 系统主时钟PLL的控制寄存器PMCR完成对主PLL的倍频因子的配置, 同时完成在normal工作模式下对主PLL的倍频重配置。 USB 的PLL 控制寄存器寄存器完成对USB 的PLL 的倍频因子的配置 ,以及完成对它开和关的管理。
上电时,pc 指针指向了NOR FLASH 的首地址,从这里开始执行代码。 因为NOR FLASH 可以字节直接访问(只能随机读,不能随机写),所以可以在NOR FLASH 中 执行所要执行的代码和程序。 考虑到效率的问题,我们通常都把它搬到RAM内存中执行。所以在NORFLASH 的首地址处放的 是启动代码,它负责把在它之后存放的代码载到内存中 并执行主程序。
三种启动方式
Sep 2013
No. 11
SEP3203的三种启动方式
对于硬件初始化而言,不同的芯片要求是不一样的。在SEP3203 这款芯片中, 一开始的硬件初始化主要有两部分组成:EMI 的配置和PMU 的配置 启动代码但它们的原理是一致的。主要有两个功能:一是初始化硬件,建立执行 环境,再就是完成代码的搬运。 当选用NOR FLASH 作为外部存储介质时:
操作系统主要完成:
Sep 2013
No. 3
任务的概念
一个任务,也被称作一个线程;
嵌入式操作系统分配资源的基本单位; 任务是具有一定属性的运行中的程序 每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有 它自己的一套CPU寄存器和自己的栈空间; 每个任务都是一个无限的循环; 任务具有优先级, 任务通过控制块 TCB描述 每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态,就绪 态、运行态、挂起态(等待某一事件发生)和被中断态
当程序处于开发和调试阶段:
我们不必要为了测试代码而每次都将代码烧录到外部存储介质中,而是直接通过ARM 提供的工具 来完成调试工作。此时代码是直接在内存中运行的。
Sep 2013
No. 12
使用Scatter文件的地址映射关系
Sep 2013
No. 13
NOR FLASH 启动代码 NOR FLASH启 动代码 中断向量 表 配置EMI 配置PMU 搬运代码 复位PC指 针 重映射
No. 24
GPT 驱动程序代码 进入中断服务入口函数后,因为GPT有四个中断源,所有首先应该判 断是GPT中的哪个中断源,然后清除相应的中断源,并执行相应的中 断源所对应的函数。代码如下:
void gpt_handler_code(void) { int gpt_int_number; gpt_int_number = *(unsigned volatile)(0x102030a8); switch() { case GPT1: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT2: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT3: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT4: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; } } Sep 2013
如果用户选用了NAND FLASH 作为外部存储介质时:
则一上电启动时芯片中的EMI 会把NAND FLASH 的第一个page 的内容通过DMA 搬到esram中 将pc 指针指到esram 上开始执行。 而第一个page 的内容为启动代码,它将负责把放在NNAD FLASH 中的其它待执行代码载到内存 中 然后开始执行主程序。
Sep 2013
No. 6
目 录
嵌入式操作系统原理复习 基于SEP3203软件启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 7
基于SEP3203开发的基本系统
宿主系统PC(含 有开发环境ADS 1.2和ICE驱动)
ICE
目标系统
Sep 2013
No. 19
PMU 的工作过程
Sep 2013
No. 20
GPT控制器的使用
模块功能:
GPT 是片内集成的32bit 定时器,它与PWM设计在了一起形成一个统一 的模块。分频比和计数值可调,能够向系统提供定时中断和向片外提供两 个脉宽调制信号 GPT/PWM模块共有4 个通道。每个通道都具有专用的分频器和计数器。 共享控制寄存器。 多种计数时钟源。包括对系统时钟分频得到的时钟源。最高计数时钟频率 为系统时钟。具有重起计数和自由计数两种计数模式。 在此我们只介绍有关GPT 中一个模块的使用,其它模块与它相同
Sep 2013
No. 2
多任务嵌入式操作系统的实质
实时多任务系统实际上是由多个任 务和多个中断处理过程组成的有机 的整体。 每个任务是顺序执行的,并行性通过 操作系统来完成 任务间的相互通信和同步也需要操 作系统的支持 RTOS的需求
足够的快(上下文切换和系统调用等) 可确定的性能 任务调度机制是基于优先级的 最小的中断延迟 可伸缩可配置的体系结构 可靠健壮 任务切换和调度 任务间通信同步互斥 实时时钟管理 中断管理 内存管理
工具程序
调试用初始化程序 START FLASH烧录程序
系统程序
启动程序 应用主程序
Sep 2013
No. 10
SEP3203 的系统引导过程 能够从该存储介质中把信息载入到内存中并执行。这个载入过程便称 为“引导”。而执行这个“引导”动作的代码便称为启动代码,即 bootloader。 在嵌入式系统中,内存通常分为on-chip memory和off-chip memory 两 种。
0x1FFF 0000+20k
ESRAM
0x1100 3FFF 0x1000 0000
其余接口 控制模块
0x0000 0000+64M
逻辑地址 空间
Sep 2013
No. 9
软件的构成
调试工具
ADS1.2 集成开发环境 Multi-ICE (ICE 驱动程序)
ADS1.2 Multi-ICE(ICE驱动程 序) 应用主程序 调试初始化程序 STRAT 烧录程序 FLASHDOWNLOAD 启动程序 BOOTLOADER
实时应用程序的设计过程,包括如何把问题分割成多个任 务;
Sep 2013
No. 4
内核对任务的调度
内核的主要职责之一,决定任务运行的次序。 基本的调度算法:
有先来先服务FCFS,最短周期优先SBF 优先级法Priority 轮转法Round-Robin
调度的基本方式有可占先式和非占先式。 多数实时内核是基于优先级调度的多种方法的复合。 优先级的概念
Sep 2013
No. 21
GPT控制器的寄存器
Sep 2013
No. 22
GPT控制器的工作过程
Sep 2013
No. 23
GPT控制器驱动的典型代码
下面以GPT1为例,给出典型的寄存器代码配置:
// set count value,10ms ,under clock frequency 70MHZ *(RP) T1LCR = 0xAAE60; // normal work and interrupt enable *(RP) T1CR = 0X3; ……
on-chip memory 有如Scratch pat memory, Cache… … off-chip memory 常见的有:SDRAM, SRAM。
对于存储介质则有NOR FLASH,NAND FLASH,EPROM 等。在我 们的SEP3203 芯片中,有一块20k的快速片内RAM SEP3203 的EMI支持SDRAM 和SRAM。对外部存储介质则支持NOR FLASH 和NAND FLASH。 用户可以根据自己的需要来选择用什么样的内存和外部存储介质,选用 不同的外部存储介质,它的启动方式也不一样,也就有了自己的启动
注:USB 时钟开启后,软件要等待一段稳定的时间。PLL 的初始状态重新设置到 Power-Down 模式。先配置PLL 的Lock Time,然后在启动PLL。
内部模块时钟源供给的控制寄存器PCSR 完成对SEP3203 芯片内部 各个子模块的时钟源供给的管理,根据当前系统的应用,通过动态地 控制各子模块的时钟源,可以大大降低系统的整体功耗。 芯片工作模式寄存器PMDR分别对AHB和APB上的模块时钟源进行分 频。
Sep 2013
No. 5
பைடு நூலகம்务的同步和通信
然后再将pc 指针指向实际的 NOR FLASH 地址,语句ldr pc, =0x200000d0 是将pc 指针指向了紧接着它的 下面第二条等待语句。
最后将pc 指针指到要执行 的程序代码的首地址处, 即0x30002000。让pc 指针从那里开始执行
Sep 2013
No. 14
NOR FLASH 启动的示意图
Sep 2013
No. 16
目 录
嵌入式操作系统原理复习 基于SEP3203软件基本组成和启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 17
PMU控制器驱动程序
了解模块功能
PMU是功耗管理模块,它控制SEP3203不同工作模式之间的切换:slow 、normal、idle 和sleep。 这些工作模式的开发目的是根据芯片不同的应用通过动态地管理芯片内部 各子模块的时钟源供给和系统的工作频率,从而降低芯片的整体功耗。
嵌入式系统概论
第十二讲
基于SEP3203嵌入式软件设计补充
附: 总复习
刘昊 东南大学国家专用集成电路系统工程技术研究中心
Sep 2013
No. 1
目 录
嵌入式操作系统原理复习 基于SEP3203软件基本组成和启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 15
NAND FLASH启动
当外部硬跳线管脚NANDBOOT 被置为高时, SEP3203 的启 动方式为从Nand Flash 启动。 芯片上电初始,系统总线被 DMA 模块所占有,DMA 默认 配置会使DMA 模块将Nand Flash 中的第一页的数据(即 Bootloader 代码)搬运到 Garfield SEP3203 片内存储体 Esram 中 然后将PC(Program Counter)指 向Esram的首地址(此时即为 零地址),开始顺序取指执行 。
进入中断入口函数: 在中断异常处理函数中添加
cmp r0, #INTSRC_GPT IMPORT GPT _HANDLER beq GPT _HANDLER GPT _HANDLER: bl gpt_handler_code b RETURN_INT
Sep 2013
其中,GPT的中断号是28号,所以 INTSRC_GPT=0X10000000。 gpt_handler_code是中断服务入口函数 。
外设
其余接口 控制模块 (如 INTC,LCD C等)
ESRAM ARM 核:ARM7TDMI EMI NOR FALSH
:SDRAM
SEP3203 目标系统
Sep 2013
No. 8
SEP3203的存储器映射
0x3000 0000+64M SDRAM
0x2000 0000+64M
NORFLASH
熟悉寄存器
Sep 2013
No. 18
寄存器功能描述 寄存器PLTR是用来配置PLL的稳定过渡时间,指PLL 配置过程中从不 稳定状态过渡到稳定状态的时间。这样做是为了保证系统中的时钟信 号没有毛刺和抖动,否则会导致同步系统的失败。PLTR 寄存器就是 为了PLL 的稳定过渡分别给系统中的主PLL 和USB 的PLL 设置一个相 对保守时间。 系统主时钟PLL的控制寄存器PMCR完成对主PLL的倍频因子的配置, 同时完成在normal工作模式下对主PLL的倍频重配置。 USB 的PLL 控制寄存器寄存器完成对USB 的PLL 的倍频因子的配置 ,以及完成对它开和关的管理。
上电时,pc 指针指向了NOR FLASH 的首地址,从这里开始执行代码。 因为NOR FLASH 可以字节直接访问(只能随机读,不能随机写),所以可以在NOR FLASH 中 执行所要执行的代码和程序。 考虑到效率的问题,我们通常都把它搬到RAM内存中执行。所以在NORFLASH 的首地址处放的 是启动代码,它负责把在它之后存放的代码载到内存中 并执行主程序。
三种启动方式
Sep 2013
No. 11
SEP3203的三种启动方式
对于硬件初始化而言,不同的芯片要求是不一样的。在SEP3203 这款芯片中, 一开始的硬件初始化主要有两部分组成:EMI 的配置和PMU 的配置 启动代码但它们的原理是一致的。主要有两个功能:一是初始化硬件,建立执行 环境,再就是完成代码的搬运。 当选用NOR FLASH 作为外部存储介质时:
操作系统主要完成:
Sep 2013
No. 3
任务的概念
一个任务,也被称作一个线程;
嵌入式操作系统分配资源的基本单位; 任务是具有一定属性的运行中的程序 每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有 它自己的一套CPU寄存器和自己的栈空间; 每个任务都是一个无限的循环; 任务具有优先级, 任务通过控制块 TCB描述 每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态,就绪 态、运行态、挂起态(等待某一事件发生)和被中断态
当程序处于开发和调试阶段:
我们不必要为了测试代码而每次都将代码烧录到外部存储介质中,而是直接通过ARM 提供的工具 来完成调试工作。此时代码是直接在内存中运行的。
Sep 2013
No. 12
使用Scatter文件的地址映射关系
Sep 2013
No. 13
NOR FLASH 启动代码 NOR FLASH启 动代码 中断向量 表 配置EMI 配置PMU 搬运代码 复位PC指 针 重映射
No. 24
GPT 驱动程序代码 进入中断服务入口函数后,因为GPT有四个中断源,所有首先应该判 断是GPT中的哪个中断源,然后清除相应的中断源,并执行相应的中 断源所对应的函数。代码如下:
void gpt_handler_code(void) { int gpt_int_number; gpt_int_number = *(unsigned volatile)(0x102030a8); switch() { case GPT1: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT2: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT3: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; case GPT4: gpt_int_number = *(unsigned volatile)(0x102030a8); //用户相对应的处理代码 break; } } Sep 2013
如果用户选用了NAND FLASH 作为外部存储介质时:
则一上电启动时芯片中的EMI 会把NAND FLASH 的第一个page 的内容通过DMA 搬到esram中 将pc 指针指到esram 上开始执行。 而第一个page 的内容为启动代码,它将负责把放在NNAD FLASH 中的其它待执行代码载到内存 中 然后开始执行主程序。
Sep 2013
No. 6
目 录
嵌入式操作系统原理复习 基于SEP3203软件启动过程 SEP3203处理器驱动程序开发举例 嵌入式GUI 和文件系统的概念
Sep 2013
No. 7
基于SEP3203开发的基本系统
宿主系统PC(含 有开发环境ADS 1.2和ICE驱动)
ICE
目标系统
Sep 2013
No. 19
PMU 的工作过程
Sep 2013
No. 20
GPT控制器的使用
模块功能:
GPT 是片内集成的32bit 定时器,它与PWM设计在了一起形成一个统一 的模块。分频比和计数值可调,能够向系统提供定时中断和向片外提供两 个脉宽调制信号 GPT/PWM模块共有4 个通道。每个通道都具有专用的分频器和计数器。 共享控制寄存器。 多种计数时钟源。包括对系统时钟分频得到的时钟源。最高计数时钟频率 为系统时钟。具有重起计数和自由计数两种计数模式。 在此我们只介绍有关GPT 中一个模块的使用,其它模块与它相同
Sep 2013
No. 2
多任务嵌入式操作系统的实质
实时多任务系统实际上是由多个任 务和多个中断处理过程组成的有机 的整体。 每个任务是顺序执行的,并行性通过 操作系统来完成 任务间的相互通信和同步也需要操 作系统的支持 RTOS的需求
足够的快(上下文切换和系统调用等) 可确定的性能 任务调度机制是基于优先级的 最小的中断延迟 可伸缩可配置的体系结构 可靠健壮 任务切换和调度 任务间通信同步互斥 实时时钟管理 中断管理 内存管理
工具程序
调试用初始化程序 START FLASH烧录程序
系统程序
启动程序 应用主程序
Sep 2013
No. 10
SEP3203 的系统引导过程 能够从该存储介质中把信息载入到内存中并执行。这个载入过程便称 为“引导”。而执行这个“引导”动作的代码便称为启动代码,即 bootloader。 在嵌入式系统中,内存通常分为on-chip memory和off-chip memory 两 种。
0x1FFF 0000+20k
ESRAM
0x1100 3FFF 0x1000 0000
其余接口 控制模块
0x0000 0000+64M
逻辑地址 空间
Sep 2013
No. 9
软件的构成
调试工具
ADS1.2 集成开发环境 Multi-ICE (ICE 驱动程序)
ADS1.2 Multi-ICE(ICE驱动程 序) 应用主程序 调试初始化程序 STRAT 烧录程序 FLASHDOWNLOAD 启动程序 BOOTLOADER
实时应用程序的设计过程,包括如何把问题分割成多个任 务;
Sep 2013
No. 4
内核对任务的调度
内核的主要职责之一,决定任务运行的次序。 基本的调度算法:
有先来先服务FCFS,最短周期优先SBF 优先级法Priority 轮转法Round-Robin
调度的基本方式有可占先式和非占先式。 多数实时内核是基于优先级调度的多种方法的复合。 优先级的概念
Sep 2013
No. 21
GPT控制器的寄存器
Sep 2013
No. 22
GPT控制器的工作过程
Sep 2013
No. 23
GPT控制器驱动的典型代码
下面以GPT1为例,给出典型的寄存器代码配置:
// set count value,10ms ,under clock frequency 70MHZ *(RP) T1LCR = 0xAAE60; // normal work and interrupt enable *(RP) T1CR = 0X3; ……
on-chip memory 有如Scratch pat memory, Cache… … off-chip memory 常见的有:SDRAM, SRAM。
对于存储介质则有NOR FLASH,NAND FLASH,EPROM 等。在我 们的SEP3203 芯片中,有一块20k的快速片内RAM SEP3203 的EMI支持SDRAM 和SRAM。对外部存储介质则支持NOR FLASH 和NAND FLASH。 用户可以根据自己的需要来选择用什么样的内存和外部存储介质,选用 不同的外部存储介质,它的启动方式也不一样,也就有了自己的启动
注:USB 时钟开启后,软件要等待一段稳定的时间。PLL 的初始状态重新设置到 Power-Down 模式。先配置PLL 的Lock Time,然后在启动PLL。
内部模块时钟源供给的控制寄存器PCSR 完成对SEP3203 芯片内部 各个子模块的时钟源供给的管理,根据当前系统的应用,通过动态地 控制各子模块的时钟源,可以大大降低系统的整体功耗。 芯片工作模式寄存器PMDR分别对AHB和APB上的模块时钟源进行分 频。