《嵌入式C编程实战》——1.4 硬件−FPGA设备

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)中。应用程序软件是针对产品的。

时间: 2024-09-17 16:48:33

《嵌入式C编程实战》——1.4 硬件−FPGA设备的相关文章

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 嵌入式C编程实战 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设

《嵌入式C编程实战》——导读

前 言 本书是为致力于使用微控制器来设计嵌入式系统的人们准备的.本书将翔实的理论与真实的实践相结合.现在由微控制器管理的嵌入式系统无处不在,汽车.机器人.办公室.医疗设备.机械.家居,以及其他各种各样的需求中都可以看到它们的身影.一个典型的微控制器包括了处理器.存储器和外部设备.一个嵌入式系统C开发者需要对微控制器的体系结构和软件开发中的底层操作有一个深入的了解. 本书的主要内容是介绍嵌入式软件的设计,通过真实的案例,使读者"学会如何去做".读者通过书中提供的实验,可以快速地做到理论与

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机 通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设备.硬盘驱动器,

《嵌入式C编程实战》——1.3 复杂度降低

1.3 复杂度降低 正如我们所见,问题的复杂度正在不断地增加,我们必须对此做出应对.可是,关键是怎样才能降低复杂度呢?本节将会就这个问题给出一些基本的答案. 下面给出了一些"与降低复杂度相关的词汇". 抽象.结构(或体系).层次结构. 1.3.1 抽象 本书在以下部分定义了最小的组件,有时这些组件也被称为叶组件.这些组件包括逻辑门.触发器.存储单元(逻辑组件).其实,还可以将这些组件再分成更小的部分,如晶体管.电阻.电感和电容等最小的不可分割的组成.这些逻辑组件是总线.CPU的组成部分

《嵌入式C编程实战》——1.2 应用程序和平台

1.2 应用程序和平台 图1.4所示的应用程序和平台是一个嵌入式计算机系统的两个组成部分.平台被设计用来帮助应用程序完成真正的任务.一个平台可以是硬件和操作系统的组合,而应用程序则是一个软件.例如,用来控制工业机器人的软件.通常,一些很小的系统中是不需要操作系统的.事实上,支持应用程序的平台和项目的管理之间存在着联系,一些项目中已经证实了这种联系的重要性.这意味着如果有一个可以简化应用程序实现的平台,那么就无需再为项目管理付出高昂的代价了. 性能:如果一个系统不能满足它的性能需求,就是一个毫无用

《嵌入式C编程实战》——1.5 软件开发工具

1.5 软件开发工具 现在有很多的软件开发语言,如C.C++.ADA.LISP等.软件的开发都遵循标准化的过程.程序(源代码)可以被编译成目标对象可以执行的代码,一些编译器会将代码转换为汇编程序.而链接器将程序与用到的库文件和其他一些东西组织在一起,而且所有的基地址都是绝对地址.链接器最后产生的可以被下载到目标系统并执行的机器代码,如图1.11所示. 1.5.1 编译器 编译器是一种计算机软件,它的作用是将源程序转换为目标程序.通常,通过两个步骤,就可以将一个C语言编写的程序转换为目标程序.第一

《嵌入式C编程实战》——1.6 YouTube的推荐资源

1.6 YouTube的推荐资源 互联网是一个无穷无尽的信息来源.本书中大多数章节的结尾部分都会推荐一些Youtube上的视频,这些视频与本章的主题有关.下面给出了几个推荐的视频. 编译器的工作原理:https://www.youtube.com/watch?v=Kd93n4_5UjM. API是什么?:https://www.youtube.com/watch?v=iGkTCObcOqM. SDK是什么?:https://www.youtube.com/watch?v=py5H8gKvw44.

C语言嵌入式系统编程修炼之背景篇

不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择.而与之相比,C语言--一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择.笔者在嵌入式系统项目的开发过程中,一次又一次感受到C语言的精妙,沉醉于C语言给嵌入式开发带来的便利. 图1给出了本文的讨论所基于的硬件平台,实际上,这也是大多数嵌入式系统的硬件平台.它包括两部分: (

《GO并发编程实战》—— 原子操作

声明:本文是<Go并发编程实战>的样章,感谢图灵授权并发编程网站发布样章,禁止以任何形式转载此文. 我们已经知道,原子操作即是进行过程中不能被中断的操作.也就是说,针对某个值的原子操作在被进行的过程当中,CPU绝不会再去进行其它的针对该值的操作.无论这些其它的操作是否为原子操作都会是这样.为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成.只有这样才能够在并发环境下保证原子操作的绝对安全. Go语言提供的原子操作都是非侵入式的.它们由标准库代码包sync/atomic中的众多函