1、问:为何要使用嵌入式Linux?
答:Linux的能力、稳定性、弹性及scalability,再结合它所支援许多微处理机的架构、硬件设备、图形支持和通信协议,建立了Linux逐渐成为受欢迎的软件平台,并被广泛的应用在各种产品中。Linux的使用可以延伸到计算机应用的一系列产品,从IBM微小的Linux腕表到手持式装置(包括PDA和手机)和消费性娱乐系统到资讯家电产品、电话网络设备等.因为Linux以开放的和自由的原始码的形式存在,它的许多差异性和结构及支持的软件,都使Linux逐步发展,以满足市场和各种应用所需的多变化需求。有小的程序核心版本和加强即时处理的版本,而尽管最初的Linux是PC架构的作业系统,现在的Linux已经可以架构在各种非x86的CPU上,而且在不论是否具有存储器管理单元的CPU,其中包括PowerPC, ARM, MIPS, 68K 和甚至微控制器上。
2、问:Linux和uClinux的比较?它们都支持何种文件系统?
答:1)、因为uClinux是支持没有存储管理单元的微处理器,因此多任务处理的能力变得很微妙。绝大部分在uClinux上执行的应用程序,并不需要多任务处理的能力。除此之外,大部分的二进制执行码和原始码都会被重新写过以便更紧缩和减少程序码,这意味着uClinux和Linux2.0的核心比起来将是非常非常的小. 2)、NFS、ext2、ext3、MS-DOS和FAT16/32是Linux能支持的几种文件系统,他与uClinux最大的不同点就在于uClinux没有MMU管理单元。
3、问:开发嵌入式LINUX有哪些具体调试方法?
答:当为一个新硬件开发相应的嵌入式LINUX系统时,要用到的典型调试工具的序列和步骤是:1)、修改代码使之能读写串口,并使用gdb运行该程序。这将允许它向另一台正运行着gdb程序的LINUX主机通信;gdb通过串口与测试计算机上的gdb目标码会话并给出全部C源码级的调试信息;2)、借助gdb执行余下的,直到LINUX内核开始接管之前的所有硬件和软件的初始化代码;3)、一旦LINUX内核启动后,上述的串口就成为LINUX的控制台端口,可以利用它的便利来进行后继开发过程,并可以使用gdb的内核调试版本kgdb。
4、问:请问在什么情况下要用到评估板?
答:JTAG仿真,要有板子才可以进行硬件调试。如果你自己手头没有板子,又想在自己的板子做好之前进行仿真调试,则需要购买一块评估板。自己在做板子的时候,也可以借鉴评估板的电路。
5、问:同调试程序连接时为什么出现 *** Data Abort ***?
答:原因有以下几点:1)当debugger启动时,处理器将停在当前PC值指向的地方,同时读取该PC值周围一部分地址的存储器值。如果这些地址正好没有被使用或指向空,就会出现Data Abort,这种情况属于正常。 2)如果是使用了存储器(RAM或ROM),出现这种问题表明在存储器访问上可能存在数据错误,请检查你的存储器。 3)当用户下载程序到目标板时,下载的目标地址是在编译器中指定的,如果编译器里设置的目标地址与目标板上可写存取器的物理地址不能对应,也会报Data Abort,因为调试器试图往错误的物理地址写入用户程序而出错。这时候需要检查并重新设置编译器选项。 4)JTAG口的时钟速率过快。
6、问:在调试过程中经常停止,有时候甚至进不了调试程序?
答: 在排除了调试程序本身的问题后,这一类带有随机性的问题可以考虑是硬件时序或逻辑问题引起的,最主要的可能性是nTRST和系统reset信号不可靠。Reset信号的不可靠包含两方面:正常工作时要求稳定地保持高电平;复位状态时要求有足够时间的低电平。Reset电路因为简单通常会被忽略,但事实表明很多貌似奇怪的问题最后都归结在这里,无论是从调试的角度还是最后稳定工作的要求,我们都建议你采用一个好的reset电路(或是IC)来代替简单的R-C电路。
7、问:可以只用C语言而不用汇编进行ARM的开发吗?
答:不行,一般就启动代码与中断初始化需要用汇编。
8、问:用ARM仿真器连接目标板时提示目标板没有找到,怎么办?
答:请按照下列提示进行检查:1)、仿真器、计算机以及目标板之间连接是否正确;2)、 目标板是否上电;3)、 如果上述设置都正确并且计算机并口是好的,请检查调试设备是否正确,方法是在工程设置对话框的General页中检查Debugger device是否选择正确,该选择必须与目标板对应。
9、问:ARM开发的调试方法?
答:用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。使用集成开发环境开发基于ARM的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成,目前常见的调试方法有以下几种:(1)部分集成开发环境提供了指令集模拟器,可方便模拟调试工作,但是由于指令集模拟器与真实硬件环境相差很大,因此用户最终必须在硬件平台上完成整个应用的开发。 (2)驻留监控软件:驻留监控软件是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互来调试。 驻留监控软件对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合 (3)JTAG仿真器:JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与ARM CPU核通信,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题被最小化了。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式 (4)在线仿真器:在线仿真器使用仿真头完全取代目标板上的CPU,可以完全仿真ARM芯片的行为,提供更加深入的调试功能。但其价格高昂使其难以普及。
10、问:ARM芯片选择的一般原则是什么?
答:1)ARM芯片内核: 如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带MMU功能的ARM芯片,但目前有uCLinux等少数几种Linux不需要MMU的支持;2)系统时钟控制器;3)内部存储器容量;4)USB接口;5)GPIO数量;6)中断控制器;7)IIS接口:即集成音频接口;8)nWAIT信号:外部总线速度控制信号;9)RTC;10)LCD控制器: 有些ARM芯片内置LCD控制器,有的甚至内置64K彩色TFT LCD控制器。在设计PDA和手持式显示记录设备时,选用内置LCD控制器的ARM芯片如S3C2410较为适宜;11)PWM输出;12)ADC和DAC: 有些ARM芯片内置2~8通道8~12位通用ADC,可以用于电池检测、触摸屏和温度监测等;13)扩展总线;14)UART和IrDA:几乎所有的ARM芯片都具有1~2个UART接口,可以用于和PC机通讯或用Angel 进行调试;15)DSP协处理器: ARM+DSP结构的ARM芯片;16)内置FPGA:有些ARM芯片内置有FPGA,适合于通讯等领域;17)计数器和看门狗;18)电源管理功能;19)DMA控制器。最后需要注意的是封装问题。
关键词:
常见问题
回答
Linux
可以
程序
开发
调试