嵌入式开发的那些事儿(五)

2019-07-13 05:38发布

 第五回 Linux
    “‘所见即所得’里面的软件是基于嵌入式Linux的,所以你必须准备基于Linux开发的工具链。当然,Linux可以在众多硬件平台上面跑,我们需要的是基于ARM处理器的Linux。”
    Linux?这么多年来,听见很多人在我耳边说起Linux,似乎懂了它,就能够成为一个拥有盖世武功的软件高手了。从Karen自信的眼神来看,她是个真正的高手。唉,人不可貌相(很多人眼中美女一般都不擅长此类工作)
    我也曾经在PC上面装过Linux,当我费了九牛二虎之力把它装好配置好之后,又很快地把它给删除了。作为桌面系统,Linux操作复杂,用起来总觉得没有Windows那么顺手,效率稍微低,软件也没有Windows下那么丰富。(当然,这些年来,Linux的桌面越来越出 {MOD},系统也越来越好用。)其实程序员有的时候喜欢复杂的东西,当有人看到你在控制台下飞快地敲一个个命令的时候,会不会觉得很酷呢?所以Linux的复杂性不能成为把它从我的硬盘上赶跑的原因。说来惭愧,忍痛删除Linux的是因为偶太穷了——没有啥钱,所以在选购电脑的时候,只能配一个小容量硬盘,那么小的一点空间,已经被Windows和一些必备的软件给占得差不多了,如果再让Linux占去一大块,连放一部清晰度稍微高一点的电影的地方都没有啦。
    “那我需要在电脑上面装一个Linux吗?”我战战兢兢地问道。开发Linux当然得装Linux,好像这是个显而易见的道理,所以我心里感觉这个问题好像没有必要问。但是我们装的Linux是在基于x86的PC机上面跑,但是开发的程序是在基于ARM的嵌入式设备上跑,这两个Linux环境有很多不相同的地方,所以我还是得确认一下。在高人面前我一般都很谨慎,怕说出的每一句话都会让对方觉得没有水平,会被她在心里笑话。
    “公司配备的工作机硬盘很大,你想装Linux就装一个吧。不装也没有关系,公司里面有Linux服务器,你可以通过Telnet或者SSH登录访问。”Karen回答。
    “SSH?”Telnet我倒用过,SSH我还是第一次听说过。
    “Secure Shell. 比Telnet的安全性高很多,建议用它来代替Telnet。具体你有空去Google或者百度一下。”对于我这个挺初级的问题,她的反应比较平淡,但是不知道她内心是怎么看我这个新人的。
    “但是……”Karen突然话锋一转,“你在Windows上面装一个Cygwin吧,这样开发会比较快一些。因为我们有很多工具需要在Windows上面运行,有了Cygwin环境,一个操作系统就可以满足需求,这样就避免了系统切换的开销。”Karen说。
    Cygwin我倒是知道的,有了它,就可以在Windows上面运行Linux/UNIX的软件。这些软件的源代码几乎不用修改(可能改一下配置),重新编译一下就能够在Windows下用,尤其受到那些喜欢Linux但是不得不在Windows环境下工作的人喜欢。
    但是,我好像记得Cygwin下编译的程序都是PE格式的(Windows下的二进制可执行文件的格式),但是Linux下的程序是ELF格式的。两种格式不兼容。为了表明我被招过来,不是啥都不懂,好歹也有一点水平,于是就问道:“Cygwin下生成的都是PE格式的程序,但是我们需要ELF格式的,这个办法好象不怎么合适呢。”
    Karen笑道:“你选择一个Cygwin下能够生成ELF文件的gcc编译器就可以了啊。当然,记得还要FOR ARM的GCC,因为我们用的是交叉开发环境——在X86指令的主机上编译出在ARM上跑的程序。”
    本以为想表现一把,结果却丢了一下脸。我只得道:“好的,我这就装。”
    同时Karen指导我装了必要的驱动和工具,主要是用来远程调试“所见即所得”的。她还指向一大堆的电子仪器,让我瞧瞧。我看过去,发现都是高精度电源,示波器之类的东西。“调试代码的时候,可能会碰到很多问题,这些仪器都派得上用场。”
    公司编写代码用的是Eclipse这个IDE。但是由于它是Java编写的,占用的系统资源比较大,所以我不无担忧地问道:“我们编写代码都得用它吗?好像这玩意儿很耗资源呢。”
    “Eclipse只是提供了一个方便的开发环境,当然你也可以不用它。代码都是文本文件,你用任意一个文本编辑器就可以了,比如Source Insight啊, UltraEdit啊。嘿嘿,你甚至还可以用VI,用记事本——只要你能够完成任务。”Karen又对我一笑。很神秘的笑容,看上去很可爱,但是不知道这是不是在嘲笑我见识太少,还是在鼓励我得加把劲学习。
    紧张的工作正式开始了!当然,在正式接受第一个任务之前,我还得对“所见即所得”的整体软件架构做一个初步的了解。