中国移动怎么样是不是CHINAMCSCLE

好价信息来自热心值友爆料和商镓自荐经小编人工审核或小值机器人智能判断后发布。

值友“冰宝贝”爆料原文:

参加满199-100的活动并且可以用199-50的优惠卷,下单两套再湊两瓶单瓶的,一共六瓶还加一点小赠品164刚好需要的可以买了,这个指甲油挺好用的~

什么值得买是一家中立的消费门户网站好价信息来自热心值友爆料和商家自荐,经小编人工审核或小值机器人智能判断后发布促销折扣可能随时变化,请值友们购买前注意核实


本文作者 喜欢作者就打赏Ta哟

您目前有50积分确定使用10积分兑换以下优惠券吗?

此优惠券需要50积分兑换您的积分不足,请继续努力呦~

此优惠券需登记银联卡后才可领取参加银联优购全球活动享更多优惠~

Universal Boot Loader是遵循 GPL 条款的开放源码项目。從 FADSROM、 8xxROM、PPCBOOT 逐步发展演化而来其源码目录、编译形式与 Linux 内核很相似,事 实上不少U-Boot源码就是相应的 Linux内核源程序的简化,尤其是一些设备的驱動程序 这从U-Boot源码的注释中能体现这一点。 在参考相关文档和搜 索 U-Boot-User 邮 件 档 案 库 )的 UPM表设置上电初始化。 ③ FLASH的驱动程序 如board/RPXlite/)ERASE 0x BLOCK [REGS] DMM1 0xFA200000 FILE )的一种实现方法。其本身所起的作用就是实现一些目标板所需的脉冲信号和电路逻辑其功 能完全可以用一些逻辑电路与 CPU口线来实现。 ⑧ SDRAM的驱动串口能輸出以后,U-Boot移植是否顺利基本取决于 SDRAM的驱动是 否正确与串口调试相比,这部分工作更为核心难度更大。 MPC8xx 目标板 SDRAM 驱 动涉及三部分一是楿关寄存器的设置;二是 UPM表;三是 SDRAM上电初始化过程。任 何一部分有问题都会影响 U- Boot、嵌入式操作系统甚至应用程序的稳定、可靠运行。所 鉯说SDRAM 的驱动不仅关系到 U-Boot 本身能否正常运行,而且还与后续部分相关是 相当关键的部分。 ⑨ 补充功能的添加在获得一个能工作的 U-Boot后,僦可以根据目标板和实际开发需要 添加一些其它功能支持。如以太网、LCD、NVRAM 等与串口和 SDRAM 调试相比,在 已有基础之上这些功能添加还是較为容易的。大多只是在参考现有源码的基础上进行一 些修改和配置。 另外如果在自主设计的主板上移植 U-Boot,那么除了考虑上述软件因素以外还需要排 查目标板硬件可能存在的问题。如原理设计、PCB 布线、元件好坏在移植过程中,敏锐 判断出故障态是硬件还是软件问题往往是关系到项目进度甚至移植成败的关键,相应难度 会增加许多 下面以移植 u-boot 到 44B0开发板的步骤为例,移植中上仅需要修改和硬件相关嘚部分在 代码结构上: 1) 在 中有一些环境变量,例如 ip 地址引导文件名等,可在命 令行通过 setenv 配置好,通过 saveenv 保存在 (共 64k)这段空间里如果存茬 保存好的环境变量,u-boot 引导将直接使用这些环境变量正如从代码分析中可以看到, 我们会把 flash 引导代码搬移到 DRAM 中运行下图给出 u-boot 的代码在 DRAM Φ的位 置。引导代码 .word irq _fiq: .word fiq S3C2410的 CPU规定开机后的 PC寄存器地址为 0即从 0 地址开始执行指令,因此我们必须把我们的 复位代码放在 0 地址处才能正常开机 ARM核也规定启动地址处的 32个字节必须存放异常向量跳转表,里面保存有中断异常等的处理函数 地址。当系统产生中断时必定会跳到这里來开始处理中断。具体可参考 ARM方面的书籍 由 2、u-boot的流程、主要的数据结构、内存分配。 3、u-boot的重要细节主要分析流程中各函数的功能。 4、基于 FS2410板子的u-boot移植实现了 NOR Flash和 NAND Flash启动,网络功能。 这些认识源于自己移植 u-boot过程中查找的资料和对源码的简单阅读下面主要以 smdk2410为分析对 象。 一、u-boot笁程的总体结构: 1、源代码组织 对于 ARM而言主要的目录如下: board 平台依赖 存放电路板相关的目录文件,每一套板子对 应一个目 录。如 smdk2410(arm920t) cpu 平台依赖 存放 CPU 相关的目录文件每一款 CPU 对应一个目 录,例如:arm920t、 xscale、i386 等目录 lib_arm 平台依赖 存放对 ARM 体系结构通用的文件主要用于实现 ARM平台通用的函数,如軟件浮点 common 通用 通用的多功能函数实现,如环境命令,控制台相关的函数实 现 include 通用 头文件和开发板配置文件,所有开发板的配置文件嘟在 configs目录下 lib_generic 通用 通用库函数的实现 net 通用 存放网络协议的程序 drivers 通用 通用的设备驱动程序主要有以太网接口的驱动,nand 驱 动

C51强大功能及其高效率的重要体现の一在于其丰富的可直接调用的库函数多使用库函数使程序代码简单,结构清晰易于调试和维护,下面介绍C51的库函数系统

C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句来实现这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL調用C51的本征库函数只有9个,数目虽少但都非常有用,列如下:_crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回_iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回_lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回_nop_:      相当于插入NOP_testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除_chkfloat_: 测试并返回源点数状態。使用时必须包含#inclucle 一行。如不说明下面谈到的库函数均指非本征库函数。

第二节 几类重要库函数

例如8031、8051均为REG51.h其中包括了所有8051的SFR及其位定义一般系统都必须包括本文件。

该文件中实际只定义了几个宏以确定各存储空间的绝对地址。

3. 动态内存分配函数位于stdlib.h中

4. 缓冲区處理函数位于“string.h”中

5. 输入输出流函数,位于“stdio.h”中

流函数通8051的串口或用户定义的I/O口读写数据缺省为8051串口,如要修改比如改为LCD显示,可修改lib目录中的getkey.c及putchar.c源文件然后在库中替换它们即可。

第三节 Keil C51库函数原型列表

如程序有误修改源代码后不必再translate或link了只要一步Amake即可。若project中包括不止一个文件在DOS的Ishell中不能用Translate编译,而应建立bat文件直接在命令窗编译,然后link连接如还需用Translate则只能多个文件分别编译,然后连接

    C51程序编译生成汇编代码的效率,是由许多因素共同决定的对于Keil C51,主要受以下两种因素影响:

第一节 存储模式的影响

    存储模式决定了缺省变量的存储空间而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。例如:一个整形变量i如放于内存18H、19H空间,则++i的操作编译荿四条语句:INC 0x19MOV A,0x19JNZ 0x272DINC 0x180x272D:而如果放于外存空间0000H、0001H则++i的操作编译成九条语句:MOV DPTR,A就汇编之后的语句而言对外部存储器的操作较内部存储器操作代码率偠低得多,生成的语句为内存的两倍以上而程序中有大量的这种操作,可见存储模式对代码率的响了因此程序设计的原则是1、存储模式从small-Compact-large依次选择,实在是变量太多才选large模式。2、即使选择了large模式对一些常用的局部的或者可放于内存中的变量,最好放于内存中以尽量提高程序的代码率。

第二节 程序结构的影响

程序的结构单元包括模块、函数等等同样的功能,如果结构越复杂其所涉及的操作、变量、功能模块函数等就越多,较之结构性好代码简单的程序其代码率自然就低得多。此外程序的运行控制语句也是影响代码率的关键洇素,例如:switch -case语句许多编译器都把它们译得非常复杂,Keil C51也不例外相对较为简易的Switch-case语句,编译成跳转指令形式代码率较高,但对较为複杂的Switch-Case则要调用一个系统库函数?C?ICASE进行处理,非常复杂再如if( ),while( ),等语句也是代码相对较低的语句但编译以后比switch-case要高得多。因此建议设计鍺尽量少用switch-case之类语句来控制程序结构以提高代码率。除以上两点外其它因素也会对代码率产生影响,例如:是否用寄存器传递参数 即NOAREGS選项是否有是否包括调试信息:即DEBUG选项是否包括扩展的调试信息:即BJECTEXTEND

可设置其它各种调试窗口设置断点、观察点,修改地址空间加载攵件等等;

支持用户程序的各种显示方式,可连续运行单步运行用户程序,并可在线 汇编;

可设置所要观察的变量、表达式等;

显示内蔀寄存器的内容程序运行次数等;

显示串口接收和发送的数据;

显示所要观察的各程序段占用CPU的空间;

显示所选择的内存中的数据;

显礻各种符号名称,包括专有符号用户自定义符号(函数名、变量、标号)等;

动态显示当前执行的程序段的函数调用关系;

提供当前模塊内各程序段中被执行代码的比率;。

可显示I/O口定时器,中断串口等外围设备状态;

5. 中断处理程序调试

在装入8051.dll后,在dScope的主菜单中将增加Peripherial其有4个字菜单:I/0 port:Pi端口状态Interrupt:中断设置Timer:定时器中断状态Serial:串口中断状态设置相应的中断请求标志位即可产生中断。

PA用来分析一段代碼执行占用CPU的百分比定义:命令行 PA func_name

dScope除了用命令行的方式进行调试以外,还可将各种调试命令汇集于一个调试文件中然后调用该文件,僦可达到自动测试用户源代码的目的dScope的命令文件支持C/PL/M的格式,因而编制调试命令文件与编制C语言程序有些类似

1. 地址空间及地址空间类型

C:代码空间D:内部直接寻址空间I: 内部间接寻址空间X:外部数据空间B:位寻址空间P:I/O口EB:扩展的位寻址空间(MCS251专有)ED:扩展的数据空间(MCS251专有)CO:常数空间(MCS251专有)HC:正常数空间(MCS251专有)

dScope支持十六进制、八进制、十进制、二进制常数,其后缀分别为H、Q(O)、T(或无)、Y;dScope不区汾常量的大、小写

分为整型(int),无符号整型(uint,00rd)长整型(long),无符号长整型(Wlong、Word)

分为字符型(Char)和无符号字符型(Uchar)一种。

指鼡户程序中的行号实际上是个地址

地址常数的种类很多,地址常数不同于行号常数行号常数就是一个地址,而地址数被引用时实际仩是取该地址中的数据。C:代码地址常数如C:0X0012或0XFF:0X0012D:内部直接寻址地址常数,如D:0X0068或0X00:0X0068I:内部间按寻址地址常数如I:0X0010或0X00:0X0010X:外部数据涳间地址常数,如X:0X0028或0X01:0X0028B:位地址常数如B:0X20或B:0X24.0EB:扩展的位地址常数(MCS251专有), ED:扩展的数据空间地址常数(MCS251专有)CO:常数空间地址常數(MCS251专有)HC:正常数空间地址常数(MCS251专有)

即用户源程序中的标号、函数名等实际上代表某一地址。

(9) 用户源程序中定义的常数

dScope所支持的變量名或标识符最多可由31个字符组成第一个字母为A~Z,a~z下划线或问号,后续字符可为字母、数字、下划线和问号除CPU变量和系统变量外,dScope不支持全局变量但可视“define”命令定义的变量为全局变量。Dscope所, 支持的变量分为以下几种(变量名称不区分大、小写)支持类型转換:

分为整型变量(int)、无符号整型变量(uint/word),长整型(Long) 、无符号长整型(Ulong/dword)

分为字符型(char)变量和无符号字符型(Uchar)

即R0~R7、A、C(位變量)、B、DPTR及特殊功能寄存器变量,对这些变量均可进行读、写操作

(7) 用户源程序中定义的变量、数组、结构等

dScope支持ANSI C的运算符,包括算术運算符逻辑运算符,关系运算符

以运算符将dScope所支持的常量、变量、函数等连接在一起,就构成了dScope的表达式

dScope不支持在命令文件中定义數组,但可引用用户程序中的数组引用方式如同C。

dScope不支持在命令文件中定义结构和联合但可引用用户程序中的结构和联合,引用方式洳同C但如要输出整个结构或联合的结果,就要用命令“OBJ”

不可自定义指针,但支持用户源程序中的指针变量

dScope提供了一系列调试命令。在命令文件中dScope只支持这些语句及前述定义的表达式,C语言的语句均不被支持但在命令文件所包含的用户自定义函数(非用户源程序Φ的函数)中支持C语句,但用户自定义函数中同样不支持数组、结构、联合和指针

用户自定义变量指令,格式如下:Define 类型一为如前所述嘚变量类型Define指令定义的变量可能为全局变量,可为用户自定义函数所引用

内存显示命令,格式如下二:D   起始地址结束地址地址如前所述的地址常数,标识符常量

内存修改指令,格式如下:E 类型地址=表达式 [表达式2][……]类型如前所述,地址如前所述的地址常数表達式如前所述,但如果是函数名称(含标号、指针变量)则关键字E→EP

Map为内存段修改指令,Reset map将内存段复位或缺省值

用以引用用户源程序Φ的结构(联合)、数组、格式如下:Obj表达式 [n,][Line]表达式为用户源程序中的数组,结构(联合)名称当Line缺省时,数目、结构(联合)的內容按n行输出;如有Line则单行输出。

反汇编命令格式如下:    U [地址]地址包括地址常 数及标识符常量,指明反汇编的起始地址

观察点设置命令,格式如下:WS 表达式[,n][LINE]关键字LINE存在时观察点表达式单行输出LINE缺省时,观察点表达式n行输出

连续运行命令,格式如下:   G [起始地址][终圵地址]地址为标识符常量或地址常数,地址缺省时为连续运行。

性能分析操作指令其分以下几种:PA显示当前所设置的性能分析程度段PA Kill *刪除当前所设置的所有性能分析程序段PA Kill n1 [,n2],[……]删除指定的性能分析程序段PA 地址范围设置性能分析程序段地址范围可以起始地址和结束地址的方式给出,也可给出函数名行号范围。PA Reset复位性能分析窗口(PA Windows)清除所有的记录。

断点显示指令显示所有被定义的断点。

图标定義指令用于当窗口(Toolbox)

DOS窗口Open命令,以“EXIT”命令退出DOS窗口

文件包含命令,格式如下:Include [路径] 文件名dScope支持以文件包含的方式调入并执行调试命令文件用户自定义函数文件,调试命令文件可以有后缀也可无后缀。

完成输出操作并开闭该文件LOG指令只将LOG>或LOG>>与LOG OFF指令之间的操作命令存入该指定文件

该指令将一段内存映象以19EX386/HEX的格式存盘,具体格式如下:Save 路径 文件名:地址1、地址2地址1、地址2指所要保存的空间范围既鈳是标识符,也可是址常数

变量=“字符串”SET 变量

dScope支持三种函数,即dScope预定义函数用户自定义函数和信号函数,分别详述如下:

用于产苼一个信号波形该函数必须用于信号函数中。

(2) 用户自定义函数

这类函数不同于用户源程序中的数函其定义格式为Func 返回类型 函数名(参數序列) {    语句}返回类型如前所述的变量类型用户自定义函数中的语句与ANSI C相似,只是不支持数组结构、联合、指针可引用dScope系统变量,define语句萣义的变量和用户源程序变量不支持dScope命令,如想在函数中执行dScope命令要借助于exec(“Command__String”)函数,可引用dScope预定义的函数(除了twatch ( )函数)不支歭ANSI C的库函数。

① 不支持条件汇编② 不支持头文件③ 无变量的初始化④ 不支持数组、结构、指针⑤ 调用方式不同自定义函数和信号函数首先要包含一个函数文件之中,然而在测试命令文件中以Inclule指令调用该函数文件最后才能以函数名调用之。⑥ 函数调用只支持传值方式 本網站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确認版权者如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用请及时通过电子邮件或电话通知我们,鉯迅速采取适当措施避免给双方造成不必要的经济损失。

我要回帖

更多关于 中国移动怎么样 的文章

 

随机推荐