( )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。 ( )2.在ARM处理器中,快速中断(FIQ)的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了( )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。 ( )2.在ARM处理器中,快速中断(FIQ)的相关的知识,希望对你有一定的参考价值。
( )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。
( )2.在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。
( )3.ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。
( )4.内建测试系统(BIST)是SoC片上系统的重要结构之一,JTAG测试接口是IC芯片测试方法的标准。
( )5.VHDL的基本单元描述不包括库。
( )6.嵌入式ARM架构的嵌入式处理器同时支持大端、小端(Big/Little-Endian)数据类型。
( )7.嵌入式操作系统通常采用整体式内核或层次式内核的结构。
( )8.ARM7TDMI中的T代表增强型乘法器。
( )9.看门狗(Watch Dog)实际是一个简单的定时器,在固定时间内若正常清零,则自动复位处理器。
( )10.ARM-CPU由多家不同制造商生产,芯片外部提供的总线是不一致的。
( )11.Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。
( )12.Linux 内核的中断服务程序运行于与所有进程都无关的中断上下文中。
( )13.Linux遵循POSIX标准,意味着绝大多数UNIX应用程序不需要任何改动就可以在Linux系统上编译且运行。
( )14.Linux内核支持可以裁减的功能,因此它属于微内核架构。
( )15.Linux在fork()时采用了写时拷贝(简称COW)技术,允许父进程和子进程同时共享相同的物理页面。
( )16.任何一个Linux应用程序都需要调用exit()函数。
( )17.当前的Linux调度算法非常高效,但是查找当前最高优先级的可运行程序时,开销会随着可运行程序的多少而变化。
( )18.Linux的系统调用是作为C库的一部分提供的。
(×)19.为了对硬件做出迅速的响应并完成对时间严格的操作,中断处理下半部必须在关中断状态下执行。
( )20.Linux的内存管理采用了分页的机制,因此即使是内核本身也全部是分页的。
( )21.嵌入式系统由上到下主要分为3个层次:应用软件层,系统软件层,硬件层。
( )22.嵌入式系统的软硬件是独立设计的。
( )23.嵌入式系统设计需要建立交叉开发环境。
( )24.通用系统程序开发不需要建立和使用交叉编译环境。
( )25.对于C++代码,gcc命令只能编译其源文件,而不能自动和C++程序使用的库链接。
( )26.嵌入式系统可以没有操作系统。
( )27.JTAG测试允许多个器件通过JTAG接口串联在一起形成一个JTAG链,能实现对各个器件分别测试。
( )28.GDB调试器只支持本地调试应用程序。
( )29.KGDB程序是一个专门用于调试Linux内核的GDB调试桩。
( )30.片上调试器是存在重叠RAM。
一判断题
对 1. 在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。
错 2. ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。
错 3. VHDL的基本单元描述不包括库。
错 4. 嵌入式ARM架构的嵌入式处理器同时支持大端、小端(Big/Little-Endian)数据类型。
错 5. ARM9TDMI中的T代表增强型乘法器。
对 6. ARM-CPU由多家不同制造商生产,芯片外部提供的总线是不一致的。
对7. Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。
对8. Linux遵循POSIX标准,意味着绝大多数UNIX应用程序不需要任何改动就可以在Linux系统上编译且运行。
错9. 嵌入式系统由上到下主要分为3个层次:应用软件层,系统软件层,硬件层。
错10. 嵌入式系统的软硬件是独立设计的。
对11. 嵌入式系统设计需要建立交叉开发环境。
对12. 通用系统程序开发不需要建立和使用交叉编译环境。
对13. 嵌入式系统可以没有操作系统。
对14. JTAG测试允许多个器件通过JTAG接口串联在一起形成一个JTAG链,能实现对各个器件分别测试。
错15. ARM属于CISC体系架构。
对16. 除了用户模式外,ARM处理器的其它几种工作模式属于特权模式。
错17. 在任何模式下,ARM处理器都可以访问全部寄存器。
错18. 使用立即寻址时,目标寄存器可以为立即数。
对19. BLX指令可以将处理器切换到Thumb状态。
错20. 链接寄存器(LR)用于保存子程序的返回地址,它不能用作其他用途。
错21. 由于使用寄存器R0-R3来传递参数,所以调用子程序时,参数不能超过4个。
对22. 使用汇编编写ARM程序时,可直接为PC寄存器赋值。
错23. 状态寄存器的SF标志位是进位标志。
错24. Bios的唯一作用就是引导操作系统。
对25. 当电脑的USB接口不够使用时,可以使用USB HUB来扩展USB接口。
对26. 根据电路是否具有存储功能,将逻辑电路划分为两种类型:组合逻辑电路和时序逻辑电路。
错27. 所谓时序逻辑电路,是指电路任一时刻的输出仅与该时刻的输入有关。
对28. 触发器按时钟控制方式来分,有电位触发、边沿触发、主从触发等方式。
对29. 总线数据通信方式按照传输定时的方法可分为同步式和异步式两类。
错30. 高速缓存(cache)相比内存容量更大,速度更快。
错31. RS-232C是一种广泛应用于微机通信中的并行通信协议。
对32. 硬件描述语言(HDL)是一种用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式的计算机语言。
对33. 传统的ASIC设计方案是自下而上的(down-up)。
对34. 嵌入式系统是用来控制、监视或辅助设备、机器和工程运行的装置。
错35. 冯诺依曼结构与哈佛结构的不同之处在于前者将程序与数据存储在不同的存储空间,或者则相反。
在网上找的,里面应该有几个你问的 参考技术A 判断题吗?
2对3错
6错
9对10对11对
21错22错23对24对
26对
其它的有下面回答
痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理。
本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集中痞子衡给大家详细介绍了EVK板载调试器用法,有了调试器在手,从此调试不用愁。从调试代码所在目标存储器类别上来分,调试一般分为在SRAM调试和在Flash调试。在SRAM调试实现比较简单,程序直接从JTAG/SWD口灌进RAM即可;在Flash调试,则相对复杂一点,因为首先需要有Flash下载算法,下载成功后才能调试。
通常的Cortex-M内核MCU一般都会内嵌并行NOR Flash,这个并行NOR Flash是直接挂在Cortex-M内核高性能AHB总线上的,知名IDE如果支持这款MCU,也都会同时集成对应Flash的下载算法,方便用户直接在IDE里下载代码进Flash和XIP调试,但是i.MXRT内部并没有Flash,用户需要自己外接Flash,那该怎么办?还能在线XIP调试么?别着急,i.MXRT可以支持外接并行NOR和串行NOR实现XIP,从节省管脚数的角度,最常见的做法是将串行NOR Flash挂在i.MXRT FlexSPI总线上,FlexSPI支持XIP特性,所以原理上可以实现在线调试,今天痞子衡就为大家介绍i.MXRT上在外部串行Flash调试的原理:
一、ARM CoreSight调试架构
要实现在串行Flash调试,首先要能对内核进行调试。i.MXRT芯片是基于Cortex-M内核的,而Cortex内核的调试和跟踪,当然离不开CoreSight,它是ARM公司于2004年推出的一种新的调试体系结构,也是内核授权的一部分。
CoreSight功能非常强大,其包含了很多调试组件(即各种协议),下图来自于 CoreSight技术简介手册,图中标出了CoreSight架构下的各种调试组件之间的联系,这么多组件一下子看起来会有点晕,如果我们按功能将这些组件分组,它们可以被分成如下三组:
- 源部件(Source):芯片上跟踪数据的来源,产生跟踪数据发送到ATB(AMBA Trace Bus)。比如STM和ETM都属于Source部分。
- 控制访问部件(Sink):配置和控制数据流的产生,但是不产生数据流,即那些可以保持从Source过来数据的模块。比如DAP和ECT(包含CTI和CTM)都属于Sink部分。
- 汇聚点(Link):芯片上跟踪数据的终点,用于引导从Source到Sink过程中的类似于通道作用的模块。比如TPIU、ETB和SWO都属于汇聚点。
本文主要是概述性地介绍i.MXRT在外部串行Flash调试的原理,并不想深入探析CoreSight,因此对于CoreSight,我们只需要知道是它完成了主要的调试工作,而CoreSight唯一的依赖就是要保证能通过DAP组件从AMBA总线实时访问系统内存和外设寄存器(当然包括外部串行Flash中的代码)。
二、i.MXRT FlexSPI外设特性
要实现在串行Flash调试,其次是代码要能在串行Flash中XIP(原地执行),即CPU要能实时从串行Flash中任意位置取指令和数据。本文讲的串行Flash一般指SPI接口的NOR Flash,SPI模式可以是Single/Dual/Quad/Octal。无论是哪种SPI模式,这种接口的Flash本质上都属于串行Flash,地址线和数据线不仅共享而且是串行的。而按照通常的理解,要能够实现XIP,Flash应该是并行总线接口挂在AMBA上,这个并行总线应有独立的地址线和数据线,且地址线宽度跟Flash大小相对应。那么串行Flash为什么能在i.MXRT上实现XIP呢?答案就是FlexSPI外设。
让我们打开RT1050参考手册,找到FlexSPI外设章节,可以看到如下FlexSPI模块框图,框图右边是FlexSPI与外部串行Flash的信号连接,框图左边是FlexSPI与i.MXRT系统内部总线连接,总线连接分为两种,分别是32bit IPS BUS(即手动操作FlexSPI寄存器发送Flash读写命令),64bit AHB BUS(由FlexSPI翻译AHB访问地址并自动发送相应Flash读写命令),串行Flash能够XIP的奥秘就在FlexSPI外设的AHB BUS连接。
关于这个64bit AHB BUS连接,我们可以FlexSPI特性里的Memory mapped read/write access by AHB Bus一栏找到更多细节。i.MXRT为FlexSPI外设在系统内存里分配了AHB访问地址映射(对于XIP调试来说主要是读访问),当CPU取指到FlexSPI AHB地址映射空间时,FlexSPI外设会自动完成从外部串行Flash读取指令数据的工作,并将指令数据存放到AHB RX buffer里(一共8个),CPU直接从AHB RX buffer里获取指令去执行,AHB RX buffer可以有效降低读延时。
- AHB RX Buffer implemented to reduce read latency. Total AHB RX Buffer size: 128 x 64 Bits
- 16 AHB masters supported with priority for read access
- 8 flexible and configurable buffers in AHB RX Buffer
- AHB TX Buffer implemented to buffer all write data from one AHB burst. AHB TX Buffer size: 8 x 64 Bits
- All AHB masters share this AHB TX Buffer. No AHB master number limitation for Write Access.
关于FlexSPI AHB地址映射,可见下面的RT1050 memory map表,AHB映射起始地址为0x60000000,最大支持504MB的空间(适用RT1010/RT1020/RT1050/RT1060)。如果是RT1064,AHB映射起始地址改为0x70000000;如果是RT1170,除了0x60000000映射地址外还新增了0x30000000的地址映射。FlexSPI AHB映射地址读访问包含以下特点:
- Cachable and Non-Cachable access
- Prefetch Enable/Disable
- Burst size: 8/16/32/64 bits
- All burst type: SINGLE/INCR/WRAP4/INCR4/WRAP8/INCR8/WRAP16/INCR16
三、串行NOR Flash下载算法
要实现在串行Flash调试,最后要确保代码被成功下载到串行Flash中。串行Flash的读写不像访问RAM那样简单,是需要一套专门的FlexSPI NOR Flash驱动的,即所谓的Flash下载算法。
串行Flash种类很多,虽然大多都符合JESD216标准,但是具体到某个厂家生产的Flash,还是有细微区别的。有的Flash下载算法力求支持尽可能多的Flash,而有的Flash下载算法则仅针对某个系列Flash。不管是哪种Flash下载算法,对于i.MXRT这样没有内部Flash的芯片而言,Flash下载算法都是要跟具体的i.MXRT开发板相关联的,因为开发板决定了Flash连接的pinmux,Flash下载算法里FlexSPI管脚初始化要与开发板相匹配。
每个IDE的Flash下载算法设计不尽相同,本文暂不详细介绍具体Flash下载算法,后续文章会对常见IDE的Flash下载算法设计进行详解。
四、在串行Flash调试过程
CoreSight架构,FlexSPI特性,NOR Flash下载算法都介绍过了,在串行Flash调试的充分条件都有了。现在痞子衡为大家综合介绍一下调试过程。下面是痞子衡特地画的简图,其实调试过程概述起来并不复杂,当你启动IDE调试时,预先放在IDE里的Flash下载算法(可执行文件)会首先通过调试器下载到i.MXRT内部FlexRAM中运行,并完成FlexSPI外设初始化和应用程序下载工作(将应用程序可执行文件下载进串行Flash中),应用程序下载完成之后,便由CoreSight开始接管调试工作,此时CPU已经可以通过AHB总线访问挂在FlexSPI外设上的串行Flash里的代码,所以CoreSight当然可以完成实时代码运行控制与跟踪,你在IDE里也就可以进行单步调试啦。
至此,飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理痞子衡便介绍完毕了,掌声在哪里~~~
以上是关于( )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。 ( )2.在ARM处理器中,快速中断(FIQ)的的主要内容,如果未能解决你的问题,请参考以下文章