Linux 集成开发环境的实现
1 目的
嵌入式Linux上的开发上一个函待解决的问题,就是开发工具的匮乏和开发过程的混乱。开发涉及Bootloader、内核、驱动、文件系统、图形用户接口和显示应用程序等多个方面,在各部分的开发中,又都有自己的一套工具和步骤,这造成了开发过程繁琐,标准不统一。同时,开发工具都运行在Linux文本环境下,这对用惯了Windows上视窗环境的开发者来说,上手比较缓慢。因此我认为需要开发出一套针对显示器软件系统的集成开发环境。目前命名为Linux Platform Builder(LPB).
该软件将包括目前嵌入式linux开发过程的所有方面:软件自动检测目前已连接的目标系统,避免了繁琐的修改网络配置过程;相对独立的菜单项和详细的说明文档使开发人员可以自由地选择目前需要开发的部分,将注意力集中到代码的编制过程中来;完善的系统测试和调试功能可以轻松找出系统存在的缺陷;CVS版本控制功能保证了代码文件的坚固,适合多人协作开发;基于Java平台的集成开发环境可以运行在Windows、Linux、Unix等多种操作系统平台。
该系统可以作为与某个硬件产品配套的软件提供,功能根据使用人员的不同可以划分为系统开发版本,应用开发版本,系统维护版本,生产版本等,在规范开发过程的同时,简化了开发步骤和难度。
该系统同样可以为基于其他操作系统比如VxWorks的设备开发提供帮助,因为该软件是平台无关的,目标机与PC机的开发平台的连接只通过网络和串口。不同平台的代码生成只是编译器的不同,而目标机处理器的不同所需要更改的只是该工具的上层处理脚本。
2 系统使用技术及功能架构
该系统的开发基于eclipse软件,这个一个专门用来开发工具的软件,基于JAVA开发。在软件目录下有一个plugin.xml文件,修改该文件可以自定义要开发的集成开发环境的各个功能。
2.1 IDE框架功能
首先,该软件需要实现完善的IDE基本功能,包括文件的打开和关闭,代码的编辑和删除,多窗口的视图显示等,这保证了用户可以方便的在多个文件中编辑代码,进行开发。
2.2 图形化的编程工具的集成
该功能主要是为了方便的进行linux上图形化的应用程序的开发,用户使用该工具完成应用开发后,交叉编译生成应用的可执行文件。
这一部分开发工具的选择是和目标硬件板上所使用的GUI系统相关的,如果目标硬件使用的是tinyX,建议使用FLTK+FLUID来开发界面程序,这是开源的软件,用户可以自己设计控件,添加到系统控件库中,然后可以方便的以拖放的方式使用。使用这个工具的另一个好处是它也是平台无关的,在windows上也有相应得版本,因此可以将它整个集成到集成开发环境中。
2.3 BSP开发
该功能可以对系统的固件进行开发,包括了bootloader,Kernel和驱动的开发。该功能可以方便的对系统固件进行配置,添加自己需要的系统功能和驱动设备,配置完成后点击“生成”按钮,交叉编译生成系统固件。
在windows下是可以开发和编译linux下的驱动程序的,因为驱动程序的编译只需要内核的头文件,不过2. 4的内核和2.6的内核文件格式是不一样的,需要作一些转换。
2.4 目标码下载与调试
该功能主要实现将系统固件包括应用下载到目标码上,同时实现了应用程序的远程调试功能。调试功能包括单步调试,设置断点等,同时实现应用程序界面的PC机显示,这是通过以太网将显示数据传输到PC机显示。
2.5 系统测试
完善的产品设计必须包括测试功能,应该包含的测试有最小运行系统的测试,SDRAM测试,FLASH测试,驱动测试包LDTK(Linux Driver Test Kit)和各接口设备的测试。
2.6 CVS版本控制功能
和CVS服务器通讯,随时得到最新代码,保证系统文件的统一性。
图1 Linux Platform Builder系统功能划分
因此,该集成开发工具的实现的技术划分应该包含三个部分,第一是上层的集成开发环境的界面功能,这基于eclipse开发,前面已经提到过;第二个部分是需要写一个和目标硬件通信的通信程序,它有两份拷贝,分别存放在目标硬件板和PC机上,负责传递开发人员的各种要求;最后就是关于系统的各种测试程序,它应该存放在PC机上,当需要测试系统功能时,通过通信程序下载到目标板上运行。
以上是开发嵌入式Linux的环境集成开发环境的过程中需要注意的地方,目前该软件已经在三星的ARM系列芯片上实现,现在正在实现基于XSCALE系列芯片的功能。