第一篇:Linux实验 常用开发工具
一、实验目的
1、掌握Linux 下的C语言编译的基本方法
2、理解make工具的功能,学会编制makefile的方法
二、实验内容
1、利用gcc编译C语言程序,使用不同的选项,观察并分析显示结果
2、编写一个由多文件构成的C语言程序,编制makefile,运行make工具进
行维护。
三、主要实验步骤
1、设计一个程序,打印输出输入数字的正弦值。要求定义属于自己的头文件,并且放在另外的目录中。使用下列选项进行编译:-I,-E,-c , –o ,-l。参考教材的P155-158节的内容。
2、针对下面4个C语言程序,main.c, one.c, two.c, public.h.。写一个makefile 文件,运行make工具进行维护。public.h 在另外的目录中。
Main.c: include “public.h” int main(){
printf(“main...n”);show1();show2();return 0;} One.c #include “public.h” void show1(){ printf(“hello, this show1 n”);} Two.c #include “public.h” void show2(){ printf(“hello, this show2 n”);}
public.h
#ifndef __MANYCO_MAKEFILE_PUBLIC_1 #define __MANYCO_MAKEFILE_PUBLIC_1 #include
五、心得体会
通过对数字的正玄值程序的编写,我们掌握了Linux 下的C语言编译的基本方法,理解了make工具的功能,学会了编制makefile的方法。我们更加深刻的了解了GCC的各参数的含义,知道了GCC的编译流程大致为:先用Vim编辑源程序,生成源程序文件,然后使用GCC的“-E”参数预处理,生成经过预处理的源程序文件,接着用GCC的“-S”参数编译,生成汇编语言程序文件,然后用GCC的“:”参数汇编,生成二进制文件。最后再一次使用GCC,把二进制文件和一些用到的链接库文件链接成可执行文件,并使用“-o”参数将文件输出到目录文件,最终的目录文件就是完全编译好的可执行文件。
第二篇:实验五常用软件开发工具
实验
五、常用软件开发工具
一、实验目的
1、熟悉字符模式下的C程序编译和调试环境,基本掌握Linux字符模式下的编译工具和调试工具的使用;
2、本实验需要综合使用Linux基本文件命令、编辑器的使用,练习在Linux的字符模式下,编辑、编译及调试一个C程序的基本方法。
二、实验内容和步骤 1 gcc和 g++ 语言编译器
GCC是GNU Compiler Collection的缩写,它是世界上最为重要的开放源代码软件[18]。因为所有其他的开放源代码项目都依赖于GCC进行编译。比如,没有GCC,Linux的产生就不会成为可能。
GCC能工作在很多平台上,这里所说的平台是指计算机硬件芯片和运行在其上的操作系统的组合。下表是GCC运行的平台。表 GCC运行的平台 硬件
操作系统
Alpha
Red Hat Linux 7.1
HPPA
HPUX 11.0
Intel x86
Debian Linux 2.2, Red Hat Linux 6.2, FreeBSD 4.5
MIPS
IRIX 6.5
PowerPC
AIX4.3.3
Sparc
Solaris 2.7
GCC可以编译多种语言:C,C++,对象C(标准C的派生),Fortran,Java,Ada。正如GCC缩写所代表的对象一样,GCC实际上是多种编译器的统称,gcc是所有编译器的统一的程序接口,在本书中,并没有区分GCC和gcc。同时,GCC 也能够进行代码优化,提高执行程序的运行速度。g++是构建于 gcc 基础上的 C++语言编译器。gcc 编译过程分为 4个阶段: l
预处理 l
编译 l
汇编 l
连接
最简单的C 语言编译的例子: 用 vi建立一个 hello.c文件 $vi hello.c
输入字符 i,插入文本以下文本 /*
* hello.c
*/
#include
printf(“ Hello World!n”);
return 0;}
最后输入字符
gcc 带有多达数页的编译选项,我们仅列出最常用的几项:
-o 可执行文件名指定输出的可执行文件名,而不是默认的 a.out-c
只编译生成.o 的目标文件,不连接生成可执行文件-s
只编译生成.s的汇编文件,不连接生成可执行文件-g
在可执行文件中加入标准调试信息-Wall
允许GCC发出警告型错误信息 选项使用的例子:
对以上 hello.c使用-o,-g 常用选项重新编译、执行: $gcc-g hello.c-o hello $./hello Hello World!$
GCC默认的扩展文件名:.c
C 语言源代码
.C
.cc
C++语言源代码.i
预处理后的 C语言源代码.ii
预处理后的 C++语言源代码.S.s
汇编语言源代码.o
编译后的目标代码.a
.so 编译后的库代码
下面的例子由两个文件组成:main.c, calc.c,其中,main.c文件内容为: #include
printf(“Please input a positive integer!n”);
scanf(“%i”,&iInput);} iOutput = calc(iInput);
printf(“Result is:%in”, iOutput);return 0;} calc.c的文件内容为: #include
iOut += iOut * iIn;} return iOut;}
1、编译过程
有三种方式编译这两个源程序,一是直接使用如下命令行完成编译、链接过程: $gcc main.c calc.c-o main 命令行中,main.c calc.c的后缀名指明了调用c编译器,前面讲到了gcc是GCC的众多编译器的统一入口,gcc靠后缀名决定调用什么编译器,-o 参数指定了可执行文件的文件名为main。
第二种方法是编译calc.c为静态库,编译main.c时指定静态库的位置。需要将calc.c编译成中间文件calc.o,使用如下命令行: $gcc-c calc.c 生成静态库文件,添加calc.o到静态库中,使用如下命令行: $ar-r libcalc.a calc.o 命令行中,-r libcalc.a参数表示建立静态库,名字为libcalc.a。接下来,使用如下命令行: $gcc main.c libcalc.a-o main 上面这条命令也可以用下面的命令完成: $gcc main.c-lcalc –o main-l参数可以指定库名称,这里calc表示使用库libcalc.a,库名字前面的lib和后面的.a被省略掉了,遵从了命名法。
第三种方法是建立共享库,编译时指定共享库。首先,编译calc.c为calc.o,使用命令行: $gcc-c-fpic calc.c 命令行中,-fpic指定calc.o为可重分配地址属性,pic是position independence code的缩写。接下来使用calc.o生成共享库calc.so: $gcc-shared calc.o –o calc.so 这两条命令也可以缩减为一行: $gcc-shared-fpic calc.c-o calc.so 最后编译main.c,链接生成的共享库: $gcc main.c calc.so-o main 2 make项目管理器
make 项目管理器(GNU 中的名称为 gmake)可以根据项目开发者说明的项目开 发文件 Makefile 自动的进行编译配置和重复编译,能实现复杂项目的编译自动化。项目开发文件 Makefile 的编写使用以下规则: 目标体 1:依赖体 1 [依赖体2 [...]] 命令行 1 命令行 2
[...]
目标体 2:依赖体 1 [依赖体2 [...]] 命令行 1 命令行 2
[...]
[...]
其中目标体是命令行要生成的输出文件,依赖体是命令行要输入的文件或选项,命 令行序列是要创建目标体文件所需要的步骤,例如编译命令。无特别指定,make 总是使用当前目录中的 Makefile 进行自动编译。
例如我们在当前目录中有两个项目开发文件hello.c和hello.h,则Makefile文件可以 编写为: hello: hello.o
gcc hello.o-o hello
hello.o: hello.c hello.h
gcc-c hello.c clean:
rm hello *.o
make 命令的使用: $g make
输入make或make hello将生成Makefile中所有的目标文件,即hello,hello.o,hello.s。$g make hello.o 将仅生成目标文件 hello.o $g make clean
是一条伪目标生成命令,该目标没有依赖体,它只执行对已生成目标文件的删除。当我们对以上依赖体中的任意一个进行了修改,重新 make 时仅会引发对应目标体的重新生成,从而提高了编译的效率并保证了项目开发的正确性。3 gdb程序调试器
GDB是GNU Project Debugger的缩写,用于调试Ada, C, C++, Objective-C, Pascal 和其他语言编写的程序[20],这些程序可以运行在本地计算机上,也可以运行在远程计算机上。GDB可以运行在几乎所有的UNIX和微软Windows平台上。
GDB主要能做下面4种事(以及由它们所支持的其他事情): 1)启动程序,指定可能影响程序运行的任何条件; 2)指定程序在一定条件下停止; 3)检查当程序停止时发生的事情;
4)通过改变程序中的某些条件,测试可能造成的软件错误,还可以由此学习其他的软件错误。
GDB可以做源代码级别的程序调试(需要在编译时指定相应条件),也可以做二进制级别的程序调试。
如果您在 gcc 编译选项中用到了-g 调试选项,则编译出的可执行文件就会带有符号表。这样的程序就可以使用 gdb 跟踪调试,观察到它的高级语言源代码的执行过程和变量的中间结果,从而能快速的排除程序运行时发生的错误。以下是一个带有运行时错误的C程序,注意程序想通过传地址方式在一个函数中为字符变量 C赋一个字符,但它引用了一个空指针,这将引发运行时的段非法错误使得程序异常终止。但我们可以通过 gdb 跟踪到它产生错误的位置,从而分析出产生错误的原因。/*
* debugmy.c */
#include
*cptr = 'a';
printf(“myputc=%cn”,*cptr);
}
int main(void){
char c;
char * cptr;
c = 'A';
myputc(cptr);
return 0;}
使用带-g 选项的 gcc编译、执行: $gcc-g debugmy.c-o debugmy $./debugmy 段错误 $
使用 gdb 跟踪查错 $ gdb./debugmy
GNU gdb Red Hat Linux(6.3.0.0-1.122rh)
Copyright 2004 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.Type “show copying” to see the conditions.There is absolutely no warranty for GDB.Type “show warranty” for details.This GDB was configured as “i386-redhat-linux-gnu”...Using host libthread_db library “/lib/libthread_db.so.1”.(gdb)
现在进入了 gdb 调试状态,可以使用 gdb 的调试子命令跟踪程序的执行。Gdb 常 用命令:
list [行号] 列出指定行号的上下行(缺省为 10行)break [源程序文件名:] 行号建立一个断点 run
启动被调试的程序 next
从断点处向下执行一行
step
从断点处向下执行一行,当前行为函数则跟踪进入函数 continue
继续从断点处连续执行 print 变量名打印变量当前值 quit
退出 gdb
让我们现使用 list命令查看一下要调试的程序是否已经装入,输入:(gdb)list 10
void myputc(char * cptr)6
{
*cptr = 'a';
printf(“myputc=%cn”,*cptr);9
}
int main(void)11
{
char c;13
char * cptr;14
c = 'A';
我们将断点设在第 15 行上,输入:(gdb)break 15
Breakpoint 1 at 0x80483c0: file debugmy.c, line 15.开始跟踪执行,输入:
(gdb)run
Starting program: /root/ipc/debugmy
Reading symbols from shared object read from target memory...done.Loaded system supplied DSO at 0xffffe000
Breakpoint 1, main()at debugmy.c:15 15
myputc(cptr);
程序执行到第 15 行上停止,我们采用单步执行跟踪错误的发生,输入:(gdb)step
myputc(cptr=0x9bbe40 “U211? WVS203? L? 215s”)at debugmy.c:7 7
*cptr = 'a';
程序执行一行,进入函数myputc,再单步执行一行,再次输入:(gdb)step
Program received signal SIGSEGV, Segmentation fault.0x0804838d in myputc(cptr=0x9bbe40 “U211? WVS203? L? 215s”)at debugmy.c:7 7
*cptr = 'a';
第三篇:嵌入式linu学习心得
嵌入式Linux学习心得
1、Linux命令
ls:查看目录-l以列表方式查看;ls –l 与ll的功能一样 pwd: 查看当前的目录
cd:改变当前操作目录cd /直接跳到根目录 cd..回到上一级目录 cat: 打印显示当前文件的内容信息
mkdir:创建目录
fdisk: 查看硬盘分区信息,-l以列表方式查看
->代表是链接文件,类似window下的快捷方式。
cp: 复制命令,例子cp 文件名 /home/dir/
mv: 移动或改名,如mv sonf.confsonf.txt(改名)移动:mv sonf.conf / rm:删除命令,如rm –f test.c;如删除目录rm –fr d
man:查看某个命令的帮助,man 命令
2、各系统目录的功能
drw—r—w--:d代表是目录,drw代表当前用户的权限,r代表组用户的权限,w代表其它用户的权限。x代表有执行权限。
/boot/gruff.conf: 启动引导程序
/dev:brw—rw--:b代表是块设备。Linux设备有三种,块设备(b开头)、字符设备(c开头)、网络设备。had代表第一个硬盘,hdb代表第二个硬盘。Hdb2代表第二块硬盘的第二个分区。3,67代表主设备为3,从设备为67./etc:存放的是系统的配置文件。Inittab文件存放不同启动方式下必须启动的进程。Inittab文件中有6个启动level,wait中对应着6个level的目录,respawn代表当一个进程被意外终止了,但会自动启动的进程,如守护进程。rc.d目录中存放了一个rc.sysinit文件,里面存放系统初始化配置信息。/etc还有一个vsftpd里面存放tcp、ftp的配置。
/home : 用户目录,存放用户的文件,/lib:存放库文件,后缀为so的文件代表动态链接库。
/lost+found:系统意外终止,存放一些可以找回的文件。
/mnt:挂载外部设备,如挂载光驱:mount –t /dev/cdrom/mnt/cdrom,如
果在双系统中,要查看windows中D盘的文件,首先应该将D盘的文件映射过来,mount –t /dev/hda2/mnt/windows/d
/opt:用户安装的应用程序
/proc:是系统运行的映射,比较重要。里面的文件数字代表进程号。每个进程号目录下包含进程的基本信息。还有其他信息,如cpuinfo等,内核支持的文件系统filesystem等。系统支持的中断interrupts,iomen代表内存分配情况。ioport存放IO端口号。还有分区信息,modole信息,状态信息,版本信息
对于Linux的设备驱动程序,有两种加载模式,一种是直接加载进linux内核,一种是以模块的方式加载到内核。
/sbin: 系统管理的一些工具。如poweroff关机工具。
/usr: 安装系统时很多文件放在此目录下面,包含一些更新等,include包含的头文件,lib 是Linux的库文件,src包含Linux2.4的内核源码
/var:存放是临时变量
3、
第四篇:EDA开发工具简介
EDA开发工具简介.txt为什么我们在讲故事的时候总要加上从前?开了一夏的花,终落得粉身碎骨,却还笑着说意义。本文由中国山东人2009贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。EDA 开发工具简介
1.Xilinx ISE 8.2i Xilinx ISE 8.2 终于于 2006.6 月释放。业界最完整的可编程逻辑设计解决 方案,用于实现最优性能、功率管理、降低成本和提高生产率。Xilinx ISE 8.2i 除了具有目前市场上最快的速度,Xilinx ISE v8.2i 和新 的 Virtex-4? FPGA 系列还具有多达 200,000 个的逻辑单元和高达 500 MHz 的频 率性能,使设计者能够实现完全崭新的设计前景!Xilinx ISE 8.2 领略世界上最 容易使用的、首屈一指的 PLD 设计环境,由顶级 FPGA 工具供应商提供的高级逻 辑解决方案 Xilinx ISE 8.2 Xilinx ISE 8.2 关键特性 支持 Virtex-4 系列器件 – 业界第一个多平台 FPGA 与最接近的竞争产品相比,Xilinx Fmax 技术的平均性能快出 10%-37%,最 高性能快出 70%。可以节省一个或多个速度等级的成本,并可在逻辑设计中实现最低的总成 本。可支持多处理器工作站,通过在设计流程中采用超线程技术,使您能够节省 项目时间并充分使用工作站设备。无可比拟的易用性和获得广泛支持的平台 2004 与 2005 年的独立调查显示:ISE 是 FPGA 设计者的首选。2006 年 6 月,今天宣布推出其深受欢迎的集成软件环境(ISE)设计工具 套件 8.2i 版,新版本增加了新的 ISE Fmax 技术,具有增强的物理综合能力,可提高 Virtex?-4 和 Spartan?-3 架构的性能和时序收敛特性。通过使用 ISE 8.2i 软件,设计者可将性能提升至比以前 ISE 版本平均高出 10% 到 37%,与相 比,并将使用 Virtex-4 FPGA 的性能提升至最高可超出竞争解决方案的 70%。ISE 8.2i 还对其业界唯一的局部重配置技术进行了增强,可实现更低的成本、更小 的尺寸和更低的功耗。通过以低于上一个 ISE 版本的成本来提供相同的平均速度等级,这些新特 性旨在进一步加强赛灵思面向高性能系统设计的解决方案,包括具有嵌入式处 理、数字信号处理(DSP)和高级连接性协议等功能的设计。通过在 ISE 工具中使用高级物理 综合功能,设计者可最大程度地提高性能吞吐率,加快上市时间,降低总开发成 本。此外,诸如 ChipScope? Pro 8.2i 片内调试(in-silicon debug)集成以及更为强大的 局部重配置支持等特性进一步缩短了开发时间,降低了系统成本。
“我们一直在与设计者们合作以解决他们的关键挑战,如时序收敛、成本和 系统设计复杂度等。ISE 8.2i 通过高级设计编译优化很好地解决了这些问题,提供了实质性的自动化 Fmax 提升和直观的新界面特性,”赛灵思公司设计软件部副总裁 Bruce Talley 说。“现在设计者可以有更大的把握来满足其最终产品的系统性能、功 能性和成本目标。” ISE Fmax 性能技术可将设计速度提升至最高超出竞争解决方案 70% 新的 ISE Fmax 技术采用高效算法以改善物理综合与逻辑优化的结果,使 Virtex-4 FPGA 的性能优势比竞争器件可最多高出 70%。ISE Fmax 技术包括用 于设计重定时、时序驱动包装与布局、性能评估与布局后逻辑优化的一整套功能。最新版本中包含的 ISE Xplorer 工具是一个易于使用的脚本,可帮助设计者评 估和优化 Virtex-4 与 Spartan-3FPGA 的性能,对于时序驱动设计可比以前版 本平均提高 10% 的性能。ISE 8.2i 提供了一种性能评估模式,可对没有时序约 束的设计提供 37% 的直接性能改善。ISE Fmax 技术与由 Synplicity 和 Mentor Graphics 提供的综合优化技术 互为补充。综合优化技术与 ISE Fmax 技术的结合可使用户满足苛刻的时序目 标。“新的 ISE 8.2i 软件与 Synplify Pro 综合技术产品的结合,为赛灵思 FPGA 设计者们提供了推进时序性能的优势,”Synplicity 公司 FPGA 产品营销 主管 Jeff Garrison 说。“我们一直与赛灵思保持紧密合作,以确保我们的最 新技术,如最近在我们的 Synplify Premier 产品中引入的基于图形的物理综合 际醯龋 芄挥?ISE 软件实现对接,从而为整个赛灵思 FPGA 产品线提供最快的时 序收敛。” “Mentor Graphics 的高级 Precision Synthesis 解决方案在赛灵思 ISE 8.2i 版中的紧密集成,为我们的共同客户同时提供了两种环境的最佳特性,” Mentor Graphics 公 司 设 计 创 建 与 综 合 技 术 部 总 经 理 Simon Bloch 说。“Precision Synthesis 中经过客户验证的设计分析技术,可实现自动/交互优 化与用户控制之间的恰当平衡,现在可为 ISE 8.2i 中业界领先的赛灵思 Fmax 技 术提供有力补充。” 业界唯一的局部重配置解决方案 通过推出 8.2i 版本,赛灵思增加了一种新的方法,以增强其业界首个且唯 一的局部重配置解决方案。局部重配置可降低系统成本、尺寸、器件数量及功耗,适用于众多的应用,如软件无线电(SDR)和高性能计算等。设计者现在可以在 器件其余部分继续运行的同时将不同的硬件配置动态加载到 FPGA 的同一区域。这种实时可编程特性建立在现场可升级性和多引导方法的基础上。现场可升级性 和多引导方法已经使许多赛灵思客户通过实时诊断提升了系统可靠性,降低了现 场服务成本,并延长了市场中已有产品的使用寿命。易用性提高了生产率
ISE 8.2i 在性能评估模式中提供了快 37% 的按钮,可实现对无需约束的设 计进行快速和轻松的评估。ISE 8.2i 还提供了对双核 CPU 工作站的支持,可实 现更快的编译时间和在多个 CPU 核上的设计作业并行处理。业界最全面的功耗 分析解决方案 Xpower、WebPower Tools 8.2i 中改进的 Web 分析功能以及新的 功耗优化布线技术都进一步加强了这些能力。ISE 8.2i Project Navigator(项 目浏览器)和集成的 ISE Simulator(仿真器)工具在所有平台上提供了全新直 观的 Windows XPTM 外观和感受,使 ISE 8.2i 比以前任何时候都更容易学习和 使用。2.ChipScope Pro 8.2i ChipScope Pro 8.2i 的发布提供了业界最完善和易用的调试解决方案,最 快可超出仿真 50 倍。ChipScope Pro 内核资源估计器可让用户发掘片上调试与 验证功能选项,如触发宽度、采样深度,以及高级功能如触发排序和存储资格审 查等,以决定片上可视性与 FPGA 资源分配之间的最佳平衡。3.Xilinx EDK 8.2i嵌入式开发套件 Xilinx平台 FPGA,例如 Virtex-
4、Virtex-II Pro 或 Spartan-3 器件系列 允许工程团队定制他们的硬核/软核设计,以优化其特性集、性能、尺寸和成本.采用灵活的可编程平台,这些智能的平台工具能够使系统架构、硬件和软件工程 师成为可编程系统领域的专家。XPS 7.1i 支持 Virtex-4 FX,并有一系列很有用的改进 我们很高兴地宣布发布 7.1i 版嵌入式开发套件和平台工作室工具包。这些 功能强大的处理器开发工具是 Xilinx 综合性嵌入式解决方案的关键部分,面向 Virtex 和 Spartan 的 FPGA.Xilinx平台工作室工具包通过提取和自动化处理 器系统设计,加速了嵌入式开发。7.1i 主要的更新是对 Virtex-4 FX平台 FPGA 器件和其它 XPS 改进提供新 的设计支持,包括软件域轮廓分析、硬件平台开发的改进、易用性和产品的改进。7.1i 主要包括以下的创新: 5.Virtex-4 FX平台 FPGA 嵌入式开发支持: 使用协处理器单元(APU)单元应用,优化了性能,通过将它们移入硬件,强 化了软件功能 轮廓/分析关键有助于识别性能瓶颈,使设计功能面向 FPGA 硬件(XPS-SDK)的加速 硬件平台开发的改进: 返回设计资源错误(C, MSS, MHS, etc.)ISE 和 XPS 工具相结合-ISE 直接调用 XPS 的程序,如基本系统组建器向导 设计数据表的生成 外设应用测试代码的生成 XPS 仿真环境检查器 为 XPS 产生定制的板定义文件
易用性和其它产品改进 XMD 的改进 支持新的 MicroBlaze 调试逻辑、面积更小、下载更快 中断和 FLASH 调试的更精细控制 FLASH 书写程序的改进 自动引导下载程序的生成 仿真 XPS 仿真环境检查器 自动测试的生成 MicroBlaze ISS 支持/改进 FSL 高速缓存存储器链接接口 FSL 数据链接 模型的改进 OPB Uartlite 支持中断、波特率等 OPB GPIO 支持中断 OPB 定时器支持多个定时器 系统仿真支持(MicroBlaze)为 MicroBlaze 系统生成虚拟平台模型 概要 升级到 8.4 版 TCL 运行 GUI 和基本工具的命令行 DRC 的改进 升级到新版 GCC,用于 MB 和 PPC LWIP & XMK 打包用于插槽: Ethernetlite 的 LWIP 支持 编译器的改进:新 CMP 指令,MB-gcc 优化 数据表生成器 PBDE 的改进 允许块上有端口 使端口成为全局或外部端口的能力 将原理图捕捉到 JPEG 文件中
将 FSL 向导并入 Create IP 向导 现在,产生/输入外设向导在 Verilog 中输出用户核心 改进了库处理-用户库 支持 Verilog 6.Altera Quartus II 6.0(电子设计): Quartus II 软件 6.0 在性能和效率上达到了最高水平。这一版本包括了 FPGA 供应商提供的第一款时序分析工具——TimeQuest 时序分析仪,能够很好的 支持业界标准 Synopsys 设计约束(SDC)时序格式。该版本还含有扩展团队设计功 能,提高了高密度设计协作的效率。Altera 在 Quartus II 软件 6.0 高密度设计上实现重大改进 2006 年 5 月 9 号,香港—Altera 公司(NASDAQ: ALTR)今天宣布开始发售 6.0 版的 Quartus? II 软件。该版本包括了由 FPGA 供应商提供的第一款时序分 析工具 TimeQuest 时序分析仪,为业界标准 Synopsys 设计约束(SDC)时序格式 提供自然、全面的支持。这一最新版本还包括扩展的团队设计功能,能够有效管 理高密度设计团队之间的协作。这些改进迎合了当今高密度 90nm 的设计要求,同时为满足客户对更高密度 FPGA 的需求以及 Altera 发展下一代 65nm 产品系列 打下了基础。Synopsys 战略联盟总监 Lonn Fiance 评论说:“FPGA 设计人员将业界标准 SDC 时序约束格式直接读取到 TimeQuest 时序分析仪中,能够更迅速的实现时序 逼近。采用 SDC 格式可以提高 FPGA 设计人员的效率,进一步促进标准时序验证 方法在半导体业界的应用。” Quartus II 软件 6.0 的新增功能包括: TimeQuest 时序分析仪 TimeQuest 时序分析仪——新的 ASIC 性能时序分析仪,能够自然的支持业 界标准 SDC 时序约束格式。TimeQuest 时序分析仪帮助您建立、管理、分析具有 复杂时序约束的设计,例如时钟复用设计和源同步接口,并能够迅速进行高级时 序验证。Quartus II 软件 6.0 订购版含有 TimeQuest 时序分析仪。
工程管理接口——改进的团队设计 工程管理接口——在顶层设计上管理资源和时序预算。此外,您还可以利用 工程管理接口来管理模块间的时序约束,以达到最佳性能。这一新功能使团队能 够协作实现高密度 FPGA 设计,从而提高设计性能和效率。这一功能是建立在 Quartus II 软件 5.0 和 5.1 首次引入的渐进式编译设计基础之上。其他增强功能
SystemVerilog 支 持 —— 包 括 对 流 行 SystemVerilog 语 法 的 支 持。SystemVerilog 提高了寄存器传送级(RTL)设计的抽象等级,更迅速的实现 RTL 设计。改进的 I/O 引脚规划器——直接对 Altera?宏功能、知识产权(IP)进行整合,以及对引脚的简单分配。扩展的板级设计支持——采用 Stratix? II FPGA 进行设计时,为设计输出 提供 HSPICE 模型,以提高电路板建模的效率。LogicLock 增强——提供 LogicLockTM 成员资源滤除功能,将某些资源类型(例如,数字信号处理(DSP)单元、M4K 存储器等)的设计单元从 LogicLock 区 域中自动滤除,从而提高了设计效率。SignalTap II 逻辑分析仪——含有 Nios? II CPU SignalTap? II 分解插件。插件协助完成对已定义 Nios II 节点集的“提取”,以及 Nios II CPU 助记符定 义,从而提高了系统级调试效率。OS 支持 Windows XP Professional x64(32 位)——运行 Quartus II 软件 32 位应 用软件的 Windows XP Professional x64 操作系统支持 Quartus II 软件。64 位硬件/软件平台上运行 32 位应用软件的优势在于能够访问更多的存储器,从而 提高了性能。7.Red Hat Linux Enterprise 4.0——现在提供支持。Nios.II.Development.Kit.Version.5.0(NiosII 嵌入式处理器集成开发环 境)在 20 世纪 90 年代末,可编程逻辑器件(PLD)的复杂度已经能够在单个可 编程器件内实现整个系统。完整的单芯片系统(SOC)概念是指在一个芯片中实 现用户定义的系统,它通常暗指包括片内存储器和外设的微处理器。最初宣称真 正的 SOC――或可编程单芯片系统(SOPC)――能够提供基于 PLD 的处理器。在 2000 年,Altera 发布了 Nios 处理器,这是 AlteraExcalibur 嵌入处理器计划中 第一个产品,它成为业界第一款为可编程逻辑优化的可配置处理器。本文阐述开 发 Nios 处理器设计环境的过程和涉及的决策,以及它如何演化为一种 SOPC 工具。Altera 清楚地意识到,如果把可编程逻辑的固有的优势集成到嵌入处 理器的开发流程中,我们就会拥有非常成功的产品。基于 PLD 的处理器恰恰具有 应用所需的特性。一旦定义了处理器之后,设计者就“具备”了体系结构,可放 心使用。因为 PLD 和嵌入处理器随即就生效了,可以马上开始设计软件原型。CPU 周边的专用硬件逻辑可以慢慢地集成进去,在每个阶段软件都能够进行测试,解 决遇到的问题。另外,软件组可以对结构方面提出一些建议,改善代码效率和/ 或处理器性能,这些软件/硬件权衡可以在硬件设计过程中间完成。处理器体系和开发流程 Altera 很早就认为创建基于 Nios 处理器的系统和处理器本身一样很重 要。随着新生产品逐渐成熟,Altera 必须让嵌入设计者信服地接受新的处理器
和新的设计流程。我们最无法确定的是嵌入设计者是否接受新的指令集。随着 C 成为嵌入设计的事实标准,这一问题也迎刃而解。Altera 和 Cygnus(现归 RedHat 所有)密切合作定义指令集体系,这样 Cygnus 可以很容易地导入和优化他们的 GNUPro Toolkit,这是绝大部分设计者非常熟悉的标准 GNU 环境。设计流程成为最大的问题。现成的微控制器提供了定义明确的外设组,由制造商集成处理器和外设。可配置处理器让设计者自行创建总线体系,定义存 储器映射和分配中断优先级,非常自由地完成更多的工作。Altera 相信 SOPC 的 优势会吸引嵌入设计者,但是条件是其它的需求最小,风险很低。8.Nios II 集成开发环境 Nios II 集成开发环境(IDE)是 Nios II 系列嵌入式处理器的基本软件开发 工具。所有软件开发任务都可以 Nios II IDE 下完成,包括编辑、编译和调试程 序。Nios II IDE 提供了一个统一的开发平台,用于所有 Nios II 处理器系统。仅仅通过一台 PC 机、一片 Altera 的 FPGA 以及一根 JTAG 下载电缆,软件开发人 员就能够往 Nios II 处理器系统写入程序以及和 NiosII 处理器系统进行通讯。Nios II IDE 基于开放式的、可扩展 Eclipse IDE project 工程以及 Eclipse C/C++ 开发工具(CDT)工程。Nios II IDE 为软件开发提供四个主要的功能:(1)工程管理器 Nios II IDE 提供多个工程管理任务,加快嵌入式应用程序的开发进度。新工程向导 ——Nios II IDE 推出了一个新工程向导,用于自动建立 C/C++ 应用程序工程和系统库工程。采用新工程向导,能够轻松地在 Nios II IDE 中创 建新工程。软件工程模板——除了工程创建向导,Nios II IDE 还以工程模板的形式提 供了软件代码实例,帮助软件工程师尽可能快速地推出可运行的系统。(2)编辑器和编译器 Altera Nios II IDE 提供了一个全功能的源代码编辑器和 C/C++编译器 文本编辑器——Nios II IDE 文本编辑器是一个成熟的全功能源文件编辑 器。这些功能包括:语法高亮显示-C/C++、代码辅助/代码协助完成、全面的 搜索工具、文件管理、广泛的在线帮助主题和教程、引入辅助、快速定位自动纠 错、内置调试功能。C/C++编译器——Nios II IDE 为 GCC 编译器提供了一个图形化用户界面,Nios II IDE 编译环境使设计 Altera 的 Nios II 处理器软件更容易,它提供了 一个易用的按钮式流程,同时允许开发人员手工设置高级编译选项。Nios II IDE 编译环境自动地生成一个基于用户特定系统配置(SOPC Builder 生成的 PTF 文件)的 makefile。Nios II IDE 中编译/链接设置的任何改变都会 自动映射到这个自动生成的 makefile 中。这些设置可包括生成存储器初始化文
件(MIF)的选项、闪存内容、仿真器初始化文件(DAT/HEX)以及 profile 总结 文件的相关选项。(3)调试器 Nios II IDE 包含一个强大的、在 GNU 调试器基础之上的软件调试器-GDB。该调试器提供了许多基本调试功能,以及一些在低成本处理器开发套件中不会经 常用到的高级调试功能。基本调试功能——Nios II IDE 调试器包含如下的基本调试功能:运行控制、调用堆栈查看、软件断点、反汇编代码查看、调试信息查看、指令集仿真器。高级调试 ——除了上述基本调试功能之外,Nios II IDE 调试器还支持以 下高级调试功能:硬件断点调试 ROM 或闪存中的代码、数据触发、指令跟踪。(4)闪存编程器 使用 Nios II 处理器的设计都在单板上采用了闪存,可以用来存储 FPGA 配 置数据和/或 Nios II 编程数据。Nios II IDE 提供了一个方便的闪存编程方法。任何连接到 FPGA 的兼容通用闪存接口(CFI)的闪存器件都可以通过 Nios II IDE 闪存编程器来烧结。CFI 闪存之外,除 Nios II IDE 闪存编程器能够对连接到 FPGA 的任何 Altera 串行配置器件进行编程。9.ModelSim SE 6.2B(电子仿真): 2006.8 月初发行的最新版本:ModelSim SE 6.2b ModelSim 专业版,VHDL、Verilog 和 Mixed-HDL 仿真器
Mentor Graphics ModelSim SE 6.1b 是业界最优秀的 HDL 语言仿真器,它 提供最友好的调试环境,是唯一的单内核支持 VHDL 和 Verilog 混合仿真的仿真 器。是作 FPGA/ASIC 设计的 RTL 级和门级电路仿真的首选,它采用直接优化的编 译技术、Tcl/Tk 技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护 IP 核,个性化的图形界面和用户接口,为用户加快调错提 供强有力的手段。全面支持 VHDL 和 Verilog 语言的 IEEE 标准,支持 C/C++功能 调用和调试 具有快速的仿真性能和最先进的调试能力,全面支持 UNIX(包括 64 位)、Linux 和 Windows平台。主要特点: RTL 和门级优化,本地编译结构,编译仿真速度快; 单内核 VHDL 和 Verilog 混合仿真; 源代码模版和助手,项目管理; 集成了性能分析、波形比较、代码覆盖等功能;
数据流 ChaseX; Signal Spy; C 和 Tcl/Tk 接口,C 调试 10.Synplify Pro 8.1 Synplify Pro 8.1 半导体设计及验证软件供应商 Synplicity 公司近日对其 可编程逻辑器件(PLD)综合软件 Synplify Pro 8.1 进行了改进。Synplify Pro 软 件 支 持 Verilog-2001 标 准 以 及 新 器 件 及 新 操 作 系 统(OS)。最 新 版 本 的 Synplify Pro 软件提高了若干项 QoR(最终结果质量),以及增效定时引擎及自动 寄存器重新定时功能的增强,能够提高设计人员的产出率,并且性能更佳。业界领先的基于 FPGA 的 ASIC 原型验证综合工具,通过提供诸如团队设计、自动 re-timing、快速的编译以及额外的特性来优化设计结果。除了具有 B.E.S.T.引 擎 外,Synplify pro 又 加 入 了 D.S.T.(Direct Synthesis Technology),SCOPE(Synthesis Constraint Optimization Environment),STAMP 和多点优化等技术来满足设计者的需求。Synplify pro 提供了和布局布线工具 之间的 native-link 接口来完成 Push-Button 的流程,使用户只需要点击就可以 完成所有的综合和布局布线的工作。基于 Synplicety 公司的 B.E.S.T.引擎,Synplify Pro 可以轻松综合数百万门的设计而不需要分割。Synplify Pro 详细功能描述 ◇ 提供优于传统综合技术的快速的全局编译和综合优化,针对算术模块和 数据路径的高性能和高面积利用率的优化; ◇ 提供对设计约束的全面控制,智能化人机界面,提高设计效率,结合具 体器件结构,提供最佳性能; ◇ 提供自动的 RAM 例化过程,提供自动时钟控制和同步/异步清零寄存器结 构,自动识别 FSM 和选择编码方式以达到最佳性能,提供针对 FSM 的快速的调试 和观察工具,自动进行流水处理,以提高电路性能; ◇ 在不改变原代码的情况下,提供内部线网到外部测试管脚的能力,在源 代码、RTL 视图和 Log 文件之间的交互标识能力; ◇ 集成化、图形化的分析和调试关键路径的环境; ◇ 支持黑盒子的时序以及管脚信息,支持同时实现多个应用,通过设计划 分支持 Xilinx 模块化设计; ◇ 自动对组合逻辑进行寄存器平衡以提高性能,支持智能化的增量综合。11.Synplicity Amplify V3.6.1(电子物理优化器): 是第一款为 FPGA 设计的物理综合产品。Amplify Physical Optimizer 产 品补充了流行的 Synplify FPGA 综合产品,可通过在综合过程中充分利用物理设 计信息来提高性能和生产力。Amplify Physical Optimizer 是为那些需要从他 们的 Xilinx Virtex?系列和 Spartan-3 系列器件中获得尽可能的最高的性能的 开发人员创建的。Amplify 产品已经被全球 100 多家企业采用。Amplify?工具
结合了寄存器级(RTL)的图形物理约束以及创新的可同时完成布局和逻辑优化 的物理综合算法。其输出不仅是一个逻辑设计的物理布局,而且是一个新的物理 优化的网表。另外,Amplify 产品还包括了全部的 Optimization Physical Synthesis(TOPS)技术。TOPS 技术进一步提升了性能,同时还通过高度准确的 时序估算降低了设计反复次数。12.Mentor Graphics LeonardoSpectrum V2005a.82(HDL 逻辑综合软件): 以上每步操作都提供相应的帮助,简单明了。需要注意的是,在输入设计文 件时要正确排列文件的次序,将底层文件放在前面,顶层文件放到后面,这样 LeonardoSpectrum 软件才能正确地建立数据信息库。综合完成后,可以将输出 网表文件(.EDF)作为 MAX+PLUS II 或 Quartus II 的设计输入文件,再完成编 译、仿真、定时分析和器件编程等步骤,完成整个系统的设计过程。
第五篇:C++开发工具简介
无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接不暇并不断扩充的特性……除此之外,参考资料之多与冗杂使它的学习者望而却步,欲求深入者苦不堪言。希望这一份不完全导引能够成为您C++学习之路上的引路灯。
撰写本文的初衷并不打算带领大家体验古老的C++历史,如果你想了解C++的历史与其前期发展中诸多技术的演变,你应当去参考Bjarne的《The Design and Evolution of C++》。当然也不打算给大家一个无所不包的宝典(并非不想:其一是因水平有限,其二无奈C++之博大精深),所给出的仅仅是一些我们认为对于想学习C++的广大读者来说最重要并且触手可及的开发与学习资源。
本文介绍并分析了一些编译器,开发环境,库,少量的书籍以及参考网站,并且尽可能尝试着给出一个利用这些资源的导引,望对如同我们一样的初学者能够有所裨益。
编译器
在 C++之外的任何语言中,编译器都从来没有受到过如此之重视。因为C++是一门相当复杂的语言,所以编译器也难于构建。直到最近我们才开始能够使用上完全符合C++标准的编译器(哦,你可能会责怪那些编译器厂商不能尽早的提供符合标准的编译器,这只能怪他们各自维系着自身的一套别人不愿接受的标准)。什么?你说这无关紧要?哦,不,你所需要的是和标准化C++高度兼容的编译环境。长远来看,只有这样的编译器对C++开发人员来说才是最有意义的工具,尤其是对于程序设计语言的学习者。一至性让代码具备可移植性,并让一门语言及其库的应用更为广泛。嗯,是的,我们这里只打算介绍一些公认的优秀编译器。
Borland C++
这个是Borland C++ Builder和Borland C++ Builder X这两种开发环境的后台编译器。(哦,我之所以将之分为两种开发环境你应当能明白为什么,正如Delphi7到Delphi8的转变,是革命性的两代。)Borland C++由老牌开发工具厂商Borland倾力打造。该公司的编译器素以速度快,空间效率高著称,Borland C++ 系列编译器秉承了这个传统,属于非常优质的编译器。标准化方面早在5.5版本的编译器中对标准化C++的兼容就达到了92.73%。目前最新版本是 Borland C++ Builder X中的6.0版本,官方称100%符合ANSI/ISO的C++标准以及C99标准。嗯…这正是我前面所指的“完全符合C++标准的编译器”。
Visual C++
这个正是我们熟知的Visual Studio 和 Visual Studio.net 2002, 2003以及2005 Whidbey中带的C++编译器。由Microsoft公司研制。在Visual Studio 6.0中,因为编译器有太多地方不能与后来出现的C++标准相吻合而饱受批评(想想你在使用STL的时候编译时报出的那些令人厌恶的error和 warning吧)。VC++6.0对标准化C++的兼容只有83.43%。但是随着C++编译器设计大师Stanley
Lippman以及诸多C++社群达人的加盟,在Visual Studio.NET 2003中,Visual C++编译器已经成为一个非常成熟可靠的C++编译器了。Dr.Dobb's Journal的评测显示Visual C++7.1对标准C++的兼容性高达98.22%,一度成为CBX之前兼容性最好的编译器。结合强大的Visual Studio.NET开发环境,是一个非常不错的选择。至于Whidbey时代的Visual C++,似乎微软所最关注的是
C++/CLI……我们不想评论微软下一代的C++编译器对标准化兼容如何,但他确实越来越适合.NET(其实你和我的感觉可能是一样的,微软不应当把标准C++这块肥肉丢给Borland,然而微软可能并不这样认为)。
GNU C++
著名的开源C++编译器。是类Unix操作系统下编写C++程序的首选。特点是有非常好的移植性,你可以在非常广泛的平台上使用它,同时也是编写跨平台,嵌入式程序很好的选择。另外在符合标准这个方面一直都非常好,GCC3.3大概能够达到96.15%。但是由于其跨平台的特性,在代码尺寸速度等优化上略微差一点。
基于GNU C++的编译器有很多,比如:
l Mingw:
GCC的一个Windows的移植版本(Dev-C++的后台)
l Cygwin:
GCC的另外一个Windows移植版本是Cygwin的一部分,Cygwin是Windows下的一个Unix仿真环境。严格的说是模拟GNU的环境,这也就是“Gnu's Not Unix”要表达的意思,噢,扯远了,这并不是我们在这里关心的实质内容。
l Djgpp:
这是GCC的DOS移植版本。
l RSXNT:
这是GCC的DOS和Windows移植版本。
Intel C++
著名CPU制造厂商Intel出品的编译器,Special Design for Intel x86!对于Intel x86结构的CPU经过特别的优化。在有些应用情况下,特别是数值计算等高性能应用,仅仅采用Intel的编译器编译就能大幅度的提高性能。
Digital Mars C++
网络上提供免费下载,Zortech/Symantec C++的继承者,其前身在当年惨烈的C++四国战中也是主角之一。
开发环境
开发环境对于程序员的作用不言而喻。选择自己朝夕相处的环境也不是容易的事情,特别是在IDE如此丰富的情况下。下面就是我们推荐的一些常见的C++开发环境,并没有包括一些小型的,罕见的IDE。其中任何一款都是功能丰富,可以用作日常开发使用的。对于不同层面的开发者,请参见内文关于适用对象的描述。
Visual Studio 6.0
这个虽然是Microsoft公司的老版本的开发环境,但是鉴于其后继版本Visual Studio.NET的庞大身躯,以及初学者并不那么高的功能要求,所以推荐这个开发环境给C++的初学者,供其学习C++的最基本的部分,比如C的那部分子集,当然你别指望他能够支持最新的C99标准。在日常的开发中,仍然有很多公司使用这个经典稳定的环境,比如笔者就看曾亲见有些公司将其编译器替换为 GCC做手机开发之用。
Visual Studio.NET 2003
作为Microsoft公司官方正式发布的最新版本开发环境,其中有太多激动人心的功能。结合其最新的C++编译器。对于机器配置比较好的开发人员来说,使用这个开发环境将能满足其大部分的要求。这里不打算单独说Visual Studio Whidbey,虽然Visual Studio.NET 2005-Whidbey社区预览版已经推出,但暂不是很稳定,读者可以亲身去体验。
Borland C++ Builder 6
这个并不是Borland的C++开发环境的最新版本。选择它的原因是它不是用Java写的IDE,速度比较快。它有一个很完善的GUI窗体设计器,和 Delphi共用一个VCL。由于这些特点,比较适合初学者上手。但是由于其GUI的中心位置,可能不利于对于C++语言的学习。而且其为了支持VCL这个Object Pascal写的库也对C++进行了一些私有的扩充。使得人们有一个不得不接受的事实:“Borland C++ Builder 6的高手几乎都是Delphi高手”。
Borland C++ Builder X
正如前文所述,虽然版本号上和前面那个IDE非常相象,但是其实它们是完全不同的两个集成开发环境。C++Builder更多的是一个和Delphi同步的C++版本的开发环境,C++BuilderX则是完全从C++的角度思考得出的一个功能丰富的IDE。其最大的特点是跨平台,跨编译器,多种Framework的集成,并且有一个WxWindows为基础的GUI设计器。尤其是采用了纯C++来重写了整个Framework,摒弃了以前令人无奈的版本。对于C++的开发来说,从编译器,到库,到功能集成都是非常理想的。可以预见,Borland C++ Builder X 2.0很值得C++爱好者期待。唯一令人难堪之处是作为一个C++的开发工具,其IDE是用Java写的,在配置不够理想的机器上请慎重考虑再安装。
Emacs + GCC
前面讲的大部分是Windows环境下的集成开发环境。Linux上的开发者更倾向于使用Emacs来编辑C++的文件,用Makefile来命令GCC做编译。虽然看上去比较松散,但是这些东西综合起来还是一个开0发环境。如果你能够娴熟的使用这样的环境写程序,你的水平应该足够指导我们来写这篇陋文了。
Dev C++
GCC 是一个很好的编译器。在Windows上的C++编译器一直和标准有着一段距离的时候,GCC就是一个让Windows下开发者流口水的编译器。Dev-C++就是能够让GCC跑在Windows下的工具,作为集成开发环境,还提供了同专业IDE相媲美的语法高亮,代码提示,调试等功能。由于使用 Delphi开发,占用内存少,速度很快,比较适合轻量级的学习和使用。
Eclipse + CDT
Eclipse 可是近来大名鼎鼎的开发工具。最新一期的Jolt大奖就颁给了这个杰出的神物。说其神奇是因为,它本身是用Java写的,但是拥有比一般Java写的程序快得多的速度。而且因为其基于插件组装一切的原则,使得能够有CDT这样的插件把Eclipse变成一个C/C++的开发环境。如果你一直用 Eclipse写Java的程序,不妨用它体验一下C++开发的乐趣。