嵌入式系统设计入门
Contents
本篇需要读者已经具备C语言、汇编语言编程以及具备嵌入式编程基础。它概述了Altium Designer中集成的TASKING工具,描述了如何在一个嵌入式项目里添加、创建和编辑源文件以及如何组建一个嵌入式应用。一个嵌入式项目通常作为 FPGA项目的子项目来使用,一旦被建立后,将会被下载到FPGA设备中运行。
本指南中的例程是用C语言编写的 Hello World 程序,其它例程可以在安装目录下的"\Examples\NanoBoard Common\Processors Examples "文件夹中找到。
嵌入式软件工具
在Altium Designer中使用TASKING嵌入式软件工具能够为几种目标编写、编译、汇编和连接应用程序,例如TSK51x/TSK52x、TSK80x、 TSK165x、PowerPC、TSK3000、MicroBlaze、Nios II 和 ARM。图8-1展示了TASKING工具集所有的组件及输出输入文件。
C编译器、汇编器、连接器和调试器是由目标决定的,但是库文件不是由目标决定的。
下面的表格列举了TASKING工作集所使用的文件类型。
扩展名 | 描述 |
---|---|
源文件 |
|
.cpp | C++源文件,用于C++编译器 |
.c | C源文件,用于C编译器 |
.ic | Intermediate C source file, generated by the C++ compiler |
.asm | 汇编器源文件,汇编源码 |
.src | 汇编器原文件,由C编译器产生,不包含宏指令 |
.lsl | 连接器脚本文件 |
项目文件 |
|
.obj | 可再定位的对象文件,由汇编器产生 |
.lib | 项目文件的存档文件 |
.abs | IEEE-695或者ELF/DWARF 2完全项目文件,由连接器的定位部分产生 |
.hex | 完全Intel Hex项目文件 |
表文件 |
|
.lst | 汇编器表文件 |
.map | 连接器映射文件 |
.mcr | MISRA-C报告文件 |
.mdf | 存储器定义文件 |
创建一个嵌入式项目
开始使用Altium Designer,首先必须创建一个项目可以更加方便地管理其它源文件和产生的输出文件。对于嵌入式软件,则必须有一个嵌入式软件项目。
创建一个新的嵌入式软件项目的步骤:
- 从菜单栏中选择File » New » Project » Embedded Project,或者在Files面板的New部分中点击Blank Project (Embedded)。如果没有显示Files面板,点击设计管理面板底部的Files标签。
- PrjEmb.Projects面板显示一个新的项目文件,Embedded_Project1.PrjEmb。
- 选择File » Save Project As为新的项目文件重命名(使用.prjEmb后缀)。在硬盘中选择想要保存项目的位置,在文件名区域打进文 件名GettingStarted.PrjEmb然后点击保 存。
添加一个新的源文件到项目中
如果用户想添加一个新的源文件(C、汇编或者文本文件)到用户的项目中,步骤如下:
- 在Projects面板中,右击GettingStarted.PrjEmb然后选择Add New to Project » C File, 一个新的C源文件"Source1.C"就添加到Projects面板的嵌入式软件项目中一个叫Source Documents 的文件下面,这时文本编辑器已经打开。
若要添加汇编文件则选择Assembly File,若要添加文本文件,则选择Text Document。 - 输入源代码,本篇中输入如下代码:
#include
void printloop(void) { int loop; for (loop=0; loop<10; loop++) { printf("%i\n",loop); } } void main(void) { printf("Hello World!\n"); printloop(); } - 选择File » Save As保存源文件。在硬盘中选择想要保存源文件的位置,在文件名区域打进文件名hello.c然后点击保存。
- 在Projects面板中右击GettingStarted.PrjEmb然后选择Save Project。
项目现在如图所示:
添加一个已有的源文件到项目中
如果用户要添加一个已有的源文件到当前项目中,步骤如下:
- 在Projects面板中,右击GettingStarted.PrjEmb然后选择Add Existing to Project, 接着会出现一个选择文件添加到项目中的 对话框。
- 选择需要添加到项目的文件然后点击Open。
- 源文件被添加到项目中并在Projects面板中列出,双击文件名能在文本编辑器中查看或者编辑该源文件。
- 保存项目(在Projects面板中右击GettingStarted.PrjEmb然后选择Save Project)。
设置嵌入式项目选项
在Altium Designer中每个嵌入式项目都有一组相关的嵌入式环境参数选项。在添加完文件到项目中和编写好应用程序(我们的例子中是hello.c)之后,接下 来的步骤是:
- 选择设备(产生相关工具集)
- 设置工具集中工具的选项,例如C编译器、汇编器、和连接器选项。(不同的工具集可能会有不同选项)
选择设备
对于一个嵌入式项目,用户必须首先指定用户想要组建嵌入式项目的设备:
- 在Projects面板中,右击GettingStarted.PrjEmb然后选择Project Options。也可以在菜 单中选择Project » Project Options。
接着嵌入式环境参数选项对话框会出现。
- 在Compiler Options标签中选择Device。 用户可以选择基于厂商的设备,也可以选择一个通用设备,如果用户选择一个来自厂商的设备,正确的处理器类型会自己选定,如果用户选择一个通用设备,用户必 须手动指定目标处理器。
手动选择目标处理器(只针对通用设备): - 在左边窗格,展开Processor条 目,然后选择Processor Definition。
- 在右边空格,展开General条 目,然后设置Select Processor到 正确的目标处理器。
- 点击OK同 意新的设备。
设置工具选项
用户可以为项目中所有文件设置通用的嵌入式选项和设置特殊的文件选项。
设置项目全面的选项
- 在Projects面板中,右击GettingStarted.PrjEmb然后选择Project Options。也可以在菜 单中选择Project » Project Options。
接着嵌入式选项对话框会出现。
- 在左边窗格,展开C Compiler条目。这个条目包含了几个能指定C编译器设置的页。
- 在右边窗格,把每一页的选项设置为所需要的值。
- 重复步骤二和第步骤三,为其它工具设置比如汇编器和连接器。
- 点击OK确 定新的设置。
依据嵌入式项目选项,Altium Designer创建了一种称为makefile(用 于建立用户嵌入式应用)的文件。
为单个的文件设置选项
- 在Projects面板中,右击hello.c然后选择Document Options。也可以在 菜单栏中选择Project » Document Options。接着文件 选项对话框会出现。
步骤二到步骤五同设置项目全面的选项是一样的,在嵌入 式项目选项对话框中的Files With Options标签显示有错误设置的文件。如果用户右击该标签中的一个文件,软件会提供一个具有快速从单个文件拷贝、粘贴选项功能的菜单。
组建嵌入式应用
现在可以组建嵌入式应用。
- 选择Project » Compile Embedded Project GettingStarted.PrjEmb或者点击& nbsp;按钮。
TASKING程序组建器编译、汇编、连接和定位嵌入式项目中过期或者组建后被修改过的文件,输出文件是完全项目文件 GettingStarted.abs。 - 可以在Output面板中查看输出的结果(View » Workspace Panels » System » Output)。
编译单个的源文件
如果用户想要编译单个的源文件,步骤如下:
- Right-click on the file (hello.c) you want to compile and select Compile Document hello.c. Alternatively, you can open a file in the Text Editor and select Project»Compile Document hello.c.右击所要编译的文件(hello.c)然后选择Compile Document hello.c。 或者,可以在文本编辑器中打开一个文件,然后选择Project»Compile Document hello.c.
- 选择View » Workspace Panels » System » Messages或者在Panels标签中选择System » Messages打开信息 面板来查看编译过程中可能出现的错误。
- 更正源文件中的错误,保存项目文件。
重建整个应用系统
如果用户想直接组建用户的嵌入式应用,而不在意项目创建的日期或时间,用户可以执行再编译命令:
- 选择Project » Recompile Embedded Project GettingStarted.PrjEmb。
- TASKING程序组建器无条件地编译、汇编、连接和定位嵌入式项目中的所有文件。
用户现在可以调试产生的完全项目文件GettingStarted.abs。
调试嵌入式应用
当组建好的嵌入式程序后,用户就能够使用仿真器来调试产生的完全项目文件。
开始调试之前,必须执行一行或者更多行源代码:
- 选择一个源码级或指令级步骤选项 (Debug » Step Into, Step Over)来单步执行用户的源程序,或者选择Debug » Run运行仿真器。一条蓝线 指示当前执行到的位置。
想要查看更多例如寄存器、局部变量、存储器或者断点的信息,可以打开不同的工作面板:
- 选择View » Workspace Panels » Embedded »(任意一项)。
想要结束调试:
- 选择Debug » Stop Debugging。
设置断点
当嵌入式源文件打开后,可在有小蓝点指示的地方设置断点:
- 点击源程序页面左边的空白处可以设置断点。
一个红色的交叉和红线标记一个断点。
改变断点的属性:
- 如 果想要改变断点,右击断点然后选择Breakpoint Properties...。
禁示或者允许断点:
- 右击断点然后选择Disable Breakpoint (或者Enable Breakpoint当断点被禁止的时候)。
断点面板集合了所有断点(包括被禁止的)及它们的属性:
- 选择View » Workspace Panels » Embedded » Breakpoints。
评估和监视表达式
用户可以在Evaluate面板中检查表达式的值。
- 打开Evaluate面板然后选择View » Workspace Panels » Embedded » Evaluate。
- 在编辑区域输入用户想要评估的表达式然后点击Evaluate。 表达式及其值会出现在Evaluate面板的下方,每次点击Evaluate按 钮代码中的变量都会改变。如果想连续地监视表达式,可以设置一个监视器:
- 选 择Add Watch
新的表达式跟它的值会出现在Watches面板,Watches面板中的值在代码被执行的时候会被持续地更新。
也可以这样添加监视器:选择Debug » Add Watch,输入表达式然后点击OK。
查看输出
在调试模式下,打开Output面板可以查看嵌入式应用产生的输出:
- 选择View » Workspace Panels » System » Output。
输出面板显示嵌入式应用的输出,如图所示。
查看存储器
在调试模式下,可以打开几个存储器窗口查看存储器的内容。能打开存储器窗口的类型由选择的目标处理器决定。
打开主存储器窗口:
- Select View»Workspace Panels»Embedded»Main. The Main memory window opens showing the contents of the memory.选择View » Workspace Panels » Embedded » Main。主存储器打开显示存储器中的内容。
- 在编辑区域,可以修改开始查看的地址。