• 沒有找到結果。

FoxICE For ARM仿真器简介

N/A
N/A
Protected

Academic year: 2022

Share "FoxICE For ARM仿真器简介 "

Copied!
8
0
0

加載中.... (立即查看全文)

全文

(1)

Tel: 13538088657 Email:sales6@foxice.net

FoxICE For ARM仿真器简介

Brief introduction

C o p y r i g h t © 深 圳 市 伽 罗 华 科 技 开 发 有 限 公 司 foxice.net

FoxICE仿真器是自主研发的新一代百兆网口高速实时在线仿真器,支持ARM7、

ARM9、ARM9E系列ARM处理器,可用于开发调试包含JTAG接口的ARM目标板。

采用高速网口极大地提高了程序的下载和调试速度(200K - 400KBytes/S),使团 队共享和远程调试成为可能。内置的仿真器自动搜索及开放、可扩充的Flash编程 功能为开发人员提供了极大的便利,是广大从事嵌入式开发的工程师不可或缺的 开发利器。

技术优势

Technical advantage

„ 高速程序代码下载速度 调试下载速度可达200K - 400KBytes/S,是Multi-ICE兼容类仿真器的2倍以上,单步 调试速度:40- 60步/秒。

„ 硬件逻辑完成底层调试命令与JTAG之间的并串转换,充分利用JTAG的带宽,避免浪费FoxICE For ARM仿真 器主控处理器的处理能力。

„ FoxICE For ARM仿真器采用200MHz的处理器,控制与调试主机的通讯及仿真调试。以支持调试过程中的高 速下载上传;调试处理的逻辑下移到200MHz的处理器执行,既减轻了调试主机的负担,也使得调试仿真的速 度不受主机任务负荷轻重的影响;实时响应、快速处理目标板的调试事件。

„ JTAG速度可配置 FoxICE仿真器JTAG时钟速度最低2.441KHz,最高可达10MHz,以满足不同调试对象的要 求。

„ 高速以太网口与主机通讯 通过10/100M以太网络与主机通讯。支持团队网络共享、远程调试,支持自适应 10M/100M的全双工、半双工以太网。

„ 超低、超宽电压的处理器调试 支持5V类处理器的调试。目标范围为:0.65~5.5V,这是目前为止支持电压最 宽的仿真器。

„ 提供符合RDI 1.5.1标准的FoxICE驱动程序。

支持GDB调试器及Eclipse集成开发环境 GDB debugger & Eclipse IDE

„ FoxICE仿真器内置对于GDB Remote Serial Protocol协议支持 GDB调试器可以直接与FoxICE仿真器连接,控制目标板,中间不必 经过其他转换程序。

„ FoxICE仿真器完美支持GDB的File IO扩展协议 目标板程序可以通 过FoxICE仿真器,把调试、测试的结果输出到调试主机上,或者是 保存到调试主机的文件中,方便观察、比较与调试串口相比,File IO的读写速度更快;不需要调试串口相关的硬件;不需要目标板与 调试主机之间通过串口线连接,方便用户可以远程调试

„ 免费赠送Eclipse for ARM V3.2.1集成开发环境 包括Eclipse及其 中文语言支持包、GNU for ARM交叉编译调试工具、GNU工具用户 手册等。全部的软件工具已经经过测试、打包,通过标准的Windows 安装程序即可完成安装。《 FoxICE用户手册 》提供了详细的介绍,

用户可以快速掌握在Eclipse环境进行ARM软件开发的技术。

w w w . f o x i c e . n e t

Tel: 13538088657 Email:sales6@foxice.net

在Eclipse环境调试ARM目标板上的程序

人性化的设计 Humanizing Design

„ 仿真器自动搜索功能

版 权 所 有 第 1 页 共 2 页

(2)

w w w . f o x i c e . n e t

Tel: 13538088657 Email:sales6@foxice.net

用户在不能确定仿真器IP地址的情况下,通过控制台程序FoxConsole,即可自动搜索网络上的FoxICE仿真器。

支持对仿真器IP地址等通讯参数的修改,不需要专用的IP设置工具。

„ 开放、可扩充的Flash编程

允许用户自行编写Flash编程算法来扩充支持新的flash芯片。内置了SST、AMD、ATMEL、Macronix、Intel 等公司的flash编程算法。内置了Samsung NAND Flash(S3C2410,S3C2440)的编程算法。提供编程算法源 代码,供用户作为模板,生成支持新的Flash芯片编程算法。

„ 在线Flash烧写功能

支持用户通过控制台程序FoxConsole对目标板的flash进行编程。可省去通用编程器,不需要专用烧写软件。

„ 便捷的ARM内核选择

收集整理了数百种ARM内核的处理器,方便用户在仿真调试时,直接指定处理器的芯片型号。

„ 支持20针JTAG插座的目标板; 提供14转20的转接小板,支持14针JTAG插座的目标板,具有JTAG防反插设 计,保护用户系统和仿真器。

自动搜索网络上的FoxICE仿真器 Flash编程界面(Board)

更大的扩展升级空间

More flexible architecture for future upgrade

„ 可扩展可升级的软硬件设计。FoxICE For ARM仿真器预留了主控处理器50%的处理能力及数倍于目前的固件 程序存储空间。为将来的FoxICE For ARM仿真器的升级,新功能的扩展,新的ARM处理器的支持,预留了充 足的硬件资源。

„ 在线Firmware升级,支持最新ARM类型。

其他特性

Other Typical Specifications

„ 支持JTAG口上的自适应时钟(RTCK)。

„ 支持ARM公司的AXD、RealView、ADW以及其他所有符合RDI1.51规范的第三方调试开发工具如Multi2000,

EWARM等。

„ 自主供电,不需要目标板供电,减小对目标系统的影响。

„ 支持semihosting功能。

„ 支持对CP15寄存器、Embedded-ICE寄存器的访问。

„ 支持多种操作系统:Windows95/98/NT/Me/2000/XP。

„ 采用JTAG口的菊花链级联方式,支持同一ASIC内多个不同类型的ARM核。

„ LED指示运行状态。

„ 体积轻巧,性能稳定。

支持的ARM内核

ARM Core supported by FoxICE

ARM7系列 ARM70DI, ARM7DMI, ARM7TDI-S, ARM7TDMI, ARM7TDMI-S, ARM7EJ-S, ARM710T, ARM720T R0-3, ARM720T R4, ARM740T

ARM9TDMI, ARM920T, ARM922T, ARM925T, ARM940T ARM9系列

ARM9E-S, ARM9EJ-S, ARM926EJ-S, ARM946E-S, ARM966E-S, ARM968E-S ARM9E系列

(3)

FoxICE for ARM 仿真器--100M 以太网口、内置 GDB 调试支持 http://www.foxice.net

用 U-BOOT 构建嵌入式系统的引导装载程序

来源:单片机及嵌入式系统应用 作者:曾宏安 齐 尧 焦振强 殷洪军

摘 要:BootLoader(引导装载程序)是嵌入式系统软件开发的第一个环节,它把操作系统和硬 件平台衔接在一起,对于嵌入式系统的后续软件开发十分重要,在整个开发中也占有相当大 的比例。U-BOOT 是当前比较流行、功能强大的 BootLoader,可以支持多种体系结构。LH7A400 是 Sharp 公司生产的一款基于 ARM922T 内核的 32 位 RISC 芯片,本文详细介绍 U-BOOT 的 功能、特点以及在 LH7A400 处理器上的移植过程。

关键词:BootLoader U-BOOT 移植 LH7A400 ARM922T

引 言:

本文以 U-BOOT 为例,介绍了如何在 ARM9 开发板上移植 BootLoader 的过程。LH7A400 学习板是旋极公司推出的一款高性能嵌入式开发板,其采用的处理器 LH7A400 是 Sharp 公司 生产的一款基于 ARM922T 内核的 32 位 RISC 芯片。该芯片集成了高性能的 32 位 RISC 处理 器核 ARM922T(运算速度 200MHz,总线速度 100MHz) ,能使处理速度达到每秒 220 百万条 指令(MIPS),能耗为 1.33mW/MIPS,可以在低电压状态下工作(核心 1.8V,输入/输出 3.3 V),

片内带有锁相回路(PLL)和低能耗核心。此外该芯片还包括: 16KB 高速缓存(Cache), 存储器 管理单元(MMU), 80KB 静态存储器(SRAM), 彩色液晶显示控制器(LCD), 直接存储控制 器(10 通道 DMA), 异步串行口控制器(UART), 同步串行口控制器(SSP), PCMCIA 控制 器, AC97 声音控制器, 智能卡控制器, 多媒体卡控制器, 电池控制器, USB 控制器和时 钟/供电管理器。值得一提的是,LH7A400 是一款宽温芯片,其工作温度范围为-40℃~+85

℃(降低时钟频率),可广泛应用于无线手持设备、智能电话、PDA、家庭娱乐控制器、PocketPC 及各种工控设备。

该学习板还包括如下硬件:由 2 片 16 位 Flash (32MB)和 2 片 16 位的 SDRAM(64M)构成 32 位宽的高速存储器结构;10/100M 自适应网络芯片 DM9000;Sharp 3.5’TFT LCD 彩屏;触 摸屏;USB Host/Device;CF 卡插槽;全功能 JTAG 接口等。

1 U-BOOT 简介

U-BOOT 是由德国的工程师 Wolfgang Denk 从 8XXROM 代码发展而来的,它支持很多 处理器,比如 PowerPC、ARM、MIPS 和 x86。目前,U-BOOT 源代码在 sourceforge 网站的 社区服务器中,Internet 上有一群自由开发人员对其进行维护和开发,它的项目主页是 http://sourceforge.net/projects/U-BOOT。U-BOOT 的最新版本源代码可以在 Sourceforge 的 CVS 服务器中匿名获得。

#cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT login

#cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT \ co -P modulename

1.1 U-BOOT 源代码目录结构

http://www.foxice.net 第 1 页 共 6 页

(4)

◆ board:和一些已有开发板有关的文件,比如 Makefile 和 u-boot.lds 等都和具体开发板的硬 件和地址分配有关。

◆ common:与体系结构无关的文件,实现各种命令的 C 文件。

◆ cpu:CPU 相关文件,其中的子目录都是以 U-BOOT 所支持的 CPU 为名,比如有子目录 arm926ejs、mips、mpc8260 和 nios 等,每个特定的子目录中都包括 cpu.c 和 interrupt.c,start.S。

其中 cpu.c 初始化 CPU、设置指令 Cache 和数据 Cache 等;interrupt.c 设置系统的各种中断和 异常,比如快速中断、开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S 是 U-BOOT 启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为进入 C 程序奠 定基础。

◆ disk:disk 驱动的分区处理代码。

◆ doc:文档。

◆ drivers:通用设备驱动程序,比如各种网卡、支持 CFI 的 Flash、串口和 USB 总线等。

◆fs:支持文件系统的文件,U-BOOT 现在支持 cramfs、fat、fdos、jffs2 和 registerfs。

◆ include:头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支 持的文件。

◆ net:与网络有关的代码,BOOTP 协议、TFTP 协议、RARP 协议和 NFS 文件系统的实现。

◆ lib_arm:与 ARM 体系结构相关的代码。

◆ tools:创建 S-Record 格式文件 和 U-BOOT images 的工具。

1.2 U-BOOT 的特点

U-BOOT 支持 SCC/FEC 以太网、OOTP/TFTP 引导、IP 和 MAC 的预置功能,这一点和 其它 BootLoader(如 BLOB 和 RedBoot 等)类似。但 U-BOOT 还具有一些特有的功能。

◆ 在线读写 Flash、DOC、IDE、IIC、EEROM、RTC,其它的 BootLoader 根本不支持 IDE 和 DOC 的在线读写。

◆ 支持串行口 kermit 和 S-record 下载代码,U-BOOT 本身的工具可以把 ELF32 格式的可执 行文件转换成为 S-record 格式,直接从串口下载并执行。

◆ 识别二进制、ELF32、uImage 格式的 Image,对 Linux 引导有特别的支持。U-BOOT 对 Linux 内核进一步封装为 uImage。封装如下:

#{CROSS_COMPILE}-objcopy -O binary -R.note -R.comment -S vmlinux \ linux.bin

#gzip -9 linux.bin

#tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xc0008000 -e\

0xc0008000 -n “Linux-2.4.20” -d linux.bin.gz /tftpboot/uImage

即在 Linux 内核镜像 vmLinux 前添加了一个特殊的头,这个头在 include/image.h 中定义,包 括目标操作系统的种类(比如 Linux,VxWorks 等)、目标 CPU 的体系机构(比如 ARM、PowerPC 等)、映像文件压缩类型(比如 gzip、bzip2 等)、加载地址、入口地址、映像名称和映像的生成 时间。当系统引导时,U-BOOT 会对这个文件头进行 CRC 校验,如果正确,才会跳到内核 执行。如下所示:

WT-ARM9# bootm 0xc1000000

## Checking Image at 0xc100000 ...

Image Name: Linux-2.4.20

Created: 2004-07-02 22:10:11 UTC

Image Type: ARM Linux Kernel Image (gzip compressed)

(5)

FoxICE for ARM 仿真器--100M 以太网口、内置 GDB 调试支持 http://www.foxice.net

Data Size: 550196 Bytes = 537 kB = 0 MB Load Address: 0xc0008000

Entry Point: 0xc0008000 Verifying Checksum ... OK

Uncompressing Kernel Image ……… OK

◆ 单任务软件运行环境。U-BOOT 可以动态加载和运行独立的应用程序,这些独立的应用程 序可以利用 U-BOOT 控制台的 I/O 函数、内存申请和中断服务等。这些应用程序还可以在没 有操作系统的情况下运行,是测试硬件系统很好的工具。

◆ 监控(minitor)命令集:读写 I/O,内存,寄存器、内存、外设测试功能等

◆ 脚本语言支持(类似 BASH 脚本)。利用 U-BOOT 中的 autoscr 命令,可以在 U-BOOT 中运 行“脚本”。首先在文本文件中输入需要执行的命令,然后用 tools/mkimage 封装,然后下载 到开发板上,用 autoscr 执行就可以了。

① 编辑如下的脚本 example.script。

echo

echo Network Configuration:

echo --- echo Target:

printenv ipaddr hostname echo

echo Server:

printenv serverip rootpath echo

② 用 tools/mkimage 对脚本进行封装。

# mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "autoscr example script" -d example.scr ipt /tftpboot/example.img

Image Name: autoscr example script Created: Wes Sep 8 01:15:02 2004

Image Type: ARM Linux Script (uncompressed) Data Size: 157 Bytes = 0.15 kB = 0.00 MB Load Address: 0x00000000

Entry Point: 0x00000000 Contents:

Image 0: 149 Bytes = 0 kB = 0 MB

③ 在 U-BOOT 中加载并执行这个脚本。

WT-ARM9# tftp 100000 /tftpboot/example.img ARP broadcast 1

TFTP from server 10.0.0.2; our IP address is 10.0.0.99 Filename ’/tftpboot/TQM860L/example.img’.

Load address: 0x100000 Loading: #

done

Bytes transferred = 221 (dd hex) WT-ARM9# autoscr 100000

## Executing script at 00100000

http://www.foxice.net 第 3 页 共 6 页

(6)

Network Configuration:

--- Target:

ipaddr=10.0.0.99 hostname=arm Server:

serverip=10.0.0.2 rootpath=/nfsroot WT-ARM9#

◆ 支持 WatchDog、LCD logo 和状态指示功能等。如果系统支持 splash screen,U-BOOT 启 动时,会把这个图像显示到 LCD 上,给用户更友好的感觉。

◆ 支持 MTD 和文件系统。U-BOOT 作为一种强大的 BootLoader,它不仅支持 MTD,而且可 以在 MTD 基础上实现多种文件系统,比如 cramfs、fat 和 jffs2 等。

◆ 支持中断。由于传统的 BootLoader 都分为 stage1 和 stage2,所以在 stage2 中添加中断处理 服务十分困难,比如 BLOB;而 U-BOOT 是把两个部分放到了一起,所以添加中断服务程序 就很方便。

◆ 详细的开发文档。由于大多数 BootLoader 都是开源项目,所以文档都不是很充分。U-BOOT 的维护人员意识到了这个问题,充分记录了开发文档,所以它的移植要比 BLOB 等缺少文档 的 BootLoader 方便。

2 对 U-BOOT-1.1.0 的修改

为了使 U-BOOT-1.1.0 支持新的开发板,一种简便的做法是在 U-BOOT 已经支持的开发 板中选择一种接近的进行修改。由于 U-BOOT-1.10 不支持 ARM-922T 内核,所以选择基于 ARM-920T 内核的 smdk2400 为模板。相关的源代码在 board/smdk2400/下。

2.1 支持 ARM-922T 内核的代码修改

修改以下代码,使 U-BOOT 支持 arm-922t 内核。

① 在 include/目录下新建文件 arm922t.h,内容如下:

#ifndef __ARM922T_H__

#define __ARM922T_H__

#endif

② 在 include/目录下新建文件 wt-arm9.h,该文件描述了 ARM922T 中 Timer、UART 等寄存 器的结构及若干宏定义。具体内容要参考相关处理器手册。

③ 在 cpu/目录下新建目录 arm922t,将目录 arm920t 下的内容复制后,参考手册分别修改 cpu.c、

interrupts.c 和 serial.c,其它文件不修改。

2.2 开发板的支持

建立自己开发板的目录和相关文件。

① 在 include/configs 目录中添加头文件 lh7a400.h。这个文件是 lh7a400 开发板的配置文件,

它包括开发板的 CPU、系统时钟、RAM、Flash 系统及其它相关的配置信息。其格式可参考 include/configs/smdk2400.h。

(7)

FoxICE for ARM 仿真器--100M 以太网口、内置 GDB 调试支持 http://www.foxice.net

② 在 board/目录下新建 wt-arm9 目录,创建如下文件:flash.c、lhmemsetup.c、wt- arm9.c、

Makefile 和 u-boot.lds。

◆ flash.c。U-BOOT 读、写和删除 Flash 设备的源代码文件。由于不同开发板中 Flash 存储器 的种类各不相同,所以,修改 flash.c 时需参考相应的 Flash 芯片手册。它包括如下几个函数:

unsigned long flash_init (void ),Flash 初始化;

void flash_print_info (flash_info_t *info),打印 Flash 信息;

int flash_erase (flash_info_t *info, int s_first, int s_last),Flash 擦除;

volatile static int write_dword (flash_info_t *info, ulong dest, ulong data),Flash 写入;

int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt),从内存复制数据。

◆ lhmemsetup.c。初始化时钟、SMC 控制器和 SDRAM 控制器。

◆ wt-arm9.c。设置各种总线时钟,打开数据 Cache 和指令 Cache,并设置相关内存参数。

◆ Makefile。直接拷贝 board/smdk2400/Makefile,作如下修改:

OBJS := wt-arm9.o flash.o lhmemsetup.o

◆ u-boot.lds 。 设 置 U-BOOT 中 各 个 目 标 文 件 的 连 接 地 址 , 直 接 拷 贝 board/smdk2400/u-boot.lds,作如下修改:

.text {

cpu/arm922t/start.o (.text)

*(.text) }

2.3 添加网口设备控制程序

在 drivers/目录中添加网口设备控制程序 dm9000.c 和 dm9000.h,其中 dm9000.c 主要包 括以下函数:

int eth_init (bd_t *bd),初始化网络设备;

void eth_halt (void),关闭网络设备;

int eth_send (volatile void *packet,int len),发送数据包;

int eth_rx (void) 接收数据包。

用中断方式处理数据包的收发,因此还定义了另外两个函数:

void InitInterrupt (void) ,中断初始化;

void dm9000_irq (void) ,中断处理。

以上两个函数在 cpu/arm922t/interrupts.c 中被调用,最后在 drivers/Makefile 中加入 dm9000.o。

2.4 修改 Makefile

在 u-boot-1.1.0/Makefile 中加入 lh7a400_config : unconfig

@./mkconfig $(@:_config=) arm arm922t wt-arm9

其中“arm”是 CPU 的种类, arm922t 是 ARM CPU 对应的代码目录,wt-arm9 是自己开发板 对应的目录。

交叉编译器安装在/opt/arm/3.3/bin/目录下,所以把 CROSS_COMPILE 设置成相应的路径:

export CROSS_COMPILE = /opt/arm/3.3/bin/arm-elf-

http://www.foxice.net 第 5 页 共 6 页

(8)

2.5 生成目标文件

先运行 make clean,

[zeng@localhost u-boot-1.1.0]$make clean 然后运行 make lh7a400_config,

[zeng@localhost u-boot-1.1.0]$ make lh7a400_config Configuring for lh7a400 board...

再运行 make,

[zeng@localhost u-boot-1.1.0]$make 之后会生成三个文件:

u-boot——ELF 格式的文件,可以被大多数 Debug 程序识别;

u-boot.bin——二进制 bin 文件,纯粹的 U-BOOT 二进制执行代码,不保存 ELF 格式和调试信 息。这个文件一般用于烧录到用户开发板中;

u-boot.srec——Motorola S-Record 格式,可以通过串行口下载到开发板中。

2.6 测 试

通过 JTAG 口将 u-boot.bin 烧写到 Flash 的零地址,复位后执行 u-boot。若运行正常,会 从串口返回如下信息:

U-Boot 1.1.0 (Aug 21 2004 ?18:44:37)

U-BooT code: C3F80000 -> C3FA51A0 BSS: -> C3FA96EC IRQ Stack: c3f1ff7c

FIQ Stack: c3f1ef7c RAM Configuration:

Bank #0: c0000000 8 MB Bank #1: c1000000 8 MB

……

Flash: 32 MB In: serial Out: serial Err: serial WT-ARM9 #

输入 help 得到所有命令列表,help command 列出该命令的功能。紧接着测试 Flash 和网 卡,如果都正常工作的话,表明移植 U-BOOT 的工作基本完成,可以接着调试内核和文件系 统。

结 语

BootLoader 是操作系统和硬件的枢纽,它为操作系统内核的启动提供了必要的条件和参 数。在移植过程中,开发人员除了要掌握 BootLoader 的结构和工作流程外,还要对相关硬件 有一定的了解。目前,笔者移植的 U-BOOT 已经能够稳定地运行在开发板上,而且可以通过 Flash 和网络加载内核和文件系统,为后续开发,特别是驱动程序的开发奠定了良好的基础。

參考文獻

相關文件

電腦 CPU 讀取資料時,先向快取記憶體 (cache memory) 詢問,若無所需資 料則到 RAM 讀取,同時將讀取的資料存入快取記憶體中,下次讀取同樣的 資料時,會向快取記憶體讀取。.. (

就资助 (包括开设高中班级的特殊学校)、按位津贴和直接资助计划中 学,本局将根据学校填写的资料、核准的高中班级结构,以及修读其他语言 课程的学生数目,分别在 2022、2023 和 2024 年的

答 4: 现时大部分中小学均已设置固定旗杆。若未设置旗杆的学校应 尽可能在合适位置设置固定旗杆。学校如因环境或校舍设施限

在家中,姊姊(中六學生)和妺妹* (中四學生)共用一台電腦,兩人經常為

擁有一顆 RISC 架構的 32 位元 CPU ARM7TDMI,和一 顆 CISC 架構的 8 位元 CPU。其中 8 位元的 CISC CPU 是用來相容 Game Boy 和 Game Boy Color

如果發生中斷的時候,CPU 則會執行完之前的工作,並停止接下來的工作,並 將 CS 與 IP 暫存器中的內容值傳入 stack 中暫時保存起來。中斷的種類有「硬體 中斷」 、 「軟體中斷」 、

学校现有教学仪器设备超过1亿元,学校图书馆纸质藏书125万册,电子图书

  从中英谈判开始,香港便断断续续出现了移民潮。据香港学者的统计,从 1981 年到 1986 年,移民海外的 人数为平均每年 2 万人,在 1989 年之后更是达到每年 6