第一篇:关于CRH、CRL、ODR和IDR寄存器的使用总结
关于CRH、CRL、ODR和IDR寄存器的使用总结
一.CRH和CRL的使用:
CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。
二.ODR的使用:
1.RCC->APB2ENR|=1<<2;//使能PORTA时钟
GPIOA->CRH&=0XFFFFFFF0;//清除该位原来的设置
GPIOA->CRH|=0X00000003;//PA8 推挽输出
GPIOA->ODR|=1<<8;//PA8 输出高
由以上代码看出,PA8设置成了推挽输出。大家都知道一个端口可以输出高电平,也可以输出低电平,而GPIOA->ODR|=1<<8;这个表达式就把PA8设置成了在空闲的时候输出高电平;GPIOA->ODR|=0<<8;这个表达式,把PA8设置成了在空闲的时候输出低电平。如果想设置PA8为推挽输出,并且希望输出为低电平,可以不要这个表达式GPIOA->ODR|=0<<8;,因为系统会默认端口输出为低电平。
2.RCC->APB2ENR|=1<<2;//使能PORTA时钟
GPIOA->CRH&=0XFF0FFFFF;
GPIOA->CRH|=0X00800000;//PA13设置成上拉/下拉输入GPIOA->ODR|=1<<13;//PA13上拉
由以上代码看出,PA13设置成了上拉输入,即输入高电平。大家都知道,一个端口设置成了输入模式,那么它可以输入高电平,也可以输入低电平。GPIOA->ODR|=1<<13;这个表达式把PA13设置成了上拉模式,即在空闲的时候输入高电平;GPIOA->ODR|=0<<13;这个表达式把PA13设置成了下拉模式,即在空闲的时候输入低电平。
如果想设置PA13为输入模式,并且希望输入低电平,可以不要这个表达式GPIOA->ODR|=0<<13;,因为系统会默认端口输入为低电平。
三.IDR的使用:
IDR是一个端口输入数据寄存器,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。读出的值为对应IO口的状态。
注:IDR的使用我只知道这么多,具体的使用,我还没有实际操作过,我也很想知道IDR具体的使用,希望我在这里抛砖,能引来各位高手的玉!
第二篇:32位PowerPC构架通用寄存器分析及总结一(定稿)
32位PowerPC构架通用寄存器分析及总结一
第一部分 32位 PowerPC构架下寄存器概述
位PowerPC构架寄存器模型可以分成三个类级别:UISA,VEA,OEA,我们根据这三个级别把PowerPC所使用的所有寄存器分为三类: 第一类:用户指令集构架(UISA-User Instruction Set Architecture)下所使用的寄存器; 第二类:虚拟环境构架(VEA-Virtual Environment Architecture)下所使用的寄存器; 第三类:操作系统环境(OEA-Operating Environment Architecture)下所使用的寄存器; PowerPC指令集构架为所有的算术逻辑运算指令定义了“寄存器到寄存器”格式的指令,这些指令的操作数来自或者来自于寄存器,或者来自于指令中的立即数。而对于“三寄存器”格式的指令,PowerPC指令集定义其中一个寄存器用来存目的操作数,另外两个寄存器用来存放源操作数。这样的话,存放源操作数的寄存器还可以被其它指令使用,从而减少了某些操作的指令数目。并且对于访问寄存器,PowerPC构架定义了明确的load和store访存指令(这是RISC指令集的典型特点)。
备注:寄存器中的保留位允许软件写任何值(其实就是0或者1),但是读出来的值,未必是我们写出来的值。它的值依赖于具体的执行系统。接下来,我们分别来介绍这三类寄存器。
第二部分 UISA寄存器集合
用户模式下的寄存器可以被所有的用户级软件和特权级软件所使用,它包含以下的寄存器: 32个通用寄存器GPRs(General-purpose registers):GPR0-GPR31; 32个浮点寄存器FRPs(Floating-point registers):FPR0-FPR31; 1个条件寄存器:CR(Condition register); 1个XER寄存器;
1个LR(Link register)寄存器; 1个CTR(Count register)寄存器;
1个浮点状态控制寄存器:FPSCR(Floating-point status and control register); 备注:不管是单精度数还是双精度数,在浮点寄存器中都是以双精度格式存储。示意图如下:
2.1 通用寄存器GPRs 32个32位通用寄存器主要用来操作整数数据,它们可以作为指令源寄存器和目的寄存器使用,使用起来比较简单,这里就不再相信介绍 2.2 浮点寄存器FPRs PowerPC构架使用32个64位的浮点寄存器,这些寄存器可以在浮点指令中用作源操作数和目的操作数。无论是单精度浮点数还是双精度浮点数在浮点寄存器中都是以双精度格式存储。
除了浮点比较指令之外,其他的浮点操作指令都是操作FPRs中的数据,然后把操作结果放入FPRs中,同时把浮点操作的状态信息存入FPSCR中;而浮点比较指令的结果一般会存放在CR寄存器的CR2字段中。
另外对于FPRs同存放在内存中的双精度输进行数据转存时,不需要格式转换;而对于FPRs和放在在内存中的单精度数进行转存时需要格式转换;而且单精度指令操作FPRs中的数据时,必须把FPRs中的双精度格式的数据转化成单精度格式,单精度指令才能使用。
2.3 CR寄存器 32位的CR寄存器可以反映某些操作的结果(比如cmp指令),协助测试和分支转移指令的执行。
CR寄存器用来存放指令执行之后的状态,该寄存器分为8个字段。分别为CR0,CR1,„,CR7。每个字段都由4bit组成。各个字段CRn(n从0至7)都可以表示响应指令执行的结果:
比如整数的加减及逻辑运算,使用CR0来存放状态,CR0的四个bit位的含义如下: CR0(0):用来表示LT(小于),当整型指令运算结果为负时置1; CR0(1):用来表示GT(大于),当整型指令运算结果为正时置1; CR0(2):用来表示EQ(等于),当整型指令运算结果为0时置1; CR0(3):用来表示SO(溢出),当整型指令运算结果溢出时置1;
同理浮点数的运算使用CR1来保存运算状态,保存过程同上。
其实比较指令可以使用CR寄存器的全部的CRn(n从0至7)来保存运算的结果。在使用CR寄存器时,比较指令cmp之后都会有一个条件跳转指令,比如bc指令。其中cmp指令可以指定由CR寄存器的CRn段来保存结构,cmpi指令就用BF字段来指定CRn字段,一般而言bc指令就会指向cmp中相同的CRn段来决定跳转。下面的指令用来操作CR寄存器的各个CRn域:
1:mtcrf用一个GPR的值来设置CR寄存器的CRn域; 2:mcrf把CR寄存器的一个域CRn拷贝到另一个域CRm;
3:mcrxr把XER寄存器的bit0-bit3拷贝到CR寄存器的一个域CRn 4:mcrfs把指定的FPSCR寄存器的一个域拷贝到指定的CR寄存器的一个域CRn 5:CR寄存器的CR0域存放整数指令的运算结果 6:CR寄存器的CR1域存放浮点数指令的运算结果
7:可以指定CR寄存器的任何一个域CRn来存放整数指令和浮点数指令的运算结果;
2.3.1 对于CR寄存器的CR0域解释
对于所有的整数指令比如addic.,adni.和andis.等(.表示Rc位置位),指令的执行结果将会反映在CR0位上。CR0[0:2]位根据整数指令的运算结构设定,CR[3]由XER[S0]位拷贝过来,四个bit位的含义上面已经讲过。
备注:我们不难想到,如果发生溢出,CR0的前三个bit就没有参考价值了。
2.3.2对于CR寄存器的CR1域
对于所有的浮点运算指令(指令的Rc位置位),CR1将反映浮点运算指令的结果。具体的说CR1[0:3]位拷贝自FPSCR[0:3],来反映浮点运算的异常状态。
2.3.3 对于指定的CRn域的解释
对于比较指令而言,它们通常会自己指定一个CRn域来存放比较指令的运算结果。比如对cmpi指令: cmpi BF,L,RA,SI 语义:
n <— BF表示的数值
if L = 0 then a <—EXTS((RA)32:63)else a <—(RA)if a < EXTS(SI)then c <—0b100 //小于时设置CRn(0)为1 else if a > EXTS(SI)then c <—0b010 //大于时设置CRn(1)为1 else c <—0b001 //等于时设置CRn(2)为1 CR寄存器中的: 4×BF+32:4×BF+35 <-c || XER寄存器中SO位 //||表示字符连接 解释:
将寄存器RA与立即数SI进行比较,然后将比较指令产生的状态放入CR寄存器的不同字段中,CR寄存器有8个CRn字段(n从0至7),可以有三个bit位的BF段指定。L表示是进行32位还是64的比较。对于e600而言,只有L=0的比较。
2.4 FPSCR寄存器
FPSCR寄存器的各个bit位的作用: 1:记录浮点操作的异常
2:记录浮点操作的结果的类型
3:控制浮点操作的回旋模式(rounding mode)4:使能或者禁止异常报告
FPSCR[0:23]是状态bit位,在浮点指令的执行单元完成时更新; FPSCR[24:31]是控制位;
2.5 XER寄存器
XER寄存器是用户模式寄存器,存放整数运算操作的进位,溢出信息以及特殊加载和存储指令lswd和stsws传输的字节数。
XER寄存器有三个有效位(SO-Summary Overflow,OV-Overflow,CA-Carry)和一个有效字段Byte count SO位:XER[0]位,该位为1表示算术指令曾经将OV位置1;CR寄存器的SO位就是复制了XER寄存器的SO位,SO位一旦被设置,就不会被清除,真到程序使用mtspr,mcrxr指令进行清除。
OV位:XER[1]位,表示有符合数的算术运算产生了溢出。CA位:XER[2]位,表示无符号数运算产生了进位。
Byte count字段:XER[25:31]存放lswd和stsws传输的字节数。
2.6 LR寄存器
LR寄存器用来存放函数的返回地址,某些转移指令可以自动的将LR寄存器赋值为该转移指令所在地址的下一个地址。
LR寄存器还可以用作bclr指令的目标地址,来实现长跳转。示意图如下:
备注:图中的blr 是 bclr 20,0指令的助记符。2.7 CTR指令
CTR寄存器用来保存循环变量,并可以根据bclr的BO操作数来自动进行减1操作。此外CTR寄存器还可用来保存bcctr指令的目标地址,用来实现长调转。
第三部分 虚拟环境构架(VEA-Virtual Environment Architecture)寄存器集 虚拟环境工具寄存器集只包含Time-Base寄存器组。示意图如下:
VEA寄存器组可以被所有的处于用户模式或者系统模式下的软件所访问,从VEA寄存器组的示意图我们可以看出,和UISA寄存器相比。VEA寄存器只是引入了一个64位的结构体,它包含两个寄存器:TBU(Time Base Upper)寄存器和TBL(Time Base Lower)寄存器,这两个寄存器可以被用户模式和系统模式的指令访问。在VEA环境中,用户模式下的应用程序仅能访问TB寄存器,而在操作系统环境构架(OEA)定义的系统模式下,系统模式指令可以写入TB寄存器。
TB寄存器组是存放了一个64bit的无符号整数,这个整数周期性的递增。每次递增,TB中的TBL寄存器第31bit位加1,TB中计数器更新的周期与具体的操作相关,即它依赖于具体的实现。
TB 寄存器会以一种依赖于实现的频率周期性地增加,这个频率可能不是恒定的。操作系统(OS)要负责确定更新频率是否发生了变化,以及对内部结构进行必要的调整。小结一下:
1:TB 寄存器是 64 位长的; 2:每次更新都会增加 1; 3:操作系统必须要能够确定更新频率;
4:当 TB 达到自己的最大值时,就会溢出并从 0 重新开始。此时没有明显的迹象,要交由操作系统进行处理。
5:OS 必须要在开机时对 TB 寄存器进行初始化。
备注:
TB 寄存器自己并没有包含计算时间所需要的足够信息。Power Architecture 规范将很多对 TB 寄存器进行处理的责任都交给操作系统来完成,操作系统需要提供其他一些信息,例如更新频率、启动时的 Time Base 寄存器的值,等等。整个计算机制非常迅速且高效。关于TB寄存器的使用,更详细的内容可以参考:64 位 Linux 中 Power Architecture Time Base 的寄存器
这篇文章写的很到位。
待续。。。
第三篇:proteus使用总结
proteus使用总结
相关设置:
1、如何设置电源为所需的电压值?
答:在菜单选项的“Design”选择“Configure Power Rails”,会弹出一个对话框,选择“Name”为“Vcc”,然后在“voltage”中设置所需电源的值
2、当仿真时不小心关掉了示波器的显示波形,第二次仿真时,示波器的波形就不会显示出
来,如何让示波器波形显示出来?
答:点击仿真运行,在运行过程中,右键选择示波器,在弹出的对话框中选择“Digital Oscilloscope”
第四篇:JavaMail使用总结(定稿)
JavaMail 概述
SUN公司发布的用来处理EMAIL的API,提供给开发者处理电子邮件相关的编程接口。它虽是SUN的API,但它还没被加在标准的JAVA开发工具包中,这就意味着你使用前必须另外下载JAVAMAIL文件。除此之外你还需要SUN的JAVABEANS Activation Framework(JAF)。Javabeans activation framework运行很复杂,简单的说就是JAVAMAIL的运行必须得依赖于它的支持。
下载安装
JAVAMAIL是可选包,项目中需要用到就去官网下载,同时也需要下载JAF。安装JAVAMAIL只需要把它们直接把它们COPY到lib里(web项目不需要build path,java项目build path一下)就算安装成功。
所需的两个jar包: JAVAMAIL
mail.jar
ACTIVATION
activation-1.1.jar
底层
Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。另外很好的实现了JavaMail API的框架有James、Spring Mail。Tips SMTP:用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。它帮助每台计算机在发送或中转信件时找到下一个目的地。用来发送或中转发出的电子邮件。
关于
java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法
在编写邮件发送相关程序时,会报错!
主要原因是
javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。
废话不多说下面是解决方法
进到
X:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5 这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下)删掉之后运行下面的代码,经行简单的修改以后就可以实现接收邮件的功能了!我已经测试过完全可行。
第五篇:TSM使用总结
文档名称 文档密级
TSM测试总结
此次在印度进行桌面云交付和测试,客户都比较关心我们的TSM安全特性,大部分的客户需求都是能够满足,也有部分需求满足不了(比如:客户想监控web或邮件上传附件)此次交付和测试使用的版本为Secoway TSM V100R002C06SPC300+spc304,该版本为桌面云R2C01SPC200的配套版本,在使用和测试过程中有部分经验和心得,供大家参考。
1、SACG功能
SACG的功能原理:当设置了SACG功能后,通过TSM Agent在客户机的组策略上设置访问策略,可以通过命令secpol.msc打开组策略,查看到本地IP安全策略,通过该安全策略就可以控制客户机对网络的访问,如下图:
隔离域的使用:当agent对客户机进行安全检查或行为监控(前提是下发了相应的检查策略)时,发现该客户机或用户的违规行为达到Critical级别后,会把该虚拟机放到隔离域中。注意事项:如果配置了软件SACG功能,Agent需要进行首次登录后SACG功能才会生效,同时在认证前域中必须添加DDC服务器所在的网段,不然虚拟机将与DDC无法通讯,导致虚拟机无法向DDC注册,从而登录虚拟机失败
总结:SACG功能其实是需要配合TSM的检查或监控策略来触发和实现访问控制的
2、监控USB策略使用
虽然桌面云中的DDC能够控制用户对USB端口的使用,但是TSM中的USB策略能够把控制做得更细,可以记录对所有文件的拷贝、新建、编辑、重命名等操作,同时记录操作时间、账户,然后定时发送到TSM服务器,供管理员进行安全审计。在对USB策略中的文件操作监控时,需要注意下面2点:
A、在填写文件类型时可以使用“*.*”或“*” 来达到监控所有文件的目的
B、在演示监控USB拷贝文件功能时,需要通过勾选上“编辑”,因为目前TSM会把用户的2014-2-27
华为保密信息,未经授权禁止扩散
第1页, 共4页
文档名称 文档密级
“拷贝”动作记录为“编辑”,如果单单勾选“拷贝”,则agent不会进行行为记录
无法满足的需求:客户希望对拷贝到USB存储的文件进行备份;客户希望能够监控某个文件夹内的文件操作
3、快速上传策略报告
当给用户下发了行为监控策略后(如:文件操作监控、usb监控等等),用户的行为首先会被agent记录下来,并且能够在agent界面上看到,然后agent每隔几小时上传到TSM服务器,管理员就能够在TSM Portal上集中查看每个用户的行为记录,那么在演示测试中为了让客户能够快速的在TSM Potal查看到这些记录,则可以进行以下操作:
1、在虚拟机里结束secodaemon.exe进程,此时agent会掉线,secodaemon.exe会自动起来
2、然后过5分钟左右在TSM的policy report里面就可以查询到每条策略的报告或者个人报告
4、软件分发补丁
Secoway TSM V100R002C06SPC300+spc304不支持WIN7的“msu”格式补丁的自动执行,需要在虚拟机上打一个自动执行补丁,在后续版本已经解决该问题
5、TSM与WSUS联动
TSM与用户的WSUS补丁服务器联动,TSM的主要角色(或功能)为检查客户机是否打好了补丁,以此来判断客户机是否安全,再通过SACG来控制未打补丁的客户机所能够访问的网络资源。
在配置TSM上配置WSUS客户端信息时,如果没有更改过端口,则连接的端口为80,这样我2014-2-27
华为保密信息,未经授权禁止扩散
第2页, 共4页
文档名称 文档密级
们在TSM上配置WSUS端口时使用80端口,当设置成功后,在虚拟机的注册表HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdate中能够看到添加的WSUS的IP和端口
5、TSM license的申请
该工作可以由现场的GTS进行完成,但作为测试交付人员,可以了解一下license的申请流程:
1、使用TSM版本包中的ESN获取工具,获取TSM的ESN号
2、在support.huawei.com—软件中心—软件license—华为license—FNO网站(需提前申请FNO网站账号)—GTS Portal—Online Activation
3、使用合同号(Contract NO.),搜索到TSM的订单,然后输入ESN号,很快就会生成一个license文件,下载并导入到TSM中
6、纯软件版本中安装的TSM Agent显示为中文,需要修改注册表来更改TSM托盘语言 原因:纯软件版本中的demo虚拟机在制作镜像时未把操作系统的区域和语言更改为英文,则在安装TSM Agent时识别系统的托盘语言为中文
把操作系统中的区域语言改成india 英文后,TSM Agent显示成了乱码,如下图: 2014-2-27
华为保密信息,未经授权禁止扩散 第3页, 共4页
文档名称 文档密级
规避方法:
打开注册表,找到HEKY_LOCAL_MACHINE——SOFTWARE——HUAWEI——SecospaceTray,把Language改成en 2014-2-27
华为保密信息,未经授权禁止扩散 第4页, 共4页