(点击上方公众号,可快速关注我们)
除非你是设计小型模拟电子电路,不然这年头离开了计算机的帮助,在嵌入式系统设计中很难做成什么事。我觉得我应该分享一个能帮助我完成工作的软件工具列表。它们大多数都是免费的或者比较便宜的。它们大多数也和软件一起工作。如果你向来不需要设计,阅读或者编辑任何软件,那么你属于读了这篇文章不会从中受益的那一小部分人。 免责声明:“最佳”软件工具通常是一种主张。你可能不同意我的主张,那就取其精华吧。 1. 版本控制系统 不管你工作在一个100人的团队,还是独自一人干活,如果你从事设计,你应该会用到版本控制软件。这是一种可以管理文档的不同版本的软件,不管是图表还是源代码。像源代码或配置文件这样的文本文档尤其适合于版本控制,因为很容易查看版本间的差异,合并两个版本之间的改动,特别是多个人工作在一组文档上。 版本控制里的文档集合称为版本库(repository)。版本库所在的位置某种程度上取决于你用什么样的版本控制系统基本上有两类版本控制系统:集中式和分布式。集中式版本控制包含一个存放版本库的服务器。当你方便的时候,你提交你的修改到版本库里。分布式版本控制系统(DVCS)不需要中央服务器:每个人工作在有他们自己的本地缓存的版本库上(包括整个历史记录),可能会从一个版本库传送新的提交到另一个版本库,通过在原版本库上“push”或者在目标版本库上“pull”完成。 2012年开源社区里最流行的三个版本控制系统是Subversion(SVN),Mercurial(hg)和Git。Subversion是集中式的,而Mercurial和Git是分布式的。 我用Mercurial开发个人软件。建立版本库很简单。到你工作的根目录下输入hg init,然后用hg add添加你喜欢的文件,然后用hg commit提交。我只需要花几分钟,立马就能够回退到某个文件的早期版本。我会专门为我家里PC机上的服务配置文件(例如Apache网站服务器)这样做如果我修改了一个文件,并且这个修改引起了一个bug,我只用回退到该文件的早期版本就可以了。 如果项目只有你一个人在做,管理版本控制系统容易得不可思议只需要在较好的暂停点时不时进行提交。如果你和别人一起工作,当你们中的一个人做出修改而另一个人做出不同的修改产生冲突时,有几种方法来协调。就是所谓的“合并”。对于文本文档,只要你经常这样做,通常很容易。对于二进制文件,几乎不可能。比较合适的处理方式是在库里的文件上放置一道锁,清楚地声明你工作在一个特殊的文件上,并且其他人不应该工作在这个文件上。 这三个系统(svn,hg和git)起先全都是命令行工具,但是它们都有各式各样的图形用户界面前端,包括Tortoise系列的用户界面。那是一个在你的操作系统的文件浏览器(如Windows Explorer或者Mac OSX Finder)上扩展的轻量级组件。它们不如非免费的版本控制系统那样易用。我们工作中用过SurroundSCM,当我有点不太喜欢后端的行为方式时,我发现Surround UI在协调分支间的差异上更加好用。 还值得注意的是有很多版本库在线主机系统,有bitbucket.org,SourceForge,Google Code和GitHub。它们全都为公开版本库提供免费的主机服务。bitbucket免费为项目成员不超过5人的私有版本库提供主机服务。我强烈推荐使用像Mercurial或者Git这样的分布式版本控制系统,因为这意味着你可以把项目从一个主机站点转到另一个上,并且即使站点临时宕机,你依旧可以使用本地的版本库的拷贝。 2. 文件比较工具 在将代码合并到版本控制系统中,或者仅仅是想看看一个文件同另一个文件之间的差异时,你会需要文件比较工具。有命令行的工具如“diff”,还有图形用户界面的文件比较工具。我喜欢叫Beyond Compare的程序不是免费的,但是不贵,并且易用。它还可以比较两个文件夹,可以让你做3-way文件比较。Beyond Compare有Windows和Linux的,OSX版本的正在开发但是现在还没有。其他的还有SourceGear DiffMerge(免费,跨平台 Win/OSX/Linux),Compare It!(便宜,只有Windows的),DeltaWalker(价格适中,OSX)和UltraCompare(价格适中,跨平台)。 3. 编辑器 和文本文件打交道可难可易,这取决于你用的软件。重量级的编辑器是像Eclipse,NetBeans或者Visual Studio那样的集成开发环境(IDE)。假如你用特定的软件工具和在特殊的处理器上编程,那么它们很出色。但是有时候你需要的只是快速编辑文件。操作系统自带的基本编辑器(像Windows上的记事本,Mac上的TextEdit)是轻量级的,但他们没有多少功能。我喜欢有中量级的编辑器可以用:这个类目里有一些好的免费编辑器,如Windows上的Notepad ,Mac上的TextWrangler。我还用过非免费的UltraEdit,它更强大一点,而且在Windows,OSX,Linux上都可以用。SlickEdit是专业级的编辑器,要价数百美元,可能对绝大多数任务杀伤力过大,但我的一些同事却很忠于它。(希望他们没有吐槽它) 提到编辑器不提GNU emacs就不公平了它是免费的开源的编辑器,诞生于当大多数操作系统还是基于终端的时候。它的大多数命令都是用一串难以理解的按键发出。你喜欢这样的方式就行,我是不喜欢的。它是一个非常强大的编辑器,可以通过Lisp语言编程定制。你可以在emacs里做任何事,只要它是可以在终端显示的。 我要找的编辑器的两大功能如下: 大文件支持。如果很大的文件(若干兆),确保你的编辑器可以在不用把文件全部加载到内存就能打开它。记事本不行,但是Notepad 和UltraEdit可以。 “多文件查找”功能 典型的源代码树包含多个文件,你经常会忘记把东西放哪了。(好吧,至少我会忘记把东西放哪了!)在多个文件里搜索一个单词或模式的能力是无价的。Unix的“grep”允许你用命令行做这样的事,但是编辑器里的“多文件查找”功能可以让你双击查找结果,然后跳到编辑器里的该行上。 你可能还需要在十六进制编辑器里编辑二进制文件可以让你查看和编辑那些不可打印字符的字符码。Notepad 和UltraEdit都有十六进制编辑模式。如果你用Mac,试试单机版的Hex Fiend它很不错。 还有用于XML文件的特殊编辑器在免费类目里,有XML Notepad和firstobject的XML编辑器“foxe”。foxe的用户界面有点笨拙,但是用来编辑大型文件非常非常不错。 4. Build 工具 如果你开始在IDE里写软件,只用点击”构建“,然后程序就给你编译你的源代码。这样做要注意,它意味着你在让IDE去操心那些细节。对于你正在其中学习某个东西的小系统倒还好。但是有大量的选项可以改变软件的编译方式,在IDE里它们被埋藏在菜单里,并且也不容易从一个项目转移到另一个项目。运气好的话,你可以识别出用于存储构建配置的那些文件,然后可以检入到版本控制系统,因为不然的话你保存的不是完整的项目源码。 专业的软件工程师重申,这是一家之言应该用一种明确的构建工具。标准的原味的(plain-vanilla)解决方案(我宁愿错打成痛苦味的pain-vanilla,并这样保持下去)是一个在70年代引入的叫做make的程序。不幸的是它现在仍被在用。makefile由像这样若干行构成: foo.obj: foo.c cc -o $@ $ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|