系统映射及中断技术课件

上传人:仙*** 文档编号:241721287 上传时间:2024-07-18 格式:PPT 页数:53 大小:923.50KB
返回 下载 相关 举报
系统映射及中断技术课件_第1页
第1页 / 共53页
系统映射及中断技术课件_第2页
第2页 / 共53页
系统映射及中断技术课件_第3页
第3页 / 共53页
点击查看更多>>
资源描述
主要内容vWindows CE.net内存映射概述vNetarm2410内存映射简介vWindows CE.net与MMUvWindows CE.net中断体系结构vNetarm2410设备中断简介1、Windows CE.net内存映射概述系统内存映射表内核地址映射表v0 x0000_0000-0 x41FF_FFFF:33个系统使用内存Slot,每个32MBv0 x4200_0000-0 x7FFF_FFFF:应用程序共享区域v0 x8000_0000-0 x9FFF_FFFF:X86和ARM物理地址映射全部512M Cached空间v0 xA000_0000-0 xBFFF_FFFF:重复定义512M Uncached空间v0 xC000_0000-0 xC1FF_FFFF:系统保留空间v0 xC200_0000-0 xC3FF_FFFF:nk.exe使用的地址空间v0 xC400_0000-0 xDFFF_FFFF:OEM定义虚拟空间v0 xE000_0000-0 xFFFF_FFFF:内核占用空间相关说明v映射固定,在开发中一般不随意更改2、Netarm2410内存映射简介S3C2410内存映射Netarm2410内存映射vNetarm2410使用了NAND Flash启动的模式v64M SDRAM安装在Bank 6v不连续的物理空间被映射到连续的虚拟地址空间中v系统按照虚拟地址访问物理空间OEM地址映射表Netarm2410外设情况中断 Bank IO基地址SDRAM60 x30000000Ethernet220 x10000200Touch5GPG12AudioGPG8,9,10CF/IDE610 x08000000-0 x080000ffv详细设备资料请参考硬件说明文档v设备基址的定义通常放在OAL的相应头文件中,在我们提供的BSP中,是位于UT2410XINC下的s2410.hvOEMAddressTable是位于.UT2410XKERNELHALARM下的map.a3、Windows CE.net 与MMUMMU内存管理单元v使单个软件线程工作于硬件保护地址空间 v使用MMU可以构建基于RAM的数据结构,使得进程具有单独的地址空间v可以标记对非法逻辑地址的访问,这类地址没有对应的物理地址v通过对访问一定程度的限制,保护了其他独立的存储区的数据。牺牲了部分系统开销,加强了系统安全性。Windows CE.netv在Windows CE.net中,高2GB空间被划分为内核空间,低2GB为用户空间。v从0 x0000 0000(v)开始的33个Slot用于加载应用程序进程。v用户模式下的程序不允许访问0 x8000 0000(v)以后的区域空间vNK从0 x8000 0000(v)的某个位置开始。v驱动程序全部以Dll形式动态加载,并存放在内核空间的NK中。Windows CE.netv64MSDRAM的模式:从0 x80000000(v)开始的64M空间将完全映射64MSDRAM的物理空间,前32M通常划分给各种内核镜像,后面32M作为系统和应用程序公用的内存。v具体的划分在config.bib文件中实现,在MEMORY项Config.bib内容Windows CE.netv通过MMU的映射,实现了系统内核态和用户态的隔离访问保护机制。v用户态的进线程不能任意访问内核态数据,需要使用VirtualCopy函数和VirtualAlloc函数实现对虚拟地址的访问4、Windows CE.net 的进程与线程进程(Process)v进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位 v在Windows CE.net中,最多允许32个进程同时运行。(33个Slot)v每个进程在获取CPU的时候将自己的地址空间映射到Slot 0,该进程在帮助文档中称为当前运行进程(Currently Running Process)。进程(Process)v每个进程占用的Slot由低地址到高地址顺序为代码段、静态数据段分配足够的地址空间,然后是堆、栈,栈之后的空间为所有 DLL保留v注意Slot 0最底部64KB是永远保留的。从Slot 1 到 Slot32 为进程使用。前几个槽一般为系统程序使用。如filesys.exe、device.exe、gwes.exe等。vWindows CE.net将Slot 1也开辟出来作为CRP。v进程无优先级的区分进程操作函数vCreateProcess()vOpenProcess()vExitProcess()vTerminateProcess()vGetExitCodeProcess()vv和Win32体系兼容,详细请参考MSDN帮助文档线程(Thread)v线程是真正的执行单元v5种状态:运行(Running)、挂起(Suspended)、睡眠(Sleeping)、阻塞(Blocked)、终止(Terminated)vWindows CE 利用基于优先级的时间片演算法以安排线程的执行v具有256级优先级线程(Thread)v优先级范围 分配对象v0-96 高于驱动程序的程序v97-152 WinCE驱动程序v153-247 低于驱动程序的程序v248-255 普通应用程序v251优先级(THREAD_PRIORITY_NORMAL)是正常优先级。v255优先级(THREAD_PRIORITY_IDLE)为空闲优先级。v249优先级(THREAD_PRIORITY_HIGHEST)是高优先级。线程操作vCreate Thread()vExitThread()vResumeThread()vSuspendThread()vTerminateThread()vGetExitCodeThread()v详细请参考MSDN帮助文档对象同步技术v仍然延续了Win32体系的同步技术,但是略有简化:v互锁函数(User Mode)v临界区(User Mode)v互斥量(Kernel Mode)v信号量(Kernel Mode)v事件(Kernel Mode)v消息队列(使用较少)互锁函数vInterlockedIncrement()vInterlockedDecrement()vInterlockedExchangeAdd()vInterlockedExchangePointer()vInterlockedCompareExchange()vInterlockedCompareExchangePointer()临界区vInitializeCriticalSection()vEnterCriticalSection()vLeaveCriticalSection()vDeleteCriticalSection()vTryEnterCriticalSection()互斥量vCreateMutex()vReleaseMutex()信号量vCreateSemaphore()vReleaseSemaphore()事件vWaitForSingleObject()vWaitForMultipleObjects()vMsgWaitForMultipleObjects()(去掉了Single)vMsgWaitForMultipleObjectsEx()vCreateEvent()vSetEvent()vPulseEvent()vResetEvent()vOpenEvent()消息队列vCreareMsgQueue()vCloseMsgQueue()vGetMsgQueue()vOpenMsgQueue()vReadMsgQueue()vWriteMsgQueue()有关说明v由于在用户模式和内核模式相互切换需要的时间将可能影响同步的效果,因此尽可能的选择在同一模式中的同步方法v上述同步方法在Windows CE.net中相对于Win32体系都有不同的简化,使用时需要查清楚各种参数的限制和意义,以免造成错误。5、Windows CE.net 的中断体系结构中断v大多数外围设备生成中断,以便从操作系统(OS)接收服务。v几乎任何类型的外围设备都可能使用中断作为启动 OS 的服务操作的主要方法。v外围设备导致或通知中断,所以它们的设备驱动程序必须处理中断以便服务相应的设备。v设备向微处理器发送IRQ中断信号。逻辑中断(SYSINTR)是 OAL 指定的 IRQ 的映射。ARM处理器的中断Windows CE.net的中断vWindows CE.net的中断由ISR和IST两部分组成。v由硬件中断产生逻辑中断v系统只识别逻辑中断vOAL完成硬件中断到逻辑中断的转换ISRvISR(Interrupt Service Routine)是硬件设备产生中断的快速处理程序,一般是汇编代码,在Windows CE.net中用 C来实现了ISR的处理:v1、如果数据可能丢失或者被下一个中断改写,则 ISR 将数据从设备读取到缓冲区中。v2、ISR 清除该设备上的中断条件。v3、ISR 向内核返回一个 SYSINTR。v4、内核设置供 IST 等待的中断事件。v5、调度程序调度等待的 IST 以执行后续的中断服务操作。加入ISRv设备驱动程序在加载时必须执行下列操作:v注册ISR。驱动程序必须向内核注册它的 ISR,除非该驱动程序依赖常见的 OAL ISR 函数来处理它的中断。驱动程序必须向内核注册它的 ISR,以便内核在适当的物理中断发生时调用 ISR。v在 OAL 的 OEMInit 函数中生成从 IRQ 到 SYSINTR 的映射。v高优先级的中断可以抢占低优先级的中断。vSYSINTR标识符通常放在NKintr.h中声明。ISTvIST(Interrupt Service Thread)是运行在用户空间的中断服务线程,它负责接到系统逻辑中断号之后的中断服务处理。vIST先要注册自己,与一个系统事件关联,依靠WaitForSingleObject处在阻塞态,等待系统事件发生。系统发出信号之后,调用驱动加载或继续等待下一次中断事件的产生。vIST由驱动程序产生,作为Device.exe的一个附属线程中断发生和处理的过程中断发生和处理的过程v1、内核跳转至异常处理程序v2、关中断,调用适合的ISR准备处理中断v3、ISR返回逻辑中断v4、开中断,向IST发出系统事件v5、IST调用系统驱动函数访问硬件并负责逻辑中断的处理(这一步对应本机驱动程序)v6、IST调用InterruptDone函数,打开当前中断,(内核将调用OEMInterruptDone函数)v有关IST的具体实现将在后续课程中介绍6、Netarm2410设备中断简介ISR和ISTv在UT2410X的BSP中,ISR位于.UT2410XKERNELHALARM路径下的armint.cv在UT2410X的BSP中,IST通常在驱动程序初始化时创建,常位于驱动程序的XXX_Init中,作为Device.exe的一个子线程存在添加一个新的中断vISR:v增加新中断的ISR处理v在OAL层进行逻辑中断的映射v对OAL层进行中断处理函数必要的修改vIST:v利用XXX_Init创建一个IST等待系统事件(针对逻辑中断的事件)vISR的处理v/These are the standard interruptsv#define SYSINTR_KEYBOARD (SYSINTR_FIRMWARE+0)v#define SYSINTR_TOUCH (SYSINTR_FIRMWARE+1)v#define SYSINTR_ADC (SYSINTR_FIRMWARE+2)v#define SYSINTR_SERIAL (SYSINTR_FIRMWARE+3)v#define SYSINTR_AUDIO (SYSINTR_FIRMWARE+4)v#define SYSINTR_PCMCIA_STATE (SYSINTR_FIRMWARE+5)v#define SYSINTR_PCMCIA_EDGE (SYSINTR_FIRMWARE+6)v#define SYSINTR_PCMCIA_LEVEL (SYSINTR_FIRMWARE+7)v#define SYSINTR_TOUCH_CHANGED (SYSINTR_FIRMWARE+8)v#define SYSINTR_IR (SYSINTR_FIRMWARE+9)v#define SYSINTR_ETHER (SYSINTR_FIRMWARE+10)v#define SYSINTR_USB (SYSINTR_FIRMWARE+11)v#define SYSINTR_USBD (SYSINTR_FIRMWARE+12)v#define SYSINTR_POWER (SYSINTR_FIRMWARE+13)v#define SYSINTR_SDMMC(SYSINTR_FIRMWARE+14)v#define SYSINTR_SDMMC_CARD_DETECT(SYSINTR_FIRMWARE+15)v#define SYSINTR_SDMMC_SDIO_INTERRUPT SYSINTR_FIRMWARE+16)v#define SYSINTR_BUTTON (SYSINTR_FIRMWARE+17)v#define SYSINTR_DMA0 (SYSINTR_FIRMWARE+18)v#define SYSINTR_IIC(SYSINTR_FIRMWARE+19)v#define SYSINTR_IDE(SYSINTR_FIRMWARE+20)v#define SYSINTR_ETHER2(SYSINTR_FIRMWARE+21)转换函数v_inlinevDWORDvMapIrq2SysIntr(DWORD _Irq)vvif(_Irq=21)v return(SYSINTR_FIRMWARE+_Irq);v elsev return(0 xffffffff);vv位于oalintr.h中断处理函数vOEMInterruptEnable()中断处理函数vOEMInterruptDisable()中断处理函数vOEMInterruptDone()在驱动程序中创建ISTv在驱动中创建ISTv编写和配置ISTv接管系统发出的逻辑中断v进行中断服务处理vInterruptDonev在后续课程中会详细介绍
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!