### 嵌入式开发环境的建立
#### 宿主机-目标机开发模式与XsBase255目标机环境
##### 宿主机-目标机开发模式
在嵌入式系统的开发过程中,宿主机-目标机开发模式是一种非常常见的开发方式。这种方式下,开发工作主要在宿主机(通常是功能强大的PC机)上进行,而目标机则是实际的嵌入式设备。这种模式的优点在于可以充分利用宿主机的强大计算能力来进行编译、调试等工作,同时能够确保目标机的资源得到高效利用。
- **宿主机**: 负责开发和编译工作,通常配置较高,便于开发者进行代码编辑、编译和调试等操作。
- **目标机**: 实际运行嵌入式应用的设备,资源受限,如处理器性能、内存大小等都可能远低于宿主机。
##### XsBase255目标机环境
XsBase255是一款用于教学和实验的嵌入式开发平台,具有一定的通用性和灵活性,适用于初学者入门学习。XsBase255的主要特点包括:
- **JTAG接口**: 用于与外部调试工具连接,实现程序的下载和调试等功能。该接口通常包括以下几个引脚:
- **测试数据输出(TDO)**: 用于输出测试数据。
- **测试时钟输入(TCK)**: 提供测试时钟信号。
- **测试模式选择(TMS)**: 用于选择不同的测试模式。
- **测试数据输入(TDI)**: 输入测试数据。
- **BootLoader**: XsBase255上的BootLoader负责系统的启动过程。BootLoader分为两个阶段:
- **阶段1**: 通常是在ROM中存放的小段代码,完成硬件初始化、为加载阶段2准备RAM空间等任务。
- **阶段2**: 使用高级语言编写,功能更加强大,可以完成更多的初始化任务,以及加载内核映像和根文件系统映像。
#### 宿主机环境的建立
在嵌入式开发过程中,宿主机环境的搭建至关重要,涉及到多种工具和技术的使用。
##### BOOTP协议
BOOTP协议(BootStrap Protocol)是用于无盘工作站获取IP地址和其他配置信息的一种协议,使用TCP/IP网络协议中的UDP端口67/68进行通信。BOOTP的工作流程如下:
1. **客户端发起请求**: 目标板(即客户端)没有IP地址时,会通过广播形式以IP地址0.0.0.0向网络发出IP地址查询请求,并包含其MAC地址等信息。
2. **服务器响应**: 宿主机上的BOOTP服务器接收到请求后,会根据MAC地址查询配置数据库,如果找到相应的记录,则会发送包含目标板IP地址、服务器IP地址等信息的响应。
3. **客户端下载启动映像**: 目标板根据响应信息通过TFTP协议下载启动映像。
##### TFTP协议
TFTP(Trivial File Transfer Protocol)是一种简单文件传输协议,用于在网络上传输文件。相较于FTP,TFTP更加简单且轻量级,主要用于无盘工作站的启动过程。
- **安全性**: 在使用TFTP时,为了提高安全性,建议将其根目录设为一个独立的目录,避免访问其他敏感文件。
##### 交叉编译
交叉编译是指在一种架构的机器上编译另一种架构机器可执行的代码。这是嵌入式开发中的常见需求,因为目标机往往不具备足够的资源来支持完整的编译环境。
- **工具**: 交叉编译器的选择取决于目标机的操作系统类型。例如,对于基于Linux的目标机,可能需要使用GCC编译器。
##### Make工具
Make工具是自动化构建过程的重要工具,可以帮助开发者管理和构建项目。Makefile文件定义了构建过程中的规则,包括目标文件、依赖文件以及构建命令等。
- **基本规则**: Makefile文件中的规则包括目标(target)、依赖(dependency)和命令(command)。
- **宏和标签**: 通过定义宏和标签可以使Makefile文件更具可读性和维护性。
#### 烧写XsBase255的BootLoader
烧写BootLoader是嵌入式开发过程中的一个重要环节,特别是对于XsBase255这类嵌入式开发板来说更是如此。具体步骤如下:
- **编译**: 首先需要编译生成XsBase255专用的JTAG程序Jflash-XSBase255。
- **连线**: 正确连接JTAG线缆,确保所有引脚正确对接。
- **烧写**: 使用JTAG工具烧写BootLoader。
通过以上步骤,可以成功地在XsBase255目标机上烧写BootLoader,为后续的开发工作打下坚实的基础。