【精品】tinyos操作系统开发技术及实践(西电版第4章平台移植精品ppt课件.ppt
《【精品】tinyos操作系统开发技术及实践(西电版第4章平台移植精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】tinyos操作系统开发技术及实践(西电版第4章平台移植精品ppt课件.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、TinyOS操作系统开发技术及实践(西电版)第4章 平台移植第4章 平 台 移 植 2 24.1 移植概述移植概述4.1.1 名词概念名词概念在具体移植之前,需要了解以下名词的概念:平台(platform):是硬件设备以及运行在硬件设备上的可以给用户提供二次开发功能的软件和硬件总称。发布平台:可以压缩打包的整个目录文件总称,有时也简称为平台,用户解压或直接复制后,在安装有TinyOS的系统下即可以进行TinyOS应用程序开发。硬件平台:发布平台所支持的硬件总称,包括核心CPU和芯片外围的硬件资源。芯片(MCU):硬件平台的核心CPU,如CC2530。第4章 平 台 移 植 3 3nesC编译器
2、:TinyOS提供的可以把nc文件编译成C语言文件的工具程序。编译工具链:也称为make系统,是make工具、Makefile脚本文件、nesC编译器等共工具的总称。Makefile:包括直接以Makefile文件命名以及Makefile格式的可以被make工具解析执行的脚本文件总称。本地编译器:可以将C文件编译成硬件平台可执行代码的工具,一般由芯片厂商提供。程序烧写器:将可执行代码下载至硬件平台的工具,一般由芯片厂商提供。以上概念之间的关系如图4-1所示。从图4-1可以看出,本地编译器和程序烧写器一般不包含在平台中,一般是由芯片厂商或第三方厂商提供,如本书使用的IAR For 51是由IAR
3、 Systems公司提供的。第4章 平 台 移 植 4 4图4-1 与TinyOS移植相关的概念 第4章 平 台 移 植 5 54.1.2 平台目录平台目录官方推荐使用“新的目录”作为新平台的发布目录(调试和发布安装都在Linux系统的“/opt/”目录下),并且参考TinyOS原来的目录建立发布目录。用户在新平台上进行开发,其实就是在这个发布目录下工作。一般情况下,一个新平台的目录结构及必要的文件如图4-2所示。第4章 平 台 移 植 6 6第4章 平 台 移 植 7 7第4章 平 台 移 植 8 8图4-3 建立cctinyos目录 第4章 平 台 移 植 9 9图4-4 cctinyos
4、平台目录框架 第4章 平 台 移 植 10 104.2 make系统系统TinyOS程序的编译使用的是make工具,make工具通过解析Makefile文件(以及符合Makefile格式的脚本文件)查找参与编译的文件并调用nesC编译器,并进一步调用本地编译器和烧写器完成TinyOS程序的编译链接和下载执行工作(关于make工具及Makefile文件的编写方法请参考相关教材或参考本书系列教材Linux操作系统教程)。本小节浅析TinyOS的make系统工作原理,以便于理解TinyOS的移植过程。4.2.1 make工作流程工作流程TinyOS的make系统的工作流程如图4-5所示。第4章 平
5、台 移 植 11 11图4-5 make工作流程 第4章 平 台 移 植 12 12上述编译过程涉及到以下几个重要文件:Makefile文件:位于当前应用程序目录下,是make工具首先要解析执行的文件。Makerules文件:TinyOS系统提供的系统Makefile文件,一般位于“tinyos-2.x/support/make/”目录内。平台名.target文件:位于发布平台目录的“support/make/”目录下,以平台名命名的文件(如cc2530.target),用于建立与平台相关的变量,并且提供平台名和编译生成目标。第4章 平 台 移 植 13 13芯片名.rules文件:位于发布平
6、台目录的“support/make/芯片名/”目录下,是make工具要解析执行的主要用户级Makefile文件,具体实现真正的编译调用和程序烧写、下载调用。.platform文件:位于发布平台目录的“tos/platform/芯片名/”目录下,用于指定要参与编译的TinyOS和发布平台目录,文件内容包含类似于C语言下的“#include”预处理语句。第4章 平 台 移 植 14 144.2.2 系统环境变量系统环境变量1.MAKERULES变量变量根据前述make系统工作流程可知,所有的TinyOS应用程序目录下都必须有一个Makefile文件。该文件由命令行的“make 平台名”命令触发ma
7、ke工具解析执行,其内容一般如代码4-1所示。【代码4-1】MakefileCOMPONENT=顶层配件名include$(MAKERULES)其中,TinyOS规定,变量“MAKERULES”是由用户作为环境变量定义,并且指向TinyOS系统提供的Makerules文件。第4章 平 台 移 植 15 152.环境变量设置脚本环境变量设置脚本一般情况下,为方便用户使用,在平台目录下提供一个shell脚本文件,在该文件中定义类似“MAKERULES”的环境变量。该shell脚本文件在Linux系统启动(或Cygwin启动)时由Linux系统自动调用,以自动为TinyOS系统设置好相应的环境变量。
8、脚本文件中至少要定义以下三个变量:TOSDIR:指向官方TinyOS安装目录,如“/opt/tinyos-2.x”。TOSMAKE_PATH:指向发布平台的“support/make”目录,如“/opt/mytinyos/supprot/make”。MAKERULES:指向官方TinyOS安装目录下的“Makerules”文件,如“/opt/tinyos-2.x/support/make/Makerules”。以下shell脚本文件是本书配套平台mytinyos的环境变量脚本,如示例4-1所示。第4章 平 台 移 植 16 16【示例4-1】myenv.sh#tinyos envsexport
9、 TOSROOT=/opt/tinyos-2.xexport DHROOT=/opt/mytinyosexport TOSMAKE_PATH=$TOSMAKEPATH$DHROOT/support/makeif !-d$TOSROOT;then echo TOSROOT$TOSROOT does not exist,FAIL exit 1else echo TOSROOT=$TOSROOT fi第4章 平 台 移 植 17 17export TOSDIR=$TOSROOT/tosexport MAKERULES=$TOSROOT/support/make/Makerules#显示设置好的环境变
10、量echo TOSDIR=$TOSDIRecho MAKERULES=$MAKERULESecho TOSMAKE_PATH=$TOSMAKE_PATH#告诉用户,设置完毕echo Set mytinyos env SUCCESS!第4章 平 台 移 植 18 183.自动运行脚本自动运行脚本为了让建立好的shell脚本文件随系统启动时自动运行,可以在Linux系统的启动脚本中增加命令进行运行。对于Cygwin,可以在其“/home/用户名/.bashrc”脚本中增加命令,如图4-6所示。第4章 平 台 移 植 19 19图4-6 增加命令以自动运行脚本 第4章 平 台 移 植 2020然后,
11、当启动Cygwin时可以看到如图4-7所示信息。图4-7 cygwin启动时的显示信息 第4章 平 台 移 植 21 214.2.3 启动脚本实例启动脚本实例本小节内容用于实现任务描述4.D.2,在4.D.1的基础上,建立cctinyos平台的启动脚本文件,并设置为自动启动。1.建立启动脚本文件建立启动脚本文件参考前述mytinyos平台的脚本文件,建立cctinyos平台的环境变量设置脚本文件,并保存于“opt/cctinyos/”目录下。其内容如描述4.D.2 cctinyos.env所示。第4章 平 台 移 植 2222【描述4.D.2】cctinyos.env#Script to se
12、t cctinyos env&simply commands#Usage:source cctinyos.env in cctinyoss root dir#cctinyos envsexport TOSROOT=/opt/tinyos-2.xexport CCROOT=/opt/cctinyosexport TOSMAKE_PATH=$TOSMAKEPATH$CCROOT/support/make第4章 平 台 移 植 2323if !-d$TOSROOT;then echo TOSROOT$TOSROOT does not exist,FAIL exit 1else echo TOSROO
13、T=$TOSROOT fiexport TOSDIR=$TOSROOT/tosexport MAKERULES=$TOSROOT/support/make/Makerulesecho TOSDIR=$TOSDIRecho MAKERULES=$MAKERULESecho TOSMAKE_PATH=$TOSMAKE_PATHecho Set cctinyos env SUCCESS!第4章 平 台 移 植 24242.设置为自动运行设置为自动运行修改Cygwin下的“/home/administrator/.bashrc”的脚本文件,在文件的末尾修改内容如描述4.D.2 .bashrc所示。【描
14、述4.D.2】.bashrc#注释掉以下两行#source/opt/mytinyos/myenv.sh#cd/opt/mytinyos/apps#添加以下两行代码source/opt/cctinyos/cctinyos.envcd/opt/cctinyos/apps第4章 平 台 移 植 25253.重新启动重新启动cygwin运行结果如图4-8所示。图4-8 cctinyos启动 第4章 平 台 移 植 26264.3 support目录目录“平台目录名/support/”目录用于存放为编译工具链提供支持的编译脚本文件。一般情况它只有一个make子目录,按照官方要求make目录有以下两部分内
15、容:“平台名.target”文件。以平台的芯片命名的子目录。第4章 平 台 移 植 27274.3.1 平台名平台名.target文件文件“平台名.target”简称为“.target”文件,按照官方要求,其为固定格式的Makefile脚本,如代码4-2所示。【代码4-2】平台名.target文件PLATFORM=平台名ifdef PLATFORMPFLAGS+=-D_$(PLATFORM)_=1endif$(call TOSMake_include_platform,芯片名)平台目标:$(BUILD_DEPS):第4章 平 台 移 植 2828其中,上述代码中的黑体字由用户根据需要替换为自己
16、平台的内容:平台名:也称为平台代号,赋值给PLATFORM变量,该变量可以在后面所讲的“芯片名.rules”文件中引用。芯片名:是平台所运行的MCU名称,注意它的名字一定要与下面要讲的芯片目录名字一致。平台目标:是make工具要生成的最终目标,一般与“平台名”一致。另外:BUILD_DEPS:是平台目标的依赖,该变量可以被后面的.rules、docs.extra和install.extra文件定义,以提供给make系统灵活实现用户的目标(nesC编译、本地编译、程序烧写等)。第4章 平 台 移 植 2929“.target”文件定义好后,将对用户在新平台上使用make工具编译程序时产生以下两个
17、直接影响:调用make工具编译程序时的命令要使用“make 平台目标”。make工具调用相关脚本自动寻找“芯片名”目录下的“芯片名.rules”文件并解析执行。例如,建立以CC2530为平台名,芯片名也为CC2530的.target文件,则名字是cc2530.target,且内容如示例4-2所示。第4章 平 台 移 植 3030【示例4-2】cc2530.targetPLATFORM=cc2530ifdef PLATFORMPFLAGS+=-D_$(PLATFORM)_=1endif$(call TOSMake_include_platform,cc2530)cc2530:$(BUILD_DE
18、PS):第4章 平 台 移 植 31 314.3.2 芯片目录芯片目录芯片目录为make工具提供详细的编译规则。根据上述内容可知,芯片目录的名字要与.target文件中的“芯片名”一致,且主要含以下文件:“芯片名.rules”文件:是make工具要调用的主要编译脚本,该文件实际调用nesC的编译器对nesC程序进行编译。docs.extra文件:用于提供对“make 平台名 docs”命令的支持,以生成可视化组件视图。若没有该文件,make工具根据系统提供的脚本自动调用系统目录下的docs.extra文件。insall.extra文件:用于提供对“make 平台名 install”的支持,以实
19、现自动将生成的nesC程序编译成硬件平台二进制可执行代码,并下载至目标平台内。其他脚本文件:一般是.rules文件调用的其他辅助脚本。第4章 平 台 移 植 32324.3.3 芯片名芯片名.rules文件文件1.rules文件的内容文件的内容“芯片名.rules”文件简称“.rules”文件,本质上是一个Makefile文件脚本,被前述“平台名.target”文件调用而后由make解析执行。它主要完成以下工作:定义指向“参与编译的路径”变量以传递给nesC编译器,让编译器可以找到程序所用的合适的组件和接口。调用nesC编译器编译nesC程序为C程序。调用平台硬件所需要的本地C语言编译器编译硬
20、件可执行的二进制代码。调用平台硬件所需要的烧写程序将可指定行代码下载至硬件。本书配套平台mytinyos的cc2530.rules的文件内容如示例4-3所示。第4章 平 台 移 植 3333【示例4-3】cc2530.rules#-*-Makefile-*-vim:syntax=make#In order to exclude/usr/lib/ncc/,directly call to nesc1#定义变量NCC=/usr/lib/ncc/nesc1LIBS=-lmBUILDDIR?=build/$(PLATFORM)APP_C?=$(BUILDDIR)/app.cIAR_C?=$(BUILD
21、DIR)/app-iar.cCC2530_MAKEDIR?=$(DHROOT)/support/make/cc2530CC2530_PLATFORMDIR?=$(DHROOT)/tos/platforms/cc2530第4章 平 台 移 植 3434#定义BUILD_DEPS变量,与CC2530.target文件中目标依赖联系起来ifndef BUILD_DEPS ifeq($(filter$(BUILDLESS_DEPS),$(GOALS),)BUILD_DEPS=exe endifendif#为nesC编译器的参数指定路径值PFLAGS+=-I$(CC2530_PLATFORMDIR)PF
22、LAGS+=-I$(CC2530_MAKEDIR)/incPFLAGS+=-I$(CC2530_PLATFORMDIR)/preinc第4章 平 台 移 植 3535#为nesC编译器的参数指定路径值CFLAGS+=-U_BLOCKS_CFLAGS+=-fnesc-include=deputy_nodeputy -fnesc-include=nesc_nx-fnesc-include=tosCFLAGS+=-fnesc-separator=_ -DNESC=134-Wnesc-all#调用perl脚本引入要参与编译的系统路径CFLAGS+=$(shell perl$(CC2530_MAKEDI
23、R)/nescarg.pl)第4章 平 台 移 植 3636第4章 平 台 移 植 3737第4章 平 台 移 植 3838第4章 平 台 移 植 3939上述脚本代码涉及到以下几个make目标:tosimage:依赖于exe和imgprog目标实现程序编译和下载。exe:依赖于exe0目标实现程序nesC程序编译。exe0:通过(依赖于)builddir目标实现编译目录的建立,并且通过命令实现nesC程序编译。builddir:建立编译目录。imgprog:本地编译,且下载程序至硬件。以上目标中,exe0、builddir和impprog是基本目标,tosimage和exe是通过基本目标实现
24、自己。这种目标的嵌套机制,可以灵活的实现组合功能。第4章 平 台 移 植 40402.辅助脚本文件辅助脚本文件从上述代码可以看出,cc2530.rules文件引入以下两个新的脚本文件:nescarg.pl:perl脚本,分析处理.platform文件以引入nesC指向系统目录的编译路径。iar.py:python脚本,主要处理nesC编译形成的C语言文件中不符合C语言语法的注释。关于perl和python脚本的编写请参考相关资料。第4章 平 台 移 植 41 413.nesC编译器编译器按照TinyOS官方的推荐,nesC编译器主要是“/usr/bin”目录下的ncc和nescc两个程序。用户
25、在使用的时候应该使用ncc,然后ncc的部分编译工作通过调用nescc完成。需要注意的是,上述代码中用到的nesC编译器是“/usr/lib/ncc”目录下的nesc1程序。原因是本书用到的本地编译器是IAR,而ncc编译器将产生一些IAR不支持的数据类型(如64位)和零长度的数组等。第4章 平 台 移 植 42424.3.4 docs.extra文件文件1.nesdoc命令命令“docs.extra”文件的主要内容就是调用nesdoc程序为程序生成可视化视图,关于nesdoc命令的使用可以在cygwin的命令行上运行“man nesdoc”命令查看其使用说明,如图4-9所示。第4章 平 台
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 【精品】tinyos操作系统开发技术及实践西电版第4章 平台移植精品ppt课件 tinyos 操作系统 开发 技术 实践 西电版第 平台 移植 ppt 课件
限制150内