Cortex-M3采用ARM V7构架,不仅支持Thumb-2指令集,而且拥有很多新特性。较之ARM7 TDMI,Cortex-M3拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。
上传时间: 2021-12-02
上传用户:
资源较大,分为两个部分,已全部上传:第一部分:https://dl.21ic.com/download/stm32-419047.html 第二部分:https://dl.21ic.com/download/stm32-419048.html 本书介绍 ARM Cortex-M3内核结构特点和 Thumb-2指令集,及其与ARM其他内核的比较。详细阐述意法半导体(ST)公司STM32系列 ARM Cortex-M3微控制器的编程模型、存储器结构、异常处理、电源管理、时钟与复位、嵌套向量中断控制器、调试单元,以及其他各种外设的结构和编程方法。说明STM32库函数的使用方法,并简要介绍STM32相应的开发环境、工具和应用实例。
上传时间: 2022-04-07
上传用户:
资源较大,分为两个部分,已全部上传:第一部分:https://dl.21ic.com/download/stm32-419047.html 第二部分:https://dl.21ic.com/download/stm32-419048.html 本书介绍 ARM Cortex-M3内核结构特点和 Thumb-2指令集,及其与ARM其他内核的比较。详细阐述意法半导体(ST)公司STM32系列 ARM Cortex-M3微控制器的编程模型、存储器结构、异常处理、电源管理、时钟与复位、嵌套向量中断控制器、调试单元,以及其他各种外设的结构和编程方法。说明STM32库函数的使用方法,并简要介绍STM32相应的开发环境、工具和应用实例。
上传时间: 2022-04-07
上传用户:XuVshu
特点:o ARM® Cortex®-M4 CPU 平台o 高达150MHz 的高性能Cortex®-M4 处理器o 集成FPU 和MPUo 内存o 512KB 片上SRAMo 2KB 至512KB 可编程保持存储区o 闪存o 1MB 集成闪存o 原地执行NOR 闪存接口,在闪存中执行时接近0 等待状态o 供电和复位管理系统o 片上稳压器,支持1.7V-3.6V 输入o 上电复位(POR)o 时钟管理o 10-30MHz 晶体振荡器o 内部16MHz RCo 32kHz 晶体振荡器o 内部32kHz RCo 具有可编程输出频率的低功耗PLLo 通用DMA:具有硬件流控制的8 通道DMA 控制器o 安全o 使用TRNG(真随机数发生器)的简单加密引擎o 定时器/计数器o 1x 系统节拍定时器o 4x 32 位定时器o 1x 看门狗定时器o 功耗(待确认)o 满载:待定uA/MHz @ 25°Co 运行:待定uA /MHz @ 25°Co 停止:待定@ 25°Co 保留:待定@ 25°C,32kB 保留存储器o 待机:待定@ 25°C,内部32kHz RCo 12 位逐次逼近寄存器(SAR)ADCo 每秒最多2M 样本o 可通过8:1 多路复用器选择输入o 1 个带有集成PHY 的USB 2.0 高速双角色端口o 两个SD / SDIO 主机接口o SD/SDIO 2.0 模式:时钟高达50MHzo LCD 控制器o 分辨率高达480x320o 6800 和8080 异步模式(8 位)o JTAG 调试功能o 3 个PWM(6 个输出),3 个捕捉和3 个QEP 模块o 4x UART,带有HW 流控制,最高可达4Mbpso 3x I2C,支持Fast Mode+(1000kbps)o 2x I2S 接口o 3x SPI 主器件高达25MHz,1x SPI 从器件高达10MHzo 32 个GPIOo 68 引脚QFN 封装o 温度范围:-40 至85°C4.1 带FPU 内核的ARM®CORTEX®-M4带有FPU 处理器的ARM®Cortex®-M4 是一款32 位RISC 处理器,具有出色的代码和功率效率。它支持一组DSP 指令,以允许高效执行信号处理算法,非常适合于可穿戴和其他嵌入式市场。集成的单精度FPU(浮点单元)便于重用第三方库,从而缩短开发时间。内部内存保护单元(MPU)用于管理对内的访问,以防止一个任务意外破坏另一个活动任务使用的内存。集成紧密耦合的嵌套向量中断控制器,提供多达16 个优先级。4.2 系统内存Bock 包含512kB 零等待状态SRAM,非常适合于当今算法日益增长的需求。同时,内存被细分为更小的区,从而可以单独地关闭以降低功耗。4.3 闪存和XIP 单元提供1MB 的集成NOR 闪存,以支持CPU 直接执行。为了提高性能,XIP 单元具有集成的缓存系统。缓冲内存与系统内存共享。与从系统内存运行性能相比,XIP 单元使得许多应用程序的运行接近100%。4.4 ROM集成ROM 固件包含通过NOR 闪存正常引导所需的引导加载程序,支持用于批量生产的闪存编程,还包括用于调试目的的UART 和USB 启动功能。
标签: tg401
上传时间: 2022-06-06
上传用户:qdxqdxqdxqdx
inineon公司的步进马达驱动扩展板采用通用6AH桥IFX9201SG和XMC1300AB步微控制器(MCU).IFX9201SG设计用于DC马达或其它感性负载,它的输出脉宽调制频率高达20kHz,每个开关在Tj=25℃时的RDSon为100mQ,逻辑输入和3.3V和5.0VTTLUCMOS兼容,具有低待机电流,斩波电流限制,具有门锁行为的短路关断和超温关断,而XMC1300微控制器(MCU)是基于ARM Cortex-M0处理器核的XIMC1000系列MCU,具有实时马达控制和数字功率转换,以及用于LED照明应用的外设.XIMC1300MCU是高性能32位ARM Cortex-MOCPU,单周期32位硬件乘法器,操作系统支持系统计时器(SysTick),具有超低功耗和嵌套向量中断控制器(NVIC),MATH协处理器(MATH),用于三角算法的CORDIC单元和除法单元,片上存储器包括有8KB ROM,,16KB高速SRAM和高达200KB闪存程序和数据存储器,以及USIC,UART,双SPI和四SPI,IC,IS和LIN接口通信外设等.本文介绍了IFX9201+XMC1300主要特性,框图,多种H桥应用电路图以及步进马达驱动扩展板框图和应用框图,电路图和PCB设计图.
上传时间: 2022-07-02
上传用户:kingwide
eeworm.com VIP专区 单片机源码系列 17资源包含以下内容:1. 基于AVR单片机的智能防火防盗系统设计.zip2. 基于AT89S52可控滚轮的设计与实现.zip3. 基于AVR单片机和CPLD的姿态测试系统设计.zip4. 基于ATMega16L单片机的TCD1208AP线阵CCD接口设计.zip5. 基于AVR系列单片机的多功能信号发生器的设计.zip6. 基于Atmega16单片机的小型室内空气净化器的研制.zip7. 基于AVR单片机的烟敏传感器检测电路设计与实现.zip8. 基于avr16单片机的十字LED旋转显示设计.zip9. 基于AVR单片机的无刷直流电机控制系统设计.zip10. 基于AVR单片机的摄像机帧速测试系统设计.zip11. 基于C8051F020单片机的脉搏波信号发生器的设计.zip12. 基于AVR单片机的通用控制板.zip13. 基于C8051F020的自动称重系统设计.zip14. 基于C8051F020的红外遥控电风扇设计.zip15. 基于C8051F120的洗井自动控制系统.zip16. 基于C8051F040单片机的CAN总线测试模式研究.zip17. 基于C8051F310的电动机三相电流检测与保护系统.zip18. 龙丘MMA7455模块V1.0 使用手册.pdf19. 玩转TI MSP430 LaunchPad!TI公司.pdf20. stc15单片机测试程序V1.0版.rar21. 基于MSP430单片机的模糊温湿度控制器的设计.pdf22. 中文版mcS12xs128程序教程(完整版).rar23. SHT10温湿度测试.rar24. MBUS协议_MBDOC48.DOC25. DS18B20 LCD1602 AT24C02智能温度控制系统.rar26. DH16摇摇棒.rar27. JY-MSP430F5438原理图.pdf28. Jlink转接板中文说明文档.pdf29. USBASP下载板使用说明书.pdf30. 单片机多点温度巡回检测系统的设计.pdf31. STC单片机烧写软件.zip32. 0012、51单片机超声波测距程序.rar33. 基于单片机的脉冲周期测量.doc34. AT89CX051编程器的设计.doc35. DMAVR-L型AVR单片机最小系统板使用说明书.pdf36. 51单片机花朵开放程序.rar37. 设计仿真实例的运行文件及C程序.zip38. 手把手教你学AVR单片机C程序设计实验程序.zip39. win7系统下proteus7.5 安装流程.rar40. ATmega16-ad1602.zip41. 延时函数的简单编法.docx42. 基于80C51单片机源码公开的Small RTOS 1.12.1版.zip43. ATmega16-TLC5615.zip44. stc89c52rc的含义.pdf45. STM32的控制器AD模块电路.pdf46. 数字序列发生器课程设计.doc47. 51单片机C语言常用模块与综合系统设计实例精讲.pdf48. AVR_Studio_5按部就班编程.pdf49. 烧写软件progisp172.zip50. 一种简易的磁带引导式AGV小车的制作.doc51. STM32F10xxCDE勘误手册.pdf52. Arduino——数码管简介.doc53. 六足机器人程序.rar54. 单片机模拟板TX-2.rar55. 基于AT89C51单片机的交通灯控制系统设计.ppt56. 电子温度计方案设计.pdf57. 温度测控系统的设计与制作.pdf58. MC9S12VRRMV2芯片资料.pdf59. 8051指令的快速记忆.pdf60. 基于AT89C51单片机的数字秒表设计.pdf61. Keil C51编译器用户手册.rar62. STM32_LCD5110资料.zip63. 基于ATmegal6单片机的温度监测系统设计.zip64. ATmega48-88-168中文.pdf65. STM32F10xxx 正交编码器接口应用笔记.pdf66. cosmic c编译器--CXSTM8_V4_2_4.zip67. 4个io口控制矩阵键盘.zip68. 制作AT89C51单片机实验电路板(下).pdf69. NIOS_II常用函数整理.pdf70. DS1302万年历的源码.doc71. 制作AT89C51单片机实验电路板(上).pdf72. MeTech Verilog例程讲解-V1.0.pdf73. DS1302万年历原理图.pdf74. A-C8V4开发板-使用说明书.rar75. DIY基于51单片机的旋转LED数字电子钟.docx76. 画流程图工具.rar77. s3c2440a资料ADC和触摸屏接口.pdf78. R8C11系列软件功能说明书.doc79. 51单片机温度显示的电脑端软件.exe80. s3c2440a资料SPI(串行外围设备接口).pdf81. 学习型红外线遥控器设计单片机.pdf82. !Cortex-M4自学笔记-基于Kinetis K60.pdf83. s3c2440a数据资料AC97控制器.pdf84. 自制串口模拟ModBus通信程序.docx85. STM32F103x4手册.pdf86. 74系列单片机max各类常用芯片.rar87. 单片机中断多级嵌套的软件实现.pdf88. ISP51_Win_V2.4(中颖单片机烧录软件).exe89. LT-1B MSP430F149学习板.doc90. nrf24l01对码思路.doc91. 机协51_AVR培训板.pdf92. 使用Win32创建串口通讯程序.doc93. AVR TWI读写读写范例.doc94. 一些51单片机基础模块的程序.rar95. 基于单片机的智能电风扇的设计.pdf96. PIC单片机软件下载地址列表.doc97. 基于单片机的电子时钟的设计与实现.ppt98. 基于51单片机的12864液晶显示的万年历.pdf99. 基于AT89S52单片机的温度控制系统.pdf100. 8位ADC单片机MK7A25P资料.pdf
上传时间: 2013-05-15
上传用户:eeworm
eeworm.com VIP专区 单片机源码系列 49资源包含以下内容:1. STM32中断与嵌套NVIC快速入门.rar2. 教你如何看懂时序图.rar3. AVR32801: UC3A3 Schematic Chec.pdf4. AT指令简编汇集.pdf5. HT MCU间接寻址的应用.rar6. 基于C8051F020和Zigbee的汽车测试系统设计.rar7. AVR事无巨细系列.pdf8. 基于S3C2440A的银行评价器的设计.rar9. 基于PIC16LF874单片机的电容测量模块.rar10. S52开发板功能说明.pdf11. 基于ARM单片机的自动测高测距小车.rar12. LPC1300片上USB驱动应用与实例.zip13. 基于MSP430单片机F149的GSM电子门匙设计.pdf14. 基于C8051F040的以太网-CAN转换电路设计.rar15. 基于凌阳单片机的步进电机加减速的控制方法.rar16. 硬件电路设计之主芯片选型.rar17. 嵌入式处理器和数字信号处理器(DSP)选型手册.rar18. 单片机P0口的片外数据存储器扩展.rar19. LTC4310绝缘双向I2C总线通信方案.rar20. 基于PCI9054的数据转换模块设计.rar21. 单片机Flash存储器坏块自动检测.rar22. 下载烧录快速入门手册.rar23. 基于单片机的住宅电子服务系统.rar24. 基于ATmega8的双轴太阳跟踪器设计.rar25. 单片机通讯电路的抗干扰设计.rar26. 基于ATmega16L单片机的温度控制系统设计.rar27. 基于单总线式无线温度采集系统设计.rar28. 基于P89V51RD2的功率因数测量仪设计.rar29. 基于MC9S12HZ256的总线式汽车数字仪表设计.rar30. 工控软件组态王与单片机多机串口通讯的设计.rar31. 基于AVR的新型防汽车追尾安全装置设计.rar32. 串行时钟PCF8583在微机保护装置中的应用.rar33. 基于C8051F320的心电监护系统设计.rar34. 基于Attiny13的投影仪防盗器设计.rar35. 基于AT89C52单片机的语音录放系统.rar36. H.264高清编解码器的片上系统MG3500.rar37. 基于C8051F310的山路转弯预防警示系统.rar38. 基于CAN总线的综自通讯规约设计.rar39. 基于AT89S52的机载电气盒测试仪的设计.rar40. 基于PCI9052的PCI局部总线应用.rar41. 基于ISA总线与KH-9300的数据采集系统.rar42. 基于单片机89S52的多功能计数器设计.rar43. 微处理器dsPIC33F在微机保护装置中的应用.rar44. 基于ATmega16的简易示波器设计.rar45. 基于单片机和FPGA的多功能计数器的设计.rar46. 基于ATmega16的标记机控制系统.rar47. 基于C8051F040的方位角测试系统.rar48. 基于VHDL的微型打印机控制器设计.rar49. 基于AT89S52单片机的多功能音乐播放器.rar50. 基于PIC单片机的IC卡读写器的设计.pdf51. 基于C8051F060的数据采集存储系统的设计.rar52. MCS51单片机实验指导.pdf53. 单片机的C语言程序设计--周兴华.pdf54. 基于CDC3207G的汽车仪表板设计.rar55. 单片机原理及应用实验指导书--吕运朋.pdf56. S3F84B8 8-位CMOS MCU用户手册.pdf57. 基于MSP430F247和TMP275的测温仪.rar58. 单片机现场应用中的几个技术问题.pdf59. 单片机与PLC之间远距离通信的实现.pdf60. iis总线:基于IIS总线的嵌入式音频系统设计.pdf61. 《单片机与接口技术》实验讲义--杜晓.pdf62. 2.4GHz PTR4000无线嵌入式模块高速率1Mbps、.pdf63. 自动打铃器.pdf64. “Infineon单片机实验”教学大纲.pdf65. PIC单片机在可编程数码式楼宇对讲系统中的应用.pdf66. Intel 8251的UART功能.pdf67. XL400编程试验51单片机开发板.pdf68. P89V51RD2新型单片机SoftICE模式调试指南.pdf69. 海丰热电公司800立方米水箱单片机控制系统.pdf70. 单片机与CPLD综合应用技术.pdf71. 8-bit 80C51 Flash系列单片机--P89C66.pdf72. 单片机的串行口.pdf73. TM57PE12 8位单片机使用手册.pdf74. PHILIPS P89C5x单片机数据手册.pdf75. HT46R32/HT46R34 A/D+OPA型八位单片机.pdf76. 单片机应用小技巧.pdf77. MSP430F21X1混合信号控制器.pdf78. 4位单片机微控制器MC20P11XX.pdf79. MSP430系列超低功耗单片机基础与教学实验.pdf80. 基于89C51单片机的实验电路板的制作.pdf81. 8位OTP单片机芯片MC10P23XXY管脚与三星9454完.pdf82. MCS-51单片机系统扩展.pdf83. 8位OTP单片机芯片MC10P22XXY.pdf84. 单片机技术概述.pdf85. 基于ATmega48的3相无刷电机的控制方法.rar86. C8051F单片机在远端测控装置中的应用.pdf87. 基于C8051F020单片机的多路压力测量仪.rar88. 8位OTP单片机芯片BM22P02.pdf89. MSC1211 SINGLE-CHIP MICROPROCE.pdf90. 8位OTP单片机芯片BL35P02R.pdf91. 8位OTP单片机芯片BL22P02.pdf92. 8位OTP单片机芯片BL35P02.pdf93. HT46R23/HT46C23 8位A/D型OTP/Mask.pdf94. 8位OTP单片机芯片BL22P64.pdf95. 单片机和嵌入式LINUX开发的那点事儿.pdf96. 凌阳8位通用单片机--SPMC65系列单片机原理及开发.pdf97. AVR单片机技术培训--李正中.pdf98. AVRISP MKII编程器使用说明.pdf99. CANopen主节点的设计方案.pdf100. SONIX 8BIT单片机26系列I/O型原理及基础课件.pdf
上传时间: 2013-04-15
上传用户:eeworm
ASIC对产品成本和灵活性有一定的要求.基于MCU方式的ASIC具有较高的灵活性和较低的成本,然而抗干扰性和可靠性相对较低,运算速度也受到限制.常规ASIC的硬件具有速度优势和较高的可靠性及抗干扰能力,然而不是灵活性较差,就是成本较高.与传统硬件(CHW)相比,具有一定可配置特性的场可编程门阵列(FPGA)的出现,使建立在可再配置硬件基础上的进化硬件(EHW)成为智能硬件电路设计的一种新方法.作为进化算法和可编程器件技术相结合的产物,可重构FPGA的研究属于EHW的研究范畴,是研究EHW的一种具体的实现方法.论文认为面向分类的专用类可重构FPGA(ASR-FPGA)的研究,可使可重构电路粒度划分的针对性更强、设计更易实现.论文研究的可重构FPGA的BCH通讯纠错码进化电路是一类ASR-FPGA电路的具体方法,具有一定的实用价值.论文所做的工作主要包括:(1)BCH编译码电路的设计——求取实验用BCH码的生成多项式和校验多项式及其相应的矩阵并构造实验用BCH码;(2)建立基于可重构FPGA的基核——构造具有可重构特性的硬件功能单元,以此作为可重构BCH码电路的设计基础;(3)构造实现可重构BCH纠错码电路的方法——建立可重构纠错码硬件电路算法并进行实验验证;(4)在可重构纠错码电路基础上,构造进化硬件控制功能块的结构,完成各进化RLA控制模块的验证和实现.课题是将可重构BCH码的编译码电路的实现作为一类ASR-FPGA的研究目标,主要成果是根据可编程逻辑电路的特点,选择一种可编程树的电路模型,并将它作为可重构FPGA电路的基核T;通过对循环BCH纠错码的构造原理和电路结构的研究,将基核模型扩展为能满足纠错码电路需要的纠错码基本功能单元T;以T作为再划分的基本单元,对FPGA进行"格式化",使T规则排列在FPGA上,通过对T的控制端的不同配置来实现纠错码的各个功能单元;在可重构基核的基础上提出了纠错码重构电路的嵌套式GA理论模型,将嵌套式GA的染色体串作为进化硬件描述语言,通过转换为相应的VHDL语言描述以实现硬件电路;采用RLA模型的有限状态机FSM方式实现了可重构纠错码电路的EHW的各个控制功能块.在实验方面,利用Xilinx FPGA开发系统中的VHDL语言和电路图相结合的设计方法建立了循环纠错码基核单元的可重构模型,进行循环纠错BCH码的电路和功能仿真,在Xilinx公司的Virtex600E芯片进行了FPGA实现.课题在研究模型上选取的是比较基本的BCH纠错码电路,立足于解决基于可重构FPGA核的设计的基本问题.课题的研究成果及其总结的一套ASR-FPGA进化硬件电路的设计方法对实际的进化硬件设计具有一定的实际指导意义,提出的基于专用类基核FPGA电路结构的研究方法为新型进化硬件的器件结构的设计也可提供一种借鉴.
上传时间: 2013-07-01
上传用户:myworkpost
C51原理及相关基础入门知识 第一章:C51 流程控制语句一、分类条件语句、循环语句和开关语句。下面将对这些语句作详细介绍。(1) 条件语句条件语句的一般形式为:if(表达式)语句 1;else语句 2;上述结构表示: 如果表达式的值为非0(TURE)即真, 则执行语句1, 执行完语句1 从语句2 后开始继续向下执行; 如果表达式的值为 0(FALSE)即假, 则跳过语句1 而执行语句2。所谓表达式是指关系表达式和逻辑表达式的结合式。注意:1. 条件执行语句中"else 语句2;"部分是选择项, 可以缺省, 此时条件语句变成:if(表达式) 语句1;表示若表达式的值为非 0 则执行语句1 , 否则跳过语句1 继续执行。2. 如果语句1 或语句2 有多于一条语句要执行时, 必须使用"{"和"}" 把这些语句包括在其中, 此时条件语句形式为:if(表达式){语句体 1;}else{语句体 2;}3. 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易出错, 其原因主要是不知道哪个if 对应哪个else。例如:if(x>20||x<-10)if(y<=100&&y>x)printf("Good");elseprintf("Bad");对于上述情况,规定: else 语句与最近的一个if 语句匹配, 上例中的 else 与 if(y<=100&&y>x) 相匹配。为了使 else 与if(x>20||x<-10) 相匹配, 必须用花括号。如下所示:if(x>20||x<-10){if(y<=100&&y>x)printf("Good");}
上传时间: 2013-10-24
上传用户:Sophie
九.输入/输出保护为了支持多任务,80386不仅要有效地实现任务隔离,而且还要有效地控制各任务的输入/输出,避免输入/输出冲突。本文将介绍输入输出保护。 这里下载本文源代码。 <一>输入/输出保护80386采用I/O特权级IPOL和I/O许可位图的方法来控制输入/输出,实现输入/输出保护。 1.I/O敏感指令输入输出特权级(I/O Privilege Level)规定了可以执行所有与I/O相关的指令和访问I/O空间中所有地址的最外层特权级。IOPL的值在如下图所示的标志寄存器中。 标 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O许可位图规定了I/O空间中的哪些地址可以由在任何特权级执行的程序所访问。I/O许可位图在任务状态段TSS中。 I/O敏感指令 指令 功能 保护方式下的执行条件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 设置EFLAGS中的IF位 CPL<=IOPL IN 从I/O地址读出数据 CPL<=IOPL或I/O位图许可 INS 从I/O地址读出字符串 CPL<=IOPL或I/O位图许可 OUT 向I/O地址写数据 CPL<=IOPL或I/O位图许可 OUTS 向I/O地址写字符串 CPL<=IOPL或I/O位图许可 上表所列指令称为I/O敏感指令,由于这些指令与I/O有关,并且只有在满足所列条件时才可以执行,所以把它们称为I/O敏感指令。从表中可见,当前特权级不在I/O特权级外层时,可以正常执行所列的全部I/O敏感指令;当特权级在I/O特权级外层时,执行CLI和STI指令将引起通用保护异常,而其它四条指令是否能够被执行要根据访问的I/O地址及I/O许可位图情况而定(在下面论述),如果条件不满足而执行,那么将引起出错码为0的通用保护异常。 由于每个任务使用各自的EFLAGS值和拥有自己的TSS,所以每个任务可以有不同的IOPL,并且可以定义不同的I/O许可位图。注意,这些I/O敏感指令在实模式下总是可执行的。 2.I/O许可位图如果只用IOPL限制I/O指令的执行是很不方便的,不能满足实际要求需要。因为这样做会使得在特权级3执行的应用程序要么可访问所有I/O地址,要么不可访问所有I/O地址。实际需要与此刚好相反,只允许任务甲的应用程序访问部分I/O地址,只允许任务乙的应用程序访问另一部分I/O地址,以避免任务甲和任务乙在访问I/O地址时发生冲突,从而避免任务甲和任务乙使用使用独享设备时发生冲突。 因此,在IOPL的基础上又采用了I/O许可位图。I/O许可位图由二进制位串组成。位串中的每一位依次对应一个I/O地址,位串的第0位对应I/O地址0,位串的第n位对应I/O地址n。如果位串中的第位为0,那么对应的I/O地址m可以由在任何特权级执行的程序访问;否则对应的I/O地址m只能由在IOPL特权级或更内层特权级执行的程序访问。如果在I/O外层特权级执行的程序访问位串中位值为1的位所对应的I/O地址,那么将引起通用保护异常。 I/O地址空间按字节进行编址。一条I/O指令最多可涉及四个I/O地址。在需要根据I/O位图决定是否可访问I/O地址的情况下,当一条I/O指令涉及多个I/O地址时,只有这多个I/O地址所对应的I/O许可位图中的位都为0时,该I/O指令才能被正常执行,如果对应位中任一位为1,就会引起通用保护异常。 80386支持的I/O地址空间大小是64K,所以构成I/O许可位图的二进制位串最大长度是64K个位,即位图的有效部分最大为8K字节。一个任务实际需要使用的I/O许可位图大小通常要远小于这个数目。 当前任务使用的I/O许可位图存储在当前任务TSS中低端的64K字节内。I/O许可位图总以字节为单位存储,所以位串所含的位数总被认为是8的倍数。从前文中所述的TSS格式可见,TSS内偏移66H的字确定I/O许可位图的开始偏移。由于I/O许可位图最长可达8K字节,所以开始偏移应小于56K,但必须大于等于104,因为TSS中前104字节为TSS的固定格式,用于保存任务的状态。 1.I/O访问许可检查细节保护模式下处理器在执行I/O指令时进行许可检查的细节如下所示。 (1)若CPL<=IOPL,则直接转步骤(8);(2)取得I/O位图开始偏移;(3)计算I/O地址对应位所在字节在I/O许可位图内的偏移;(4)计算位偏移以形成屏蔽码值,即计算I/O地址对应位在字节中的第几位;(5)把字节偏移加上位图开始偏移,再加1,所得值与TSS界限比较,若越界,则产生出错码为0的通用保护故障;(6)若不越界,则从位图中读对应字节及下一个字节;(7)把读出的两个字节与屏蔽码进行与运算,若结果不为0表示检查未通过,则产生出错码为0的通用保护故障;(8)进行I/O访问。设某一任务的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;对应I/O端口00H—3FH DB 10000000B ;对应I/O端口40H—47H DB 01100000B ;对用I/O端口48H—4FH DB 8182 DUP(0ffH) ;对应I/O端口50H—0FFFFH DB 0FFH ;位图结束字节TSSLen = $TSSSEG ENDS 再假设IOPL=1,CPL=3。那么如下I/O指令有些能正常执行,有些会引起通用保护异常: in al,21h ;(1)正常执行 in al,47h ;(2)引起异常 out 20h,al ;(3)正常实行 out 4eh,al ;(4)引起异常 in al,20h ;(5)正常执行 out 20h,eax ;(6)正常执行 out 4ch,ax ;(7)引起异常 in ax,46h ;(8)引起异常 in eax,42h ;(9)正常执行 由上述I/O许可检查的细节可见,不论是否必要,当进行许可位检查时,80386总是从I/O许可位图中读取两个字节。目的是为了尽快地执行I/O许可检查。一方面,常常要读取I/O许可位图的两个字节。例如,上面的第(8)条指令要对I/O位图中的两个位进行检查,其低位是某个字节的最高位,高位是下一个字节的最低位。可见即使只要检查两个位,也可能需要读取两个字节。另一方面,最多检查四个连续的位,即最多也只需读取两个字节。所以每次要读取两个字节。这也是在判别是否越界时再加1的原因。为此,为了避免在读取I/O许可位图的最高字节时产生越界,必须在I/O许可位图的最后填加一个全1的字节,即0FFH。此全1的字节应填加在最后一个位图字节之后,TSS界限范围之前,即让填加的全1字节在TSS界限之内。 I/O许可位图开始偏移加8K所得的值与TSS界限值二者中较小的值决定I/O许可位图的末端。当TSS的界限大于I/O许可位图开始偏移加8K时,I/O许可位图的有效部分就有8K字节,I/O许可检查全部根据全部根据该位图进行。当TSS的界限不大于I/O许可位图开始偏移加8K时,I/O许可位图有效部分就不到8K字节,于是对较小I/O地址访问的许可检查根据位图进行,而对较大I/O地址访问的许可检查总被认为不可访问而引起通用保护故障。因为这时会发生字节越界而引起通用保护异常,所以在这种情况下,可认为不足的I/O许可位图的高端部分全为1。利用这个特点,可大大节约TSS中I/O许可位图占用的存储单元,也就大大减小了TSS段的长度。 <二>重要标志保护输入输出的保护与存储在标志寄存器EFLAGS中的IOPL密切相关,显然不能允许随便地改变IOPL,否则就不能有效地实现输入输出保护。类似地,对EFLAGS中的IF位也必须加以保护,否则CLI和STI作为敏感指令对待是无意义的。此外,EFLAGS中的VM位决定着处理器是否按虚拟8086方式工作。 80386对EFLAGS中的这三个字段的处理比较特殊,只有在较高特权级执行的程序才能执行IRET、POPF、CLI和STI等指令改变它们。下表列出了不同特权级下对这三个字段的处理情况。 不同特权级对标志寄存器特殊字段的处理 特权级 VM标志字段 IOPL标志字段 IF标志字段 CPL=0 可变(初POPF指令外) 可变 可变 0 不变 不变 可变 CPL>IOPL 不变 不变 不变 从表中可见,只有在特权级0执行的程序才可以修改IOPL位及VM位;只能由相对于IOPL同级或更内层特权级执行的程序才可以修改IF位。与CLI和STI指令不同,在特权级不满足上述条件的情况下,当执行POPF指令和IRET指令时,如果试图修改这些字段中的任何一个字段,并不引起异常,但试图要修改的字段也未被修改,也不给出任何特别的信息。此外,指令POPF总不能改变VM位,而PUSHF指令所压入的标志中的VM位总为0。 <三>演示输入输出保护的实例(实例九)下面给出一个用于演示输入输出保护的实例。演示内容包括:I/O许可位图的作用、I/O敏感指令引起的异常和特权指令引起的异常;使用段间调用指令CALL通过任务门调用任务,实现任务嵌套。 1.演示步骤实例演示的内容比较丰富,具体演示步骤如下:(1)在实模式下做必要准备后,切换到保护模式;(2)进入保护模式的临时代码段后,把演示任务的TSS段描述符装入TR,并设置演示任务的堆栈;(3)进入演示代码段,演示代码段的特权级是0;(4)通过任务门调用测试任务1。测试任务1能够顺利进行;(5)通过任务门调用测试任务2。测试任务2演示由于违反I/O许可位图规定而导致通用保护异常;(6)通过任务门调用测试任务3。测试任务3演示I/O敏感指令如何引起通用保护异常;(7)通过任务门调用测试任务4。测试任务4演示特权指令如何引起通用保护异常;(8)从演示代码转临时代码,准备返回实模式;(9)返回实模式,并作结束处理。
上传时间: 2013-12-11
上传用户:nunnzhy