| |
FAQ |
|
 |
| |
|
|
1. ARM 与单片机的区别及其应用选型? |
| |
ARM 本质上就是一个 32 位的单片机,只是它与常见的 8 位机和 16 位机比较,具有更高的运算能力,支持更大的地址空间。在性能上, ARM 已与 X86 架构 PC 较为接近,但保留了极低的功耗和成本,因此 ARM 在 32 位嵌入式应用领域占据了领导地位。
ARM 公司一直是以 IP(Intelligence Property) 知识产权商的身份来专注于 ARM 芯核的设计,自己从不介入芯片的生产销售。因此目前设计、生产 ARM 芯片的芯片厂家有近百家,几乎所有的国际知名芯片厂商都包含其中。因此,在基于 ARM 的嵌入式应用开发中,针对 ARM 芯片的选型是十分必要的。
ARM 芯片的选型原则一般有如下几条:
一、选择 ARM 芯片。目前通用 ARM 芯片主要有 ARM7 和 ARM9 两类,其中 ARM7 的主频一般在 100MHz 以内,而 ARM9 系列则在 200MHz~500MHz 左右。常见的 ARM7 芯片一般都没有 MMU (内存管理单元),但也有一些例外,如 EP7312 。 ARM7 芯片的一个较明显的技术发展方向是面向单片系统,逐步取代传统 8/16 位市场。 ARM9 系列又分为了 ARM9 与 ARM9E 两类。 其中 ARM9 属于 ARM v4T 架构;而 ARM9E 属于 ARM v5TE 架构。在功能上,后者要略强于前者。
二、选择芯片等级与片上资源。首先应根据应用分类选择芯片品质,如工业级或商业级或其他。然后在根据应用要求,选择芯片需具备的片上资源,如扩展总线(EBI)、USART数量、LCD控制器、RTC等等。在选型中,芯片等级先于芯片资源。而在芯片资源中,要选择最适合的,而不是功能最多的。
三、选择芯片生成厂商。通用的商业级 ARM 芯片厂商主要有Samsung(三星)、 CirrusLogic(凌云逻辑)、 Philips 及 ST 等;而工业级 ARM 芯片的代表厂家主要 ATMEL 、CirrusLogic(凌云逻辑)、Philips 等。选择芯片厂商中,要有一定的“从众”心理,这样可以获得更多的开放的技术资源。
四、选择芯片应用方案提供商。对于大多数嵌入式应用来说,开发人员在初期都会选择 1 ~ 2 款应用开发系统作为参考,以加快产品的研发速度,所以选择应用方案提供商也是相当重要。选择应用方案提供商的关键在于比较其提供产品的技术资源的完备性和技术支持服务的开发性,必须通过借助方案提供商的技术服务来越过初期的原始技术积累、缩短产品的开发周期。
|
|
2. MIPS 是什么意思? MIPS/MHZ 又是什么意思? |
| |
MIPS ( Million Instruction Per Second )表示每秒多少百万条指令,如 10MIPS ,表示每秒一千万条指令。MIPS/MHz 表示 CPU 在每 MHz 的运行速度下可以执行多少个 MIPS ,如 10MIPS/MHz ,表示如果 CPU 运行在 1MHz 的频率下,每秒可执行一千万条指令,如果 CPU 运行在 5MHz 的频率下,每秒可执行五千万条指令。 MIPS/MHz 可以很好的反映 CPU 的运行速度。
|
|
3. 关于ARM微处理器的地址重映射(Remap)问题? |
| |
地址重映射本质上是一个物理地址与逻辑地址的关系,所谓物理地址是指令或数据实际的地址。而逻辑地址是指 CPU 单元所要求的访问地址。比如说对于某些 ARM 芯片,其上电后,其内部 Rom 物理地址是在 0x100000 处,同时其默认的映射策略也使得内部 Rom 空间也被映射到 0x0 处,这样 CPU 单元无论是访问 0x0 地址还是访问 0x100000 地址到可以访问到内部 Rom ,而且是同一块物理空间。
为加快程序运行速度,经常会把程序拷贝到 RAM 空间中运行,但是异常向量表的开始地址是由 ARM 架构决定的,必须位于 0x0 处,因此,必须把 RAM 映射到 0x0 。所以许多 ARM 芯片就提供了 Remap 寄存器,通过设置寄存器的相应位,可以将 Ram 空间映射到 0x0 处,这样映射完后, CPU 既可以通过原来的物理地址(如 0x200000 )也可以通过 0x0 来访问 RAM 空间。
以上的设置情况主要是指没有 MMU 或者是不使用 MMU 的情况,如果是使用 MMU 单元,则可以完全通过设置 MMU 单元来完全替代 Remap 功能,因为 CPU 所要求的访问地址肯定是虚拟地址(逻辑地址)、这样只需要将虚拟地址映射到相应的物理地址即可。
|
|
4. 什么是交叉编译及交叉编译开发环境中宿主机 Linux 系统的搭建? |
| |
所谓交叉编译就是当编译器运行在一个为另一个目标系统产生可执行程序的系统上,而且两个系统使用不同的操作环境时。交叉编译主要出现在当目标系统不具有它自己的编译工具时,或者是主机系统更快或具有更多的软硬件资源。如对于 ARM 开发来说,由于 ARM 目标系统上并没有编译工具,因此必须要借助 PC 主机来进行交叉编译。
宿主机 Linux 系统的搭建主要有两种方式,一种是选择一台 PC 作为开发服务器,然后在 PC 上安装相应的 Linux 系统,建议选择 Redhat 分发版、 Ubuntu 或者是 Mandriva ,这样相应的工具软件和文档比较多,易于上手。这种开发方式适合于公司团队开发,便于代码维护和节省资源。另外一种方式是直接在个人 PC 上安装虚拟机软件,如 Vmware 或者 Virtual PC 等,然后在虚拟 PC 上安装相应的 Linux 系统。这种方式适合于个人用户开发或者是有移动开发需求的用户。
值得说明的是,无论是在实际 PC 上还是虚拟 PC 上搭建宿主机 Linux 系统,对于操作系统软件本身和开发过程来说是没有任何区别的,只是 PC 硬件的存在方式不一样而已。
|
|
5. 几种常见存储介质, SDRAM 、 NorFlash 及 NandFlash 的区别? |
| |
SDRAM 本质上相当于 PC 中的内存,其读写速度都非常块,而且可以直接地址访问,因此一般都用作程序的执行空间。但 SDARM 是掉电即失的,不能用作代码与数据的保存。
NorFlash 和 NandFlash 是现在市场上两种最常用的非易失闪存技术。 NorFlash 是 Intel 于 1988 年提出来的,它彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面。而 NandFlash 是在 1989 年由东芝公司发明的,目前 NandFlash 已有全面取代硬盘的趋势。 NorFlash 与 NandFlash 的区别主要体现下以下几个方面:
⑴ 读写与擦除速度。 NorFlash 的读速度比 NandFlash 稍快一些,而 NandFlash 的写速度与擦除速度要远远快于 NorFlash 。
⑵ 接口差别。 NorFlash 带有 SRAM 接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。 NandFlash 器件使用复杂的 I/O 口来串行地存取数据,各个产品或厂商的方法可能各不相同。通过复用 8 个引脚来传送控制、地址和数据信息。
⑶ 易用性。 NorFlash 可以直接像 SDRAM 存储器那样连接,而且不需要任何的软件支持,就可以存取其内部的每一个字节,并可以直接在 NorFlash 中运行代码。而 NandFlash 由于是 I/O 复用的,因此在使用时,必须先写入驱动程序,才能继续执行其他操作。而且向 NandFlash 器件写入信息需要相当的技巧,因为绝不能向坏块写入,这就意味着在 NandFlash 器件上自始至终都必须进行虚拟映射。
⑷ 可靠性与耐用性。由于 NandFlash 中坏块是随机分布且不可避免的,因此在使用时一般都必须采用错误探测 / 错误更正 (EDC/ECC) 算法。而在最大可擦写次数上,在 NandFlash 中每个块的最大擦写次数是一百万次,而 NorFlash 的擦写次数大约在十万次左右。
⑸ 容量与成本。由于 NandFlash 的单元尺寸几乎是 NOR 器件的一半,而且生产过程更为简单,因此在容量与成本上, NandFlash 占有绝对优势。因此 NorFlash 主要占据了容量为 1 ~ 16MB 闪存市场,而 NandFlash 则占据了更大容量的市场,这也说明 NorFlash 主要应用在代码存储介质中, NandFlash 适合于数据存储,如 CompactFlash 、 PC Cards 和 MMC 存储卡等等。
|
|
6. 当使用超级终端作为目标板的控制台时,设置好串口参数(如 115200,8,1 ) , 但系统启动后超级终 端无输出或者有输出,却无法响应键盘输入? |
| |
建议换一个其他的串口工具(如串口调试助手、 SecureCRT 等)试试,超级终端有时是会有点问题。在作为控制台输出,建议使用 SecureCRT ,无论是稳定性还是界面,都要远远好于系统自带的超级终端。如果系统有输出,无法响应键盘输入,可以将控制台关闭一次后,重新打开试试,或者是重启一下目标板。
|
|
7. 关于目标系统中网卡 MAC 地址的分配? |
| |
在通用网卡中,网络设备制造商可以保证其生产的每个以太网设备具有一个全球唯一的 MAC 地址。而在嵌入式系统中,由于网卡常常是开发人员自己设计的,所以需要自行来设定网卡的 MAC 地址。针对运行 Linux 系统的嵌入式设备,可以直接使用 ifconfig 命令来为网卡设备设定一个运行时临时 MAC 地址,同时还要保证这个临时 MAC 在整个局域网段内是唯一的。因此一个较为可行的措施时,在系统启动中,采用随机数方式为网卡设备产生一个随机的 MAC 地址然后保存系统文件中,然后在下次启动时,可以直接使用保存的 MAC 地址。在中嵌的全套板卡中,都采用那个脚本实现了这种 MAC 分配策略,因此无特殊需要,用户可不用设定网卡的 MAC 地址。
|
|
8. 目标系统网络连接的网线选择及交叉网线的制作? |
| |
当目标系统是通过交换机或者 HUB 联入网络时,就可以使用一般的直连网线。而如果目标板是与其他设备(如个人 PC )直接对连,则就需要使用交叉网线。交叉网线的线序是:
一头 568B :橙白,橙,绿白,蓝,蓝白,绿,棕白,棕
另一头 568A :绿白,绿,橙白,蓝,蓝白,橙,棕白,棕
简单来说就是线 1 与 3 交换, 2 与 6 对换。
|
|
9. 如何不编写程序的情况下,简单方便的检测串口? |
| |
首先将检测的串口与 PC 机串口连接,在 PC 段启动 SecureCRT (或者超级终端、串口调试助手等),请注意需要将串口参数配置为( 9600 , 8 , 1 )。然后进入目标系统的 Linux 系统,直接在控制台上执行 echo abcdefg > /dev/ttySn ,其中 abcdefg 是用来测试的字符串, ttySn 是代表被测试的串口的设备名。这样命令执行完后,如果串口正常的话,在 PC 端应该能显示出收到了目标板发出的测试字符串( abcdefg )。
|
|
10. 如何给目标系统设定一个固定的 IP 地址? |
| |
在运行嵌入式 Linux 系统中,可以使用 ifconfig 命令为设备设定一个临时 IP 地址,如果需要设定一个固定 IP 地址,则需要将 IP 地址保存在系统文件中,然后系统在上电过程中自动去读取所保存地址来设定系统的 IP 。针对具有 Flash 文件系统的目标板中,更简单的方式可以直接在系统启动脚本中(如 /usr/etc/rc.local 文件)添加设定固定 IP 的 Shell 指令,如 ifconfig eth0 固定 IP 地址 up ,即可。这样系统启动后,会自动调用这条指令来设定系统的 IP 地址。
|
|
11. 如何在目标系统中使用 U 盘? |
| |
中嵌科技的全系列产品已经实现了对 U 盘设备的热拔插,即当将 U 盘插入到目标板的 USB 主口后,系统自动识别U 盘设备,如果使用了控制台,则控制台上会有识别信息输出。当系统识别 U 盘后,会自动将设备挂载到 /usr/usb 目录下,这样就可以直接到该目录下,对 U 盘进行相应的读写操作。
|
|
12. 如何在系统中连接USB无线局域网卡? |
|
| |
中嵌科技全系列带USB口的产品均可以直接连接USB无线局域网卡。但USB无线网卡正常工作,需要有相应的驱动支持。
|
|
13. 如何在系统中连接 USB 摄像头? |
|
| |
中嵌科技全系列带 USB 口的产品均可以直接连接 USB 摄像头。但需要有相应的驱动支持, USB 摄像头才能正常工作。
|
|
14. 目标系统中, 如何在 Linux 系统下使用 tftp 与 ftp 功能? |
| |
首先要保证在目标板的 Linux 系统下,有 tftp 和 ftp 的相应客户端工具(中嵌的全系列产品中已默认包含)。对 tftp 功能,首先开启 PC 端的 tftp 服务器,然后在目标板上运行指令
tftp –g –r filename IPAddr
其中 filename 是准备下载的文件, IPAddr 是服务器地址。下载完成后,下载文件位于当前目录下。针对 tftp 功能,直接运行 ftp 服务器地址
ftp 服务器 IP 地址
然后联入远程 FTP 服务器后,即可使用 ftpget 与 ftpput 进行文件的下载与上传。
|
|
15. 如何在目标系统启动时运行自己开发的应用? |
| |
针对Linux系统,直接将准备执行应用程序的Shell命令放在系统启动过程中会自动执行的启动脚本(如/usr/etc /rc.local )中即可。
|
|
16. 目标系统中系统时钟与实时时钟的区别? |
| |
所谓目标系统中的系统时钟就是操作系统的系统时钟,如果没有重新设置的话,当系统启动后,使用 date 命令可以看出系统时钟是在 1970 年左右,而实时时钟其实就是硬件时钟,也就是相当于 PC 机中的墙钟,是随时更新的。因此,在 PC 启动过程中,系统会自动去读取墙钟,然后根据墙钟来正确设置系统时钟,这样才能保证系统时钟的准确性。
中嵌科技的全系列产品均实现了上述功能,用户在使用过程中,正确设置 RTC 时钟后,可以只关心系统时钟即可,如使用 date 命令可以看出系统时钟是同步更新的。
|
|
| |
|
|