本文共 3128 字,大约阅读时间需要 10 分钟。
在ARM汇编语言程序设计中,经常用到子程序设计及调用,与子程序设计与调用无关的指令或伪指令是( )。
A.BL SerchMin
B.IMPORT SerchMin
C.MOV PC,LR
D.B SerchMin
答案是:D
所以选D
下面有关片上调试技术的描述语句中,不恰当的是( )。
A.边界扫描技术是调试硬件芯片及目标机电路板的一种常用调试技术
B.JTAG组织所研究的测试访问端口和边界扫描结构标准,成为了片上测试技术的一种国际标准,即俗称的JTAG标准
C.使用片上调试技术进行嵌入式系统目标机调试时,无需目标存储器,也不占用目标机任何I/O端口
D.经常用于嵌入式系统设计中的微处理器(如:MCS-51、DSP、ARM)都支持JTAG标准的片上调试技术
答案是:D
JTAG(Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如、器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和线。
一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,像UART,Timers,GPIO等等的寄存器。
仿真器是用以实现硬件仿bai真的硬件。仿真器可以du实现替代单片机、zhiARM对程序dao的运行进行控制,例如单步,全速,查看资源断点等。尽管软件仿真具有无需搭建硬件电路就可以对程序进行验证的优点,但无法完全反映真实硬件的运行状况,因此还要通过硬件仿真来完成最终的设计。 目前的开发过程中硬件仿真是必需的。
JTAG和J-LINK是两种仿真器 二者选其一就可以了 Jlink仿真需要自己的软件,但是支持的芯片多一点; 而JTAG不需要专业的软件,但是支持的芯片少一点。 使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调试方式。
以下关于ARM处理器内核说法正确的是( )。
A.经典ARM处理器包括Cortex-M、Cortex-R和Cortex-A三大类
B.Cortex-A系列为应用Cortex处理器,主要面向高端应用设计
C.Cortex-M系列为面向控制领域的实时嵌入式处理器
D.ARM11性能优于Cortex-A5,但低于Cortex-A15
答案是:B
ARM公司在经典处理器ARM11以后的产品改用Cortex来命名,将Cortex分为A、R和M三种类型,Cortex系列属于ARMv7架构,这是ARM公司最新的指令集架构,而我们比较熟悉的三星的S3C2410芯片是ARMv4架构,ATMEL公司的AT91SAM9261芯片则是ARMv5架构。ARM在最初的处理器型号都用数字命名,最后一个是ARM11系列,在应用ARMv7架构后,推出了Cortex这一系列,老式的则命名为Classic系列。
ARMv7架构定义了三大分工明确的系列:
ARMv7架构是在ARMv6架构的基础上诞生的。该架构采用了Thumb-2技术,Thumb-2技术是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用 31%的内存,减小了系统开销。同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。ARMv7架构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此外,ARMv7还支持改良的运行环境,以迎合不断增加的JIT(Just In Time)和DAC(DynamicAdaptive Compilation)技术的使用。另外,ARMv7架构对于早期的ARM处理器软件也提供很好的兼容性。
ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构,ARM-Cortex 系列:ARMv7架构 ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统, 因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间 。
参考链接:https://zhuanlan.zhihu.com/p/92315825
ANSI-C(美国国家标准协会,C的第一个标准ANSI发布)在C89/C99\中main()函数主要形式为:
int main(void);int main(int argc, char *argv[]);
其中的int main(int argc, char *argv[])
两个参数的作用如下:
通过程序验证一下:
#include "stdio.h"int main(int argc, char *argv[]){ int i; printf("argc is :%d\n", argc); for (i = 0; i < argc; i++) { printf("argv[%d] is :%s\n", i, argv[i]); } return 0;}
结果:
gq@gq-virtual-machine:~/learn/code/c$ ./a first 4562 asdf 0x12argc is :5argv[0] is :./aargv[1] is :firstargv[2] is :4562argv[3] is :asdfargv[4] is :0x12
参数可以在可执行文件之后直接加上。
C语言中:static用来修饰局部变量和全局变量,以及函数
C++中:static还可以用来修饰类的成员变量和函数,即静态成员和静态函数
C++中的静态成员可以在多个对象间进行通信,传递信息,即同一类中的static修饰的静态变量和成员函数一样,都是被各个对象公用的。
转载地址:http://ftwzi.baihongyu.com/