您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第3章Workbench集成开发环境的使用
嵌入式系统实验第3章Workbench集成开发环境的使用夏海轮xiahailun@bupt.edu.cn北京邮电大学信息与通信工程学院2本章主要内容建立和管理工程(Project)使用命令行工具(HostShell)使用调试工具(Debugger)逻辑分析工具(SystemViewer)VxWorks的再配置(Scalable)3建立和管理工程(Projects)工程概述可以启动的工程及对VxWorks的重新配置可以下载的工程生成(buid)可执行文件4工程概述创建工程(Project)工程中的一些术语工程的图形化组件工程文件5工程(project)和工作区(workspace)在Workbench中,使用Project和Workspace来管理用户代码、配置VxWorks以及配置代码生成(build)的参数Project负责管理源代码文件,二进制文件以及代码生成(build)的参数。Workspace负责管理多个Project。Workspace1(.wsp)Project1Project2*.wpj*.c*.cpp*.h*.o*.outmakefile*.wpj*.c*.cpp*.h*.o*.outmakefile工程类型61.VxWorksImageProject(VIP)2.VxWorksBootLoader/BSPProject(BSP)3.VxWorksDownloadableKernelModuleProject(DKM)4.VxWorksReal-timeProcessProject(RTP)5.VxWorksSharedLibraryProject(Libs)6.VxWorksROMFSFileSystemProject(ROMFS)7.User-DefinedProjects(UDP)8.NativeApplicationProject(NAP)VxWorksImageProject用VxWorksImageProject工程配置(自定义或裁剪)并编译一个内核映像用以启动目标板。通过添加VxWorksROMFS文件系统、内核模块(kernelmodules)、应用程序(applications)、库(libraries)、数据文件(datafiles),可以把整个系统联接进如一个映像(singleimage)。一个VxWorksImageproject既可基于一个同类型的Imageproject也可基于一个BSP(BoardSupportPackage)。7VxWorksBootLoader/BSPProjectVxWorksBootLoader/BSP工程用于创建一个VxWorksbootloader也称为VxWorksbootROM,在启动时下载一个带vxworks内核的目标映像。在开发环境中bootloader被用来从主机下载一个VxWorks映像;在最终的产品中bootloader和操作系统映像存储在同一个磁盘上。bootloader和VxWorks并不需要在ROM中单独存储。8VxWorksDownloadableKernelModuleProject利用VxWorksDownloadableKernelModule工程管理和建立一个存在于内核空间(kernelspace)模块(modules)。可以单独建立模块运行和调试,可以自由的在目标(target)上运行VxWorks,下载,卸载,重载。一旦模块完成就可以静态的链接到内核(kernel),或者模块也可以使用一个存在的文件系统。内核模式的开发是VxWorks传统的开发方法,所有的任务(tasks)都在启动(spawn)之后运行在一个没有保护的环境。910Project中的其它术语组件(components):VxWorks中可以裁剪的部分工具链(toolchain):用于特定目标板CPU的一套开发工具(编译器、连接器和汇编器等)生成(build)参数:用户规定的用于生成可执行文件的规则和参数设置11创建工程在File菜单中点击条目NewProject开始生成一个Project12工作区(workspace)窗口工作区窗口的标签–Project:包含源文件和目标文件–RemoteSystems:远端target管理–代码区:代码编辑尽量使用上下文菜单13VxWorks的组件•VxWorks的各个组件在VxWorks的面板中列出来。包括进VxWorksImage的组件为黑体,没有包括进的组件为正常字体,不可用的组件为斜体。使用上下文菜单可以选择包含或去除组件14应用工程静态链接通常用于生成产品版本的产品动态链接通常在开发过程中使用。Project2*.wpj*.c*.cpp*.h*.o*.outmakefileHostTargetapplicationVxWorks15Build工程可以使用Build工具条,上下文条目中的选项和Build菜单对一个可下载的工程进行build。Build生成的默认的目标文件为projName.out。projName.out不是一个可以执行的文件,它是一个目标模块,可以被下载到目标板上,并动态链接到目标板上的VxWorks。16未解释的外部函数Demo(param){printf(…);taskIdSelf(…);taskName(…);}%nmsimpcdemo.out…00000000T_demoU_printfU_taskIdSelfU_taskName…•用nmsimpc列出目标文件的符号表,可以看出在demo.out中有三个符号_printf、_taskIdSelf、_taskName未被解释。因为这些符号所指向的函数不在demo.out中,而是在VxWorks中。•当demo.out被下载到目标板上,并和VxWorks进行链接后,这些符号就会得到解释。17下载工程文件在选中targetserver后,可以使用上下文菜单中的条目来下载projName.out。将projName.out装入targetserver在target上的内存池。未被解释的符号在模块下载时被解释。在下载过程中如果出现任何未被解释的符号,将会出现警告,但并不影响下载,所以模块还将出现在目标板上。也可以卸载已经载目标板上的旧版本的模块。18卸载(unloading)模块模块可以使用上下文菜单中的Unload’filename’进行卸载–释放模块在目标板上所占有的代码段、数据段和Bss段–从符号表中去除该模块所有的符号当目标板上没有足够的空间来同时装载所有的模块时,非常有用需要确保还在目标板上运行的任务不会调用卸载模块中的任何函数如果留在板子上的其它模块中有符号要指向要卸载的模块,也要将它们卸载19生成(build)可执行文件的配置Build根据参数选择工具链(toolchain)工具(compiler,assembler,linker…),并为每个文件配置编译选项;同时Build还可以为Project配置Makefile的宏和一些默认的生成规则一个工程可以有多个Build的参数配置,例如可以有生成产品版本的配置,可以有生成调试版本的配置,也可以有针对不同CPU结构的配置在Workspace窗口中选择Build标签选项,就可以对build的参数进行配置20Build参数属性工作单•右键点击Project,选择属性,然后就可以对它的参数进行配置。21使用Build的注意事项可以使用任何一套为Project定义的Build规则来生成可执行代码;要注意将要使用的Build规则设置为active状态。所生成的可执行目标文件保存在以Build规则命名的目录下。如果仅仅修改了build的设置,而没有修改任何源文件,只要RebuildAll...就可以使修改的设置生效。22总结ProjectWizard帮助生成–可下载的工程–可启动的工程在工程的工作区窗口中可以–操作工程中的文件–设置Build的参数–配置VxWorks(可启动的工程)创建可启动的工程可以–生成用户自定义的VxWorksImage–将应用程序静态地链接到VxWorks中23总结VxWorks的配置–组件可以包含也可以被去掉–组件间的相互依赖性是确定的,并会报告给你–可以设置组件的参数用户自定义生成的VxWorks保存在.../projDir/buildSpecName/vxWorks24总结可下载的工程加速了交叉开发的速度–目标代码可以动态地链接到VxWorks的Image中Build的规则属性菜单可以设置–compiler,assembler,linker的选项–宏(macro)定义–Build的规则(rule)–链接(link)顺序25HostShell交互式的C-表达式解释器:–操作VxWorks的命令–下载和启动代码–创建和检查变量具有交互式的TCL解释器26Shell是如何解释命令的HostShell使用TargetServer的系统符号表并遵循下列规则来解释表达式中的名字:–-retVal=printf(“Foois%d\n”,foo)–-i(tWdbTask)–对相同的名字,优先使用WinSh内建的命令,而不是目标板上的命令–在符号表中寻找symbol–在符号表中寻找_symbol–将Taskname转换成TaskID–创建符号。如果该符号位于“=”的左边,并且不在符号表中,或它是一个任务名27系统符号表-x=10newsymbolxaddedtosymboltable.x=0xda188:value=10=0xa_printf0x29622text_accept0x2afd4textx0xda188bss0000000ASymblenamePointertomemorytypememory0xda18828WinSh作为C的解释器Shell命令的语法和普通的C程序的语法相同-x=(8*6)/4x=0x20ff378:value=12=0xc-Nom=“Nelson”newsymbol“Nom”addedtosymboltable.Nom=0x23fe798:value=37742496=0x23fe7a0=Nom+0x8-printf(“Hello%s,numberis%d.\n”,Nom,0x20)HelloNelson,numberis32.value=28=0x1c-&xvalue=34599800=0x20ff378=x29关于变量除非特别声明,Windshell将所有的变量都解释成32bit的整数在解释非整型变量时,必须使用类型标识来告诉Shell如何进行解释-z=(short)0x90z=0x20ff370:value=144=0x90-(short)zz=0x20ff370:value=144=0x90-zz=0x20ff370:value=9498350=0x90eeeeWindSh中创建的所有变量都在目标板的内存中被分配了8字节的空间,这是为了预防变量是双字节30关于数据结构Shell不识别数据结构,如果要看数据结构,应当使用源代码级的调试工具使用Shell可以显示内存-dpMyBuf003fe770002309eae0302647a682eeee003fe780eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee003fe790eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee003fe7a0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee31关于宏WindShell不能够识别宏变量(在C语言中使用#define进行定义)必须要查看头文件来找到符号所对应的值32符号表的查找使用lkup()来查找和表达式相匹配的所有变量-lkup(“stuff”)_stuff0xda1a0data(foo.o)value=0=0x0-lkup
本文标题:第3章Workbench集成开发环境的使用
链接地址:https://www.777doc.com/doc-921305 .html