CN100403258C - 嵌入式设备集成开发***及其使用方法 - Google Patents
嵌入式设备集成开发***及其使用方法 Download PDFInfo
- Publication number
- CN100403258C CN100403258C CNB2004100693783A CN200410069378A CN100403258C CN 100403258 C CN100403258 C CN 100403258C CN B2004100693783 A CNB2004100693783 A CN B2004100693783A CN 200410069378 A CN200410069378 A CN 200410069378A CN 100403258 C CN100403258 C CN 100403258C
- Authority
- CN
- China
- Prior art keywords
- module
- platform
- file
- configuration
- development
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式设备集成开发***,也涉及利用该嵌入式设备集成开发***开发嵌入式***的方法。该集成开发***基于Linux平台实现,包括交叉编译模块,远程调试模块,加载模块,平台开发配置模块,文件编辑模块,项目管理模块。平台开发配置模块提供开发板级支持软件包,进行开发平台的配置工作,项目管理模块为该开发平台提供文件***、内核配置一体化的工作区,源文件在工作区编写完成之后,交叉编译模块进行编译,生成的映像文件由加载模块加载到目标机,由远程调试模块进行调试。本嵌入式设备集成开发***具有使用方便、界面友好、支持向导开发、可扩展性良好的优点。
Description
技术领域
本发明涉及一种嵌入式设备集成开发***,也涉及使用该嵌入式设备集成开发***开发嵌入式***的方法,属于计算机技术领域。
背景技术
在信息技术高速发展的后PC时代,嵌入式设备已经广泛渗透到科学研究、工程设计、军事技术等方方面面。这些嵌入式设备在运行时都需要有相应的嵌入式***提供软件支持。为此,需要根据不同的具体需求开发相应的嵌入式设备支撑***。
总体而言,Linux***划分为内核层和应用层两个层次。内核层提供基本的功能,如内存管理、进程管理、设备驱动程序、文件***及网络管理等,而图形用户界面、用户应用程序等均工作在应用层。用户可以采用模块的方式动态将某一功能加载进内核,从而根据具体需要配置和裁减内核。
目前,嵌入式***的软件开发通常是采用交叉编译工具链在宿主机中开发的。由于目标机体系结构与宿主机体系结构的不同,因此必须在宿主机上针对目标机体系结构建立相应的交叉编译工具链,交叉编译嵌入式操作***的内核和用户应用程序。
现有的商用嵌入式操作***中比较著名的有Microsoft Windows CE、MontaVista Linux和VxWorks等。它们都提供相应的开发***,例如VxWorks提供TornadoII集成开发环境。但是,现有商用嵌入式操作***及其开发工具大多数没有公开其核心源代码,这种源代码的封闭性大大限制了开发者的积极性,导致***功能的局限性和***结构的脆弱。
目前,Linux***以其源代码完全开放的突出优点在嵌入式***中占据越来越重要的地位。但是,现有基于Linux的商用嵌入式设备集成开发***普遍不成熟,功能比较单一,对开发***板的支持有限,而且基本上都没有采用图形化用户界面,操作上比较麻烦,因此有必要进一步加以改进。
发明内容
本发明的目的在于针对现有基于Linux的嵌入式设备开发***的不足,提供一种新的完备易用的嵌入式集成开发***。该***采用图形化用户界面,并采用具有二级索引配置的开发板支持机制,为使用者提供了一种方便易用、灵活高效的嵌入式***开发平台。
本发明的另外一个目的在于提供一种使用该嵌入式设备集成开发***开发嵌入式***的方法。
为实现上述发明目的,本发明采用下述的技术方案:
一种嵌入式设备集成开发***,基于Linux平台实现,包括交叉编译模块,远程调试模块,加载模块,文件编辑模块;所述交叉编译模块包括汇编器、编译器和链接器;所述远程调试模块包括内核调试工具和应用开发调试工具;所述加载模块包括裸机加载工具、操作***加载工具以及基于操作***的加载工具,其特征在于:
所述***还具有平台开发配置模块和项目管理模块;所述平台开发配置模块提供开发板级支持软件包,进行开发平台的配置工作,所述项目管理模块为该开发平台提供文件***、内核配置一体化的工作区,源文件在所述工作区编写完成之后,所述交叉编译模块进行编译,生成的映像文件由所述加载模块加载到目标机,由所述远程调试模块进行调试。
所述开发板极软件包具有二级索引配置。
第一级索引以嵌入式处理器的平台体系为索引项,列出嵌入式集成开发***提供的硬件平台的名称;第二级列出用户选择的硬件平台上的基本软硬件配置信息。
所述软件包具有粗粒度配置和细粒度配置两种模式,该两种模式的选择因素包括用户项目选用的平台与开发***缺省提供的平台是否一致;目标***对于操作***内核与文件***的大小限制是否严格;目标***是否需要定制特殊功能三方面情况。
所述源文件包括内核源文件和应用程序源文件。
一种利用上述嵌入式设备集成开发***开发嵌入式***的方法,包括下述步骤:
(1)定义嵌入式***的主框架;
(2)配置开发板级支持软件包;
(3)利用平台开发配置模块进行开发平台的配置;
(4)项目管理模块为上述开发平台确定工作区;
(5)在工作区开发嵌入式***的内核源程序和用户应用程序;
(6)由交叉编译模块对源文件进行编译,生成内核的映像文件和应用程序的二进制映像文件;
(7)上述内核的映像文件和应用程序的二进制映像文件由加载模块加载到目标机;
(8)利用远程调试模块对嵌入式***的内核和用户应用程序进行调试,如果不能满足设计要求则返回步骤(5),重新进行开发;如果满足设计要求则嵌入式***开发成功。
所述步骤(1)中的主框架运行机制为:
a.***各变量、对象初始化;
b.***初始化完成,并等待外部用户事件或***消息的输入;
c.如有用户输入,则根据事件消息转换运行状态,执行相应的功能处理过程;执行结束,返回主框架的等待状态;
d.如接收到***消息,则进行相应的***消息处理过程,处理完返回等待状态;如果是退出消息,则***运行结束。
所述工作区与一个包含操作***和应用程序的嵌入式***相对应,所述工作区的设置选项中包含相应的目标平台体系结构及相关硬件的信息。
所述加载模块用于设置传输参数,报告参数设置错误,传送文件并进行文件传送过程控制。
所述远程调试模块在所述嵌入式设备集成开发***用于设置调试参数,启动调试过程并执行调试指令。
本发明所述的嵌入式设备集成开发***在开发板级支持机制和工作区管理方面进行了创新,提出了有二级索引配置的开发***板支持机制,以及基于体系结构和开发板应用的文件***、内核配置一体化的工作区管理机制。该***具有使用方便、界面友好、支持向导开发、可扩展性良好的优点。
附图说明
下面结合附图和具体实施方式对本发明作进一步的说明。
图1为嵌入式设备集成开发***与嵌入式***的关系示意图。
图2为现有的典型嵌入式设备集成开发***的组成示意图。
图3为平台开发配置模块的内部工作流程示意图。
图4为项目管理模块的内部工作流程示意图。
图5为交叉编译模块的内部工作流程示意图。
图6为远程调试模块的内部工作流程示意图。
图7为加载模块的内部工作流程示意图。
图8为本开发***提供的图形化用户操作界面的示意图。
图9为开发***主框架的运行机制示意图。
图10为***软件与应用软件开发过程示意图。
图11为交叉编译过程中的调用关系示意图。
图12为上载过程中的函数调用关系示意图。
图13为嵌入式***开发过程中各模块的接口关系示意图。
图14为使用本嵌入式设备集成开发***开发嵌入式设备应用软件的工作流程示意图。
图15为目标平台应用软件开发过程中的模块接口关系示意图。
具体实施方式
图1所示为嵌入式设备集成开发***与嵌入式***的关系示意图。嵌入式***作为应用平台,包括嵌入式硬件与嵌入式软件两部分;嵌入式设备集成开发***作为开发平台,是指在开发阶段为获得良好的开发环境、交互界面和编译性能所采用的桌面仿真环境。
图2所示为现有的典型嵌入式开发***的组成示意图。它包括交叉编译模块,远程调试模块,加载模块等,其中交叉编译模块包括汇编器、编译器和链接器,编译器用于生成不同硬件平台的目标代码。远程调试模块即调试器,它包括内核调试工具和应用开发调试工具,其通过网络或者串口连接客户一服务器。加载模块包括裸机加载工具、操作***加载工具以及基于操作***的加载工具。
本嵌入式设备集成开发***的硬件平台即为普通的PC机,操作***采用现有的Linux操作***,它除了具有上述的交叉编译模块,远程调试模块,加载模块,文件编辑模块之外,还增加了平台开发配置模块和项目管理模块。它可以实现具有二级索引配置的开发板级支持机制,以及文件***、内核配置一体化的工作区管理机制。
所述平台开发配置模块的作用在于为开发者在主机上选择所需要的目标平台类型、指定所需的内核生成配置、选择所需要的C运行库以及图形库和工具配置等。它提供友好界面让用户对开发平台环境进行完全配置,并可以提供预定义的多个配置模板,简化用户配置过程。其内部工作流程如图3所示,首先根据用户界面确定是新建配置还是已有配置,并由此进行配置模板选择或者平台配置文件格式解析工作,在开发平台配置完成之后,再进行内核生成配置、运行库配置和图形库配置等工作。
文件编辑模块主要用于项目开发过程中源文件的生成、编辑和保存。它提供文本文件的生成、打开编辑、保存等功能,以及在编辑过程中的剪切\复制\粘贴\删除\搜索等基本编辑功能。
项目管理模块主要用于项目开发过程中源文件的管理、项目选项设定等。其功能在于:
(1)提供新建项目、开发现有项目、项目设置文件的保存等功能。
(2)在新建项目时,提供向导方便用户开发。
(3)在项目开发时,提供“添加一个源文件到项目”、“从项目中删除一个源文件”等项目文件管理功能。
(4)在项目开发过程中,提供友好的界面让用户设定和修改项目属性。
其内部工作流程如图4所示,从用户界面获知是新建项目、打开项目、项目文件管理还是项目配置,然后分别做出相应的操作。
项目管理模块是本嵌入式设备集成开发***实现工作区管理机制的关键所在。这里的“工作区”是区别于应用开发的“项目“的概念而言的。一个“工作区”对应一个完整的嵌入式***,既包含操作***,也包括应用程序。一个嵌入式***可以执行多个应用,所以一个“工作区”中可以包含多个“项目”。此外工作区的设置选项还应包含相应的目标平台体系结构及相关硬件的信息。用户无须了解***选用的内核及其补丁的版本、交叉开发工具的编译版本等信息。集成开发环境可以根据“工作区”的选项自动确定目标***所需的操作***内核以及交叉开发工具前缀。本开发***将嵌入式***内核的开发和应用程序的开发放在同一个工作区进行,而不象现有***那样将两者完全分开。这样就可以利用同一工作平台完成内核和应用程序的开发工作,提高工作的效率。
交叉编译模块主要用于编译和生成运行于指定开发平台上的操作***内核,以及运行于该平台之上的应用程序。它可以采用现有的GCC(GNU CCompiler)交叉编译工具链,或根据需要重新生成所需平台的GCC交叉编译工具链。在IDE框架与GCC交叉编译工具链之间需要有一个GCC控制模块(GCCcontrol unit),该模块的功能为:将IDE框架的菜单命令转换为GCC的命令或命令组合,并生成命令脚本,调用对应目标平台的GCC;将GCC的输出结果重定向到IDE输出显示窗口。其内部工作流程如图5所示。
远程调试模块主要提供项目开发过程中的本地仿真调试和远程目标机调试。它可以采用现有的GDB(GNU Debugger)调试工具(远程调试需要操作***内核支持)。在IDE框架与GDB调试工具之间需要有一个GDB控制模块(GDB control unit),该模块的功能为:将IDE框架的菜单命令转换为GDB的命令或命令组合,并生成命令脚本,调用对应目标平台的GDB;将GDB的输出结果重定向到IDE输出显示窗口。其内部工作流程如图6所示。
加载模块主要提供内核和应用程序到指定目标的上载功能。它可以提供对各种上载手段的设置,并可以提供基于串行、网络等方式的上载。其内部工作流程如图7所示。
本发明所述的嵌入式设备集成开发***是一个基于Linux的开发平台,我们将之称为Embedded IDE。该开发***与现有同类型***的主要区别在于采用如图8所示的图形化用户操作界面,并采用自己独有的工作区管理机制,通过向导式操作,可以一次完成一个新的嵌入式***的内核和文件***的开发工作。另外,它具有采用具有二级索引结构的开发板支持机制,可以在同一开发***中针对不同的硬件平台,在多种开发板中开发相应的嵌入式***。下面就结合使用该嵌入式设备集成开发***开发嵌入式***的实现过程对这两方面特点加以详细说明。
使用本嵌入式设备集成开发***开发嵌入式***首先要进行的工作是定义嵌入式***的主框架;然后配置开发板级支持软件包BSP;配置并生成内核映像,文件***映像;利用交叉编译模块、远程调试模块和加载模块进行交叉编译、远程调试等工作,最终生成嵌入式***及其应用程序。上述过程涉及到嵌入式***内核的实现和各应用子模块的实现两个方面。下面分别对此加以说明。
(1)确定嵌入式***运行的主框架
开发一个嵌入式***首要的工作是确定***运行的主框架。主框架是确定各模块间消息通讯机制、外部事件响应机制、全局变量定义和初始化、***初始化和总体运行模块组合控制的关键部分,对***总体的易用性、稳定性、完备性的性能实现发挥着重要作用,也是决定***总体设计方案成败的重要部分。它的运行机制如图9所示,包括以下步骤:
a.***各变量、对象初始化;
b.***初始化完成,并等待外部用户事件或***消息的输入;
c.如有用户输入,则根据事件消息转换运行状态,执行相应的功能处理过程;执行结束,返回主框架的等待状态;
d.如接收到***消息,则进行相应的***消息处理过程,处理完返回等待状态;如果是退出消息,则***运行结束。
在主框架确定之后,下一步就要根据***各运行状态涉及的应用模块和***资源,定义模块运行组合方案;然后再根据***运行中对资源初始状态的要求,定义***初始化过程。
(2)配置开发板级支持软件包(Board Support Package,以下简称为BSP)
BSP是嵌入式***所独有的,它是一个介于操作***和底层硬件之间的软层次,包括了***中大部分与硬件相关的软件模块。它在功能上包含两部分:硬件***初始化及与硬件相关的设备驱动。硬件***初始化完成的基本功能有:对CPU进行低级初始化、对主板的硬件进行初始化、加载操作***等。BSP的具体编写与嵌入式设备的硬件状况密切相关,在有关的技术手册上都有详细说明,因此在此就不详述了。
本发明所述的嵌入式设备集成开发***与现有***的一个重要区别就在于BSP软件包采用二级索引配置,因此***的可扩展性好。如图10所示,一级索引以嵌入式处理器的平台体系为索引项,列出嵌入式集成开发***提供的硬件平台的名称,例如ARM、x86、MIPS等:
一级索引:
[ARM]
intel_assabet #intel sa1110 processor
altera_epxal #altera processor
cirrus_cs89712 #cs89712 comunication processor
[MIPS]
nec_nec4121 #NEC 4121
nec_nec4122 #NEC 4122
[X86]
i_586 #586
i_686 #686
二级索引则如下所示,是列出用户选择的硬件平台上的基本软硬件配置信息。
二级索引:
<info>
ProjectName=
ProjectLocation=
ProjectTargetArch=
ProjectKCMType=
FS_TYPE=
FS_SIZE=
[setup]
CONFIG_NETWORK=y;
CONFIG_FLOPPY=y;
CONFIG_FILESYS=y;
CONFIG_GAME=y;
CONFIG_ELSE=y;
CONFIG_SOUND=y;
CONFIG_TOUCHPL=y;
CONFIG_USB=y;
CONFIG_GUI=y;#GUI
CONFIG_FONT=y;#Chinese fonts
CONFIG_MAIL=y;#mail
一个新建工程经过第一级BSP索引之后,判断可以使用哪一个平台上的BSP软件包,然后在该软件包中通过第二级索引找到对应的硬件驱动。这部分工作完成之后,再配置对话框,进行内核配置和文件***的配置,从而完成该新建工程与整个***的一体化。
上述二级索引配置机制提供粗细两级粒度的配置方案,其中一级索引配置提供粗粒度的配置,适用于以下情况:
●用户项目选用的平台与开发***缺省提供的平台一致或非常接近;
●目标***对于操作***内核与文件***的大小限制不是非常严格;
●目标***只需满足基本功能,无需定制特殊功能。
具体而言,粗粒度的配置只需解决下列的配置问题:
(1)文件***(ext,ext2,fat)
(2)内核调度(静态优先级,动态优先级,混合)
(3)内存管理(最大内存,最小内存,MMU支持)
(4)外设支持(键盘、鼠标、SPP\EPP、VGA)
(5)网络协议(TCP\IP)
(6)标准接口支持(USB、IrDA、RS232)
(7)标准设备驱动能力(IDE、PCI、SCSI)
(8)提供中文支持
而二级索引配置提供细粒度配置,适用于以下情况:
●开发***提供的参考平台与用户选用的平台没有相同或接近的;
●目标***存储容量有限,对操作***内核与文件***大小限制严格;
●目标***不仅需要基本功能,还需要实现特殊功能。
该细粒度的配置可以适应***所能提供的全部配置方式。
(3)配置***内核
众所周知,Linux是一个源代码完全开放的操作***,它有很多不同的版本,最著名的是Redhat公司发行的Redhat Linux系列。本嵌入式设备集成开发***开发的嵌入式***采用Linux内核,该内核内置硬件驱动程序和硬件接口程序,可以提供内存管理和程序管理等功能。
基于Linux***的嵌入式设备内核可以通过裁减一个现有的Linux内核获得,如现有的MontaVista Linux***那样。配置和编译内核的常用命令包括:
make configmake depmake cleanmake mrpropermake zImagemake bzImagemake modulesmake modules_install |
现有的Linux技术手册中对内核编译有详细的说明,在此就不赘述了。
***内核经过交叉编译之后以二进制映像的形式保存在嵌入式设备的存储媒质Flash之中。
(4)配置并生成文件***;
Linux的文件***有一个特点,就是在内核层面上,它有必须的、相对固定的文件目录名字,即:
//bin | 根目录***应用程序 |
/dev/etc/home/lib/usr | 设备配置文件用户运行库用户程序 |
事实上,在配置***内核的同时,内核所使用的文件***就基本确定下来。配置文件***的主要任务是确定映像的类型,以及用户应用程序和库文件等。生成的文件***以映像的形式保存在存储媒质Flash之中。嵌入式开发***支持两种文件***的保存方式,可以映射到内存中,也可以固化在flash存储设备上。这两者的差别在于是否允许用户修改既有***。如果选择将文件***映射在内存中,那么任何修改都是在内存中进行的,只要***重启就自动丢失这些修改,还原到初始的文件***。这种文件***保存方式适用于功能单一、不允许用户临时修改的嵌入式***。而将文件***固化在Flash存储设备上,那么用户可以对具有权限的文件进行相应的读写、创建、删除等操作,即使在文件操作过程中发生***掉电,用户所做的修改也会及时保存下来。这种文件***保存方式有利于扩展***功能和用户应用。文件***配置成功并能与操作***内核匹配的一个标志就是***内核引导过程中init进程能够顺利运行。
(5)利用交叉编译模块、远程调试模块和加载模块进行交叉编译、远程调试等工作。
参照图10所示,嵌入式***中的应用软件是在本地机上完成代码编写,再在交叉编译环境下进行编译,并经过远程调试,确认可行之后上载到目标机上运行。用于目标机的应用软件以二进制映像的形式存在于嵌入式设备的存储媒质之中。
1.使用交叉编译模块:
在嵌入式***中,应用程序开发仍然使用传统的编写代码->编译连接->调试->编写代码的重复过程。开发工具一般以GNU系列工具为主,除了C/C++语言编译器gcc,还有汇编器gasm、连接器ld、调试器gdb和其它一些辅助工具等。
在传统的开发过程中,需要每次手工键入gcc命令对每个源文件进行单独编译然后再连接,在开发包含上百个源文件的大型项目时就显得非常笨拙。嵌入式设备集成开发***交叉编译模块的设计目标是简化可移植程序的开发,因此用户只需利用简单的图形化工具,而不用手写复杂的Makefile文件;另外,尽量简化建立源码形式分布的程序,只需两个步骤,而无需安装特殊的工具。为此,在编译模块组成上,除了Unix shell、make程序、C/C++编译器以外,还包含如下工具:
autoconf-提供一个通用可移植性框架,基于在“建立(build)”时对主机***的特性测试;
automake-描述如何“建立(build)”程序,允许开发人员编写一个特定的Makefile;
libtool-生成共享库的标准化方法,如果所有源文件中都不包含一个main()函数,则生成共享库;
gettext-提供将文本信息翻译成其它语言的框架;
m4-如果autoconf需要GNU version of m4,则需包含此工具;
perl-automake需要包含该工具。
本地编译是指使用对应于主机***结构指令集的编译器进行编译,交叉编译是指使用对应于目标机***结构指令***但是运行在主机上的编译器进行编译。本地编译和交叉编译的差别在于使用的编译器不同,运行过程没有什么不同,只是在执行congfigure时的参数不同。
交叉编译过程中的调用关系如图11所示。
2.使用远程调试模块:
本模块用于实现Linux下对目标板上程序的远程调试,提供远程调试参数配置的GUI界面。远程调试模块必须在目标平台建立预编译的gdbserver,启动gdbserver后,在主机开发平台上运行远程调试模块的工具才能通过TCP/IP连接进行调试。
这些配置都被保存在该嵌入式***的设置文件中。
进行远程调试,必须在目标机上预先启动gdbserver。主机上的嵌入式设备集成开发***远程调试模块实现的具体功能如下:
1)设置调试参数。设置目标机的体系结构、远程调试工具、以及目标机的IP地址、调试端口号等关键参数。用户只需在直观的图形对话框上逐项选择相应的参数。
2)启动调试过程。根据远程调试的参数设置,在用户进行远程调试时,启动相应的调试命令,同时建立主机与目标***的通信,并等待用户下一步的调试指令。
3)执行调试指令。执行run、continue、step、quit等一系列GDB指令。与这些指令对应的是调试菜单弹出的菜单项或者调试工具栏中的工具。
远程调试实现部分可以实现本嵌入式***本地调试功能的修改,使本地调试菜单同样适用于远程调试。
3.使用加载模块:
本模块实现Linux下基于XMODEM/YMODEM等串口通信协议的文件传输,并提供图形化的对话框。
上载过程中的函数调用关系如图12所示。加载模块实现的具体功能如下:
1)传输参数设置界面。用户可以在对话框内对端口号、传输波特率、校验码等串口通信关键参数进行设置。
2)参数设置错误报告。如果发现参数设置错误,或者串口没有响应,及时进行相应的错误提示。
3)文件传送。包括传送的文件名的选择,以及相应设备的打开、关闭和设备文件读写等操作。
4)文件传送过程控制。包括传输过程中的随机停止文件传输、传输过程中的错误报告等。
内核映像、文件***映像上载的目标板存储器上的地址缺省为固定物理地址。应用程序的映像可以作为文件拷贝到文件***中,然后作为一个新的文件***映像上载,也可以单独通过ftp等工具从网络向目标***的文件***中添加。
在嵌入式***开发的过程中,各模块的接口关系如图13所示,包括如下内容:
1.用户界面→平台开发配置:实现平台开发配置模块接口调用;平台开发配置→用户界面:返回内核配置冲突信息、模块运行状态信息。
2.用户界面→编译和生成:调用关系;编译和生成→用户界面:返回运行状态信息。
3.用户界面→上载:调用关系;上载→用户界面:返回运行状态信息。
4.平台开发配置→编译和生成:通过文件、数据结构等传递生成目标平台的配置信息(含内核生成配置、运行库及图形库等配置)
5.编译和生成→上载:提供上载所需目标平台二进制文件(含ramdisk等形式)。
6.平台开发配置→上载:以文件或数据结构形式,传递上载所需的目标平台开发配置参数。
图14为使用本嵌入式设备集成开发***开发嵌入式设备应用软件的工作流程示意图。一个新的工程确定之后,首先形成工程配置文档,工程配置文档直接对文件***配置和内核配置产生影响,从而生成新的文件***文档和内核配置文档。与该工程对应的应用程序源代码形成之后,经过交叉编译模块编译,并经远程调试确认之后,生成最终的应用程序文件***,并进一步形成二进制映像,上载到目标机中。在另一方面,由于有新工程的加入,内核配置也要作相应的适应性修改,该修改是由映射关系文档和工程配置文档共同决定的,修改后的内核配置文档与内核源代码一起形成编译后的内核,该内核与应用程序文件***一样,在形成二进制映像之后,上载到目标机中。
在上述过程中,首先要建立主机与目标平台的网络连接,通过telnet登录到目标***上。如果不能建立连接或者不能远程登录,那么问题出在***内核配置方面-其是否支持网络?
建立网络连接并远程登录后,在目标***的用户目录下就可以运行ls、pwd、dmesg等shell命令。如果不能运行这些常用命令,那么问题出在文件***方面-/bin或者/sbin目录是否包含这些命令或工具?
如果能够成功进入目标***的各个目录,那么进入应用程序所在目录,如/home、/demo或者/app等,在命令行运行应用程序。如果不能成功运行应用程序,那么说明问题出在应用程序的开发方面-可能是编译问题,也可能是应用程序本身的问题,则需要进行远程调试来找出问题并进行修改。
只有解决以上所有问题,嵌入式***才最终完全开发成功。
图15给出了目标平台应用软件开发过程中的模块接口关系,其具体内容如下所述:
1.用户界面→项目管理:调用项目管理有关接口函数;项目管理→用户界面:向用户界面返回模块运行状态信息。
2.用户界面→文本编辑:调用文本编辑有关接口;文本编辑→用户界面:向用户界面返回文本处理状态、运行状态等信息。
3.用户界面→编译和生成:调用编译和生成有关接口;编译和生成→用户界面:返回运行状态等信息。
4.用户界面→上载:调用上载有关接口;上载→用户界面:返回运行状态等信息。
5.用户界面→调试:调用调试有关接口;调试→用户界面:返回运行状态等信息。
6.文本编辑→项目管理:传递项目文件修改信息。
7.文本编辑→编译和生成:通过文件形式,传递可在编译时使用的源代码。
8.编译和生成→上载:生成上载所需目标应用程序二进制文件。
9.项目管理→编译和生成:通过文件或数据结构形式,传递项目编译生成所需的配置参数、项目文件包。
10.编译和生成→调试:以文件形式,提供调试所需本地可执行代码和调试信息。
11.平台开发配置→项目管理:通过文件、数据结构等传递目标平台的配置信息。
12.用户界面→平台开发配置:实现目标平台配置模块接口调用;平台开发配置→用户界面:返回模块运行状态信息。
13.平台开发配置→编译和生成:通过文件、数据结构等传递目标平台的配置信息。
14.平台开发配置→上载:以文件或数据结构形式,传递上载所需的目标平台配置参数。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
Claims (10)
1.一种嵌入式设备集成开发***,基于Linux平台实现,包括交叉编译模块,远程调试模块,加载模块,文件编辑模块;所述交叉编译模块包括汇编器、编译器和链接器;所述远程调试模块包括内核调试工具和应用开发调试工具;所述加载模块包括裸机加载工具、操作***加载工具以及基于操作***的加载工具,其特征在于:
所述***还具有平台开发配置模块和项目管理模块;所述平台开发配置模块提供开发板级支持软件包,进行开发平台的配置工作;所述项目管理模块为该开发平台提供文件***、内核配置一体化的工作区;源文件在所述工作区编写完成之后,所述交叉编译模块进行编译,生成的映像文件由所述加载模块加载到目标机,由所述远程调试模块进行调试。
2.如权利要求1所述的嵌入式设备集成开发***,其特征在于:
所述开发板级支持软件包具有二级索引配置。
3.如权利要求2所述的嵌入式设备集成开发***,其特征在于:
第一级索引以嵌入式处理器的平台体系为索引项,列出嵌入式集成开发***提供的硬件平台的名称;第二级列出用户选择的硬件平台上的基本软硬件配置信息。
4.如权利要求2所述的嵌入式设备集成开发***,其特征在于:
所述开发板级支持软件包具有粗粒度配置和细粒度配置两种模式,该两种模式的选择因素包括用户项目选用的平台与开发***缺省提供的平台是否一致;目标***对于操作***内核与文件***的大小限制是否严格;目标***是否需要定制特殊功能三方面情况。
5.如权利要求1所述的嵌入式设备集成开发***,其特征在于:
所述源文件包括内核源文件和应用程序源文件。
6.一种利用如权利要求1所述的嵌入式设备集成开发***开发嵌入式***的方法,包括下述步骤:
(1)定义嵌入式***的主框架;
(2)配置开发板级支持软件包;
(3)利用平台开发配置模块进行开发平台的配置;
(4)项目管理模块为上述开发平台确定工作区;
(5)在工作区开发嵌入式***的内核源程序和用户应用程序;
(6)由交叉编译模块对源文件进行编译,生成内核的映像文件和应用程序的二进制映像文件;
(7)上述内核的映像文件和应用程序的二进制映像文件由加载模块加载到目标机;
(8)利用远程调试模块对嵌入式***的内核和用户应用程序进行调试,如果不能满足设计要求则返回步骤(5),重新进行开发;如果满足设计要求则嵌入式***开发成功。
7.如权利要求6所述的利用嵌入式设备集成开发***开发嵌入式***的方法,其特征在于:
所述步骤(1)中的主框架运行机制为:
a.***各变量、对象初始化;
b.***初始化完成,并等待外部用户事件或***消息的输入;
c.如有用户输入,则根据事件消息转换运行状态,执行相应的功能处理过程;执行结束,返回主框架的等待状态;
d.如接收到***消息,则进行相应的***消息处理过程,处理完返回等待状态;如果是退出消息,则***运行结束。
8.如权利要求6所述的利用嵌入式设备集成开发***开发嵌入式***的方法,其特征在于:
所述工作区与一个包含操作***和应用程序的嵌入式***相对应,所述工作区的设置选项中包含相应的目标平台体系结构及相关硬件的信息。
9.如权利要求6所述的利用嵌入式设备集成开发***开发嵌入式***的方法,其特征在于:
所述加载模块用于设置传输参数,报告参数设置错误,传送文件并进行文件传送过程控制。
10.如权利要求6所述的利用嵌入式设备集成开发***开发嵌入式***的方法,其特征在于:
所述远程调试模块在所述嵌入式设备集成开发***用于设置调试参数,启动调试过程并执行调试指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100693783A CN100403258C (zh) | 2004-07-21 | 2004-07-21 | 嵌入式设备集成开发***及其使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100693783A CN100403258C (zh) | 2004-07-21 | 2004-07-21 | 嵌入式设备集成开发***及其使用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1725177A CN1725177A (zh) | 2006-01-25 |
CN100403258C true CN100403258C (zh) | 2008-07-16 |
Family
ID=35924664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100693783A Expired - Fee Related CN100403258C (zh) | 2004-07-21 | 2004-07-21 | 嵌入式设备集成开发***及其使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100403258C (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7886234B2 (en) | 2006-10-13 | 2011-02-08 | Mediatek Inc. | Systems and methods for creating embedded target images |
CN101324850B (zh) * | 2007-06-12 | 2011-04-06 | 中兴通讯股份有限公司 | Linux内核动态加载方法 |
CN100454319C (zh) * | 2007-10-15 | 2009-01-21 | 北京航空航天大学 | 一种导航***的微型处理器ip核设计方法 |
CN101631107B (zh) * | 2008-07-16 | 2012-02-22 | 福建升腾资讯有限公司 | 基于Web方式的Linux内核配置方法 |
CN101620535B (zh) * | 2009-07-29 | 2012-06-06 | 北京航空航天大学 | 一种机载计算机软件通用框架设计方法 |
CN102508673B (zh) * | 2011-12-02 | 2015-07-29 | 方正国际软件有限公司 | 快速开发与配置平台类软件的***及方法 |
CN102830980A (zh) * | 2012-09-03 | 2012-12-19 | 广州掇月信息科技有限公司 | 移动通信基带芯片开发平台 |
CN102955698A (zh) * | 2012-11-26 | 2013-03-06 | 中国联合网络通信集团有限公司 | 基于多终端的软件开发的处理方法和装置 |
CN103279105B (zh) * | 2013-05-29 | 2015-05-27 | 武汉科瑞新电气自动化有限公司 | 基于嵌入式模块化平台的工业数据监测*** |
CN103853560A (zh) * | 2014-03-18 | 2014-06-11 | 浪潮集团有限公司 | 一种基于broadcom万兆交换机SDK交叉编译的方法 |
TWI557645B (zh) * | 2014-06-10 | 2016-11-11 | 大同股份有限公司 | 專案處理方法及電子裝置 |
CN104133671B (zh) * | 2014-06-30 | 2017-10-27 | 汉柏科技有限公司 | 一种数字处理设备的硬件接口屏蔽装置及方法 |
CN107153529A (zh) * | 2016-03-02 | 2017-09-12 | 中兴通讯股份有限公司 | 一种嵌入式软件开发方法、装置及平台 |
CN106843991A (zh) * | 2016-12-13 | 2017-06-13 | 北京元心科技有限公司 | 程序编译方法及*** |
CN106598607A (zh) * | 2016-12-19 | 2017-04-26 | 上海鸣啸信息科技股份有限公司 | 一种嵌入式乘客信息***的软件开发方法 |
CN107273165B (zh) * | 2017-06-19 | 2021-03-23 | 苏州浪潮智能科技有限公司 | 一种实现模块动态调用的***及方法 |
CN107943476B (zh) * | 2017-11-17 | 2018-12-18 | 深圳市珍爱捷云信息技术有限公司 | 一种基于模型驱动的计算机联锁软件开发方法 |
CN108089854A (zh) * | 2017-12-13 | 2018-05-29 | 天津津航计算技术研究所 | 一种linux***下pci设备驱动开发*** |
CN108008945A (zh) * | 2017-12-13 | 2018-05-08 | 天津津航计算技术研究所 | 一种linux***下pci设备驱动开发方法 |
CN109614366B (zh) * | 2018-11-15 | 2023-06-06 | 广东工贸职业技术学院 | 运动控制***的可配置方法及装置 |
CN110045982A (zh) * | 2019-03-28 | 2019-07-23 | 宋子杰 | 一种基于源代码聚合的嵌入式***配置方法 |
CN110673874B (zh) * | 2019-09-11 | 2023-06-13 | 苏州德创测控科技有限公司 | 用于向导式编程软件的变更配置的方法、存储介质、设备 |
CN110688313B (zh) * | 2019-09-26 | 2022-11-18 | 天津津航计算技术研究所 | 一种VxWorks操作***下软件测试的故障注入方法 |
CN111338612A (zh) * | 2020-02-18 | 2020-06-26 | 东风电子科技股份有限公司 | 针对软件开发工具实现c交叉编译器集成构建的***及其方法 |
CN113470416B (zh) * | 2020-03-31 | 2023-02-17 | 上汽通用汽车有限公司 | 利用嵌入式***实现车位检测的***、方法和存储介质 |
CN112231211B (zh) * | 2020-10-14 | 2024-01-26 | 天津津航计算技术研究所 | 一种在嵌入式VxWorks操作***下解决Qt应用调试的方法 |
CN116931954B (zh) * | 2023-09-18 | 2023-12-19 | 浙江简捷物联科技有限公司 | 一种嵌入式软件包编译构建方法、装置、设备及介质 |
CN117931205A (zh) * | 2024-03-22 | 2024-04-26 | 北京智芯微电子科技有限公司 | 嵌入式集成开发***、方法及电子设备 |
CN118093437A (zh) * | 2024-04-23 | 2024-05-28 | 青岛国创智能家电研究院有限公司 | 用于调试嵌入式设备的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266056B1 (en) * | 1998-11-30 | 2001-07-24 | Sun Microsystems, Inc. | Display widget interaction in embedded systems using child graphics contexts |
US20020059054A1 (en) * | 2000-06-02 | 2002-05-16 | Bade Stephen L. | Method and system for virtual prototyping |
CN1489047A (zh) * | 2002-10-09 | 2004-04-14 | 华为技术有限公司 | 嵌入式***中软件补丁的加载与同步的方法 |
-
2004
- 2004-07-21 CN CNB2004100693783A patent/CN100403258C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266056B1 (en) * | 1998-11-30 | 2001-07-24 | Sun Microsystems, Inc. | Display widget interaction in embedded systems using child graphics contexts |
US20020059054A1 (en) * | 2000-06-02 | 2002-05-16 | Bade Stephen L. | Method and system for virtual prototyping |
CN1489047A (zh) * | 2002-10-09 | 2004-04-14 | 华为技术有限公司 | 嵌入式***中软件补丁的加载与同步的方法 |
Non-Patent Citations (2)
Title |
---|
嵌入式Linux集成开发环境研究与实现. 孟宪栋,孙富春,周纬杰.计算机***应用,第5期. 2004 * |
嵌入式Web服务器软件的设计和实现. 李磊,杨柏林,胡维华.计算机工程与设计,第24卷第10期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
CN1725177A (zh) | 2006-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100403258C (zh) | 嵌入式设备集成开发***及其使用方法 | |
US6715139B1 (en) | System and method for providing and displaying debugging information of a graphical program on a first computer during execution of the graphical program on a second computer | |
US8935623B1 (en) | Automatic API generation to functional PSoC blocks | |
US8341599B1 (en) | Environments sharing remote mounted middleware | |
US20140359558A1 (en) | System and methods for end-users to graphically program and manage computers and devices | |
US20090064196A1 (en) | Model based device driver code generation | |
CN101216773A (zh) | 一种嵌入式Linux***固件下载方法和装置 | |
CN101515239A (zh) | X86飞控计算机快速启动方法 | |
Pajankar | Raspberry pi supercomputing and scientific programming | |
JP2019139742A (ja) | コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体 | |
WO2007056343A2 (en) | Networked linux machine and windows software development system | |
Ramon | Intel Galileo and Intel Galileo Gen 2: API Features and Arduino Projects for Linux Programmers | |
US20090249312A1 (en) | Process Generation Approach and System for an Integrated Telecom Platform | |
CN106843973B (zh) | 一种移植嵌入式***并在sd卡启动的方法 | |
CN102081520A (zh) | 嵌入式硬盘录像机的图形用户界面创建方法及其*** | |
CN111459506B (zh) | 深度学习平台集群的部署方法、装置、介质及电子设备 | |
CN111427839A (zh) | 一种Intel SoC FPGA的远程在线配置、调试方法 | |
CN109144491B (zh) | 单片机开发平台 | |
CN111158645B (zh) | 提供集成开发环境的***和方法 | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理*** | |
KR20020032256A (ko) | 통합 임베디드 시스템 및 이의 구현 방법 | |
CN113961232A (zh) | 提供集成开发环境的终端、方法和平台服务器 | |
Reznikov | Creating tailored OS images for embedded systems using Buildroot | |
CN117370093B (zh) | 一种芯片调试方法、装置、设备及存储介质 | |
Tiwari et al. | Flash Drive To Flash Drive Data Transfer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080716 |