本节书摘来异步社区《嵌入式C编程实战》一书中的第1章,第1.4节,作者:【瑞典】Lars Bengtsson(本特松), Lennart Lindh(林德),更多章节内容可以访问云栖社区“异步社区”公众号查看
1.4 硬件−FPGA设备
本书中使用的所有案例都是基于灵活性极大的FPGA设备上完成的。如果一个设计师使用单片机工作时,他仅仅能完成对硬件架构的测试。但是,如果选用了FPGA,他将能通过设置I/O来实现对所有的从简单到复杂的多处理器体系结构的实验设计。因此,FPGA是最适合进行应用设计教育和学习的平台。
从逻辑上讲,这些FPGA设备可以按照设计师所设想的任何方式进行连接。图1.7显示了FPGA设备的灵活性。左边是一个简单的设计,右边是一个使用了两个32位CPU的复杂设计。
可以通过http://www.youtube.com/watch?v=gUsHwi4M4xE
访问Dave Jones的EEV博客,看到他发布在YouTube上的视频(视频的前15分钟都是关于FPGA的),了解FPGA的知识。
本书将不会对FPGA进行更深入的讨论。
1.4.1 软件
软件可以使用多种方式来描述。软件的一种特性就是串行性(顺序执行),但是,CPU的工作速度很快,因此设计师会认为多个程序是可以并行执行的。这是使用处理硬件组件的相同方式来处理软件的关键。
软件中的组件包含任务、线程、过程、函数、设备驱动程序等。
图1.8中说明了如果一个设计者在C文件中包含了“#include ”这条语句就可以使用stdio这个库文件。检查你的软件工具支持的各种标准库文件是一个好主意。
一个使用C语言的简单组件(函数)的例子;“void print_pix(alt_u16 x, alt_u16 y,alt_u8 rgb)”,“Print_pix”在坐标为(x,y)上的一个像素点写入了一个“RGB”(红绿蓝)颜色。
1.4.2 硬件和软件之间的接口
软件和硬件如同两个不同的世界,为了管理它们之间的接口,须使用软件设备驱动来控制软件,使用寄存器来控制硬件。这里有很多的用于软件和硬件进行通信的标准协议,下面给出了一些实例。
使用软件向硬件写入信息。
使用软件从硬件读取信息。
硬件产生到软件的中断。
如图1.9所示,接口用来连接不同的组件,它包括各种软件和硬件。这种类型的软件叫做设备驱动程序。
各种不同设备的驱动程序必须被添加到项目中。图1.10中给出了UART的设备驱动程序被添加到项目后的样子。在Altera的软件开发工具中,所有的工艺相关部分都保存在板级支持包(BSP)中。应用程序软件是针对产品的。