基于contiki系统的开发板程序编译下载方法与流程

文档序号:15850157发布日期:2018-11-07 09:43阅读:1143来源:国知局
基于contiki系统的开发板程序编译下载方法与流程

本发明属于contiki物联网操作系统技术领域,具体涉及一种基于contiki系统的开发板程序编译下载方法。

背景技术

物联网就是把传感器装备到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道以及家用电器等各种真实物体上,通过互联网联接起来,进而运行特定的程序,达到远程控制或者实现物与物的直接通信。物联网,即通过装置在各类物体上的射频识别(rfid)、传感器、二维码等,经过接口与无线网络相连,从而给物体赋予“智能”,实现人与物体的沟通和对话,也可以实现物体与物体相互间的沟通和对话,这种将物体连接起来的网络被称为“物联网”。物联网是连接到物理对象的互联网。互联网没有物联基因,必须依靠嵌入式系统将客观世界形形色色的物理对象连接到互联网上。首先通过嵌入式系统将物理对象变成一个智能化体系,然后将单个智能化体系或智能化系统的局域网与互联网相连,便成为物联网系统。

contiki物联网操作系统是如今最为主流的物联网开发系统,它适用于处理器资源受限制的单片机,在一般情况下系统的应用程序总共只大约占用40kb大小的flash和2kb大小的ram。传统的开发板如51单片机,msp430等开发板,在window系统下都有相应的软件,进行代码编写,调试以及代码下载,一键完成编译下载的工作,对嵌入式的开发十分有利。而现有技术中嵌入式contiki系统的开发是在乌班图系统下进行开发的,contiki系统下载程序并不能实现一键编译下载,每次编译下载都需要在命令终端手动敲十几行代码,太过繁琐,不利于开发。使用contiki系统下载程序需要安装instant-contiki的虚拟机,才可以进行开发,在虚拟机下,使用的是终端命令行进行操作,要将程序下载到开发板中,十分复杂,需要十几行的代码才能做到,而且随着程序目录的不同,而难度不一,这相比于keil软件开发51单片机困难了很多,给调试代码造成的诸多的不方便。

图1为在虚拟机下的编译下载流程,详细步骤如下:

第一步:启动instant-contiki系统,进入jlink文件夹下:cdjlink/

第二步:启动jlink软件:./jlinkexe

第三步:命名设备:execdevice=cc2538sf53

第四步:擦除原程序(程序是需要反复调试,每一次调试都需要重新下载到开发板中,所以下载前开发板中会有上一次调试的程序,即原来的程序简称原程序):erase

第五步:下载:loadbin/home/user/examples/blink.bin,0x00200000

第六步:完成第五步后,返回结果若为successful,则下载成功,终止,不进行第七步;若返回结果为failtodownload,则下载失败,执行第七步。

第七步:若要重新下载,则需要返回第四步:擦除原程序erase;若遇到其他意外情况,请关闭终端,重新从第一步开始操作。

在开发过程中,调试是不可避免的,有的时候甚至数十上百次,每次调试都需要将上述步骤执行一次,这样会造成开发时间远远小于编译下载时间,而编译下载并没有对程序开发起到推动作用,相反给开发人员带来诸多不便,编译下载繁琐困难、加大开发难度、降低开发效率。因此本专利研发了一键编译下载功能,即只需点一次编译下载按键,就可以实现编译下载功能,而无需进行上述步骤。



技术实现要素:

针对于嵌入式的cintiki系统在乌班图系统下下载编译非常繁琐不利于程序开发的问题,本发明拟解决的技术问题是,提供一种基于contiki系统的开发板程序编译下载方法。该方法在windows系统下使用visualc++软件进行编译,使用jlink软件进行下载,采用python自动化测试框架,来完成对visualc++与jlink的操作,完成一键编译下载,该方法能在windows系统下实现自动化编译下载,解决编译下载繁琐的问题,使开发者可以有更多的精力放在代码的构思编写上,而非繁琐的下载步骤上,可以极大地提高开发效率。

本发明解决所述技术问题采用的技术方案是:提供一种基于contiki系统的开发板程序编译下载方法,利用python的第三方库pyautogui库,使用python模拟鼠标操作,完成对visualc++软件和jlink软件操作,实现一键编译下载;具体步骤是:

第一步、采集图像数据:

使用pyautogui库进行模拟键盘操作,定位机制是像素对比,对需要用到的操作键进行图像采集,进行图像采集时分成两个部分,第一部分为公共路径采集,采集与visualc++软件和jlink软件相关的图片,该图片为通用图片,visualc++执行编译,截取编译过程中需要用到的按钮图片;jlink软件进行下载,将jlink下载过程中用到的按钮截图保存;第二部分采集.bin文件的图片,.bin文件是要下载到开发板中的文件,截取.bin文件图片;

第二步、建立索引图片库:

将第一步采集到的所有图片进行存储,存储到同一个文件夹下,命名为索引图片库;每个通用图片依据visualc++软件和jlink软件编译下载的步骤进行命名,visualc++编译的步骤是固定的,jlink下载的步骤也是固定的,依据这些步骤顺序以及属于visualc++还是属于jlink来命名,命名格式为“编号-用途”,根据这种命名规则将所有通用图片全部命名完成;将每个.bin文件图片按照.bin文件本身的名字命名;

第三步、建立.bin文件库:

利用visualc++软件对.bin文件进行统一存放,具体过程为:在visualc++软件安装过程中,安装向导会弹出指定工作空间的选项,需要使用者自己指定一个文件夹作为以后存储程序文件的工作空间,自己新建文件夹,命名visualspace,则指定工作空间为visualspace即可,将每次编译完成的.bin文件统一存入到.bin文件库中,随着每次编译.c文件,.bin文件库都会更新;

第四步、更新索引图片库:

采集.bin文件库中新加入的.bin文件的图像信息,形成新的.bin文件图片,将新的.bin文件图片信息存入索引图片库中,每当.bin文件库中有新的文件存入,都需要采集新的.bin文件的图像数据,然后存入索引图片库,完成更新索引图片库;

第五步、建立索引路径:

每个.bin文件都有不同的索引路径,根据.bin文件的名字与索引图片库内.bin文件图片的名字建立.bin文件与索引图片库之间的索引路径,索引路径的建立过程对visualc++软件和jlink软件的操作相对固定,固定为软件索引路径;在visualc++编译完成后,visualc++输出结果的窗口会出现当前编译完成的.c文件的名字,通过python截取visualc++命令窗口图片,截取方式为利用python第三方库pyautogui库进行截图,再通过python获取图片上的文字,获取文字方式为利用python第三方库pytesseract库将图片中的文字转换为文字串,该文字串包括了当前想要编译的.c文件名字,这样就获取到了.c文件的名字,保留.c文件的名字,将后缀改为.bin,即得到.bin文件的名字,进而建立起.bin文件与索引图片库之间的索引路径,整个索引路径也随之建立;

第六步、封装编译下载键:

将上述第一步-第五步所涉及的程序进行封装,依靠python在电脑端创建图形化界面,导入python第三方库easygui库,导入easygui库后,增加程序g.msgbox(),这样就完成了封装编译下载键。

与现有技术相比,本发明的有益效果是:

1.本发明提出一种在windows系统的下的contiki系统开发板的程序一键编译下载方法,目前而言,基于contiki开发系统的开发板都是在乌班图操作系统下进行开发,使用终端命令行进行编译下载,十分不便且极其繁琐,在windows下使用鼠标操作简便,极大的降低了开发人员在编程以外的工作难度。

2.本发明以python的第三方库pyautogui库为核心,使用visualc++进行编译,使用jlink进行下载,使用pyautogui库实现对鼠标键盘的模拟操作,代替人工点击,实现一键编译下载,开发人员只专注于开发,而非其他,极大地提高了开发效率。

本方法利用python自动化测试框架,实现开发程序的自动编译下载,首先利用python第三方自动化测试库pyautogui库,模拟电脑鼠标键盘操作,代替人工操作,将开发人员从繁琐的编译下载过程中解放出来,使开发人员可以将更多的精力放在代码的开发上。其次利用python第三方库pytesseract库,实现对开发人员正在修改的代码进行识别,确定目标文件(将要编译下载的文件)。最后利用python第三方库easygui库对第一步到第五步中所涉及的程序进行封装,封装成为编译下载键。开发人员只需要点击编译下载键就可以实现对文件的编译下载。因此此方法对开发contiki系统的开发人员来说,是极其便利的,一键式的操作,对开发效率的提升也是无可估量的。

附图说明

图1是现有的contiki系统开发板下载程序的流程图。

图2是本发明基于contiki系统的开发板程序编译下载方法的流程图。

图3编译下载键图形界面。

具体实施方式

下面结合实施例及附图进一步解释本发明,但并不以此作为对本申请保护范围的限定。

本发明基于contiki系统的开发板程序编译下载方法(简称下载方法,参见图2)利用python自动化测试框架解决contiki系统开发板在乌班图系统下下载繁琐的问题,利用pyautogui库(pyautogui是python的第三方库),使用python模拟鼠标操作,完成对visualc++软件和jlink软件操作,实现一键编译下载;具体步骤如下:

第一步、采集图像数据:

使用pyautogui库进行模拟键盘操作,定位机制是像素对比,对需要用到的操作键进行图像采集,进行图像采集时分成两个部分,第一部分为公共路径采集,采集与visualc++软件和jlink软件相关的图片,所谓相关的图片是指编译下载过程中需要对上述两个软件操作,采集操作过程中用到的按钮的图片,采集手段为qq截图,该图片为通用图片,visualc++执行编译,截取编译过程中需要用到的按钮图片,即将visualc++编译过程中点击的按钮都截图采集;jlink软件进行下载,将jlink下载过程中用到的按钮截图保存;第二部分采集.bin文件的图片,.bin文件是要下载到开发板中的文件,采集手段为qq截图,截取.bin文件图片。

第二步、建立索引图片库:

将第一步采集到的所有图片进行存储,存储到同一个文件夹下,命名为索引图片库;每个通用图片依据visualc++软件和jlink软件编译下载的步骤进行命名,visualc++编译的步骤是固定的,jlink下载的步骤也是固定的,依据这些步骤顺序以及属于visualc++还是属于jlink来命名,命名格式为“编号-用途”,如visualc++第一个步骤的图片就命名为“1-v”,其中v代表visualc++,1代表第一步,而jlink第一个步骤的图片命名为“1-j”其中j代表jlink,1代表jlink下载的第一个步骤,根据这种命名规则将所有通用图片全部命名完成;将每个.bin文件图片按照.bin文件本身的名字命名。

第三步、建立.bin文件库:

.bin文件是需要下载到开发板中的文件,如果不统一存放,会对索引.bin文件造成极大的不方便,因此需要对visualc++软件进行设置。利用visualc++软件对.bin文件进行统一存放,具体过程为:在visualc++软件安装过程中,安装向导会弹出指定工作空间的选项,需要使用者自己指定一个文件夹作为以后存储程序文件的工作空间,自己新建文件夹,命名visualspace,则指定工作空间为visualspace即可,将每次编译完成的.bin文件统一存入到.bin文件库中,随着每次编译.c文件,.bin文件库都会更新。

第四步、更新索引图片库:

采集.bin文件库中新加入的.bin文件的图像信息,形成新的.bin文件图片,将新的.bin文件图片信息存入索引图片库中,每当.bin文件库中有新的文件存入,都需要采集新的.bin文件的图像数据,然后存入索引图片库,完成更新索引图片库。

第五步、建立索引路径:

每个.bin文件都有不同的索引路径,根据.bin文件的名字与索引图片库内.bin文件图片的名字建立.bin文件与索引图片库之间的索引路径,索引路径的建立过程对visualc++软件和jlink软件的操作相对固定,固定为软件索引路径,以后不用修改,而要编译的bin文件不是固定的,因此确定了想要下载的.bin文件就可以完成索引路径的建立。在visualc++编译完成后,visualc++输出结果的窗口会出现当前编译完成的.c文件的名字,通过python截取visualc++命令窗口图片,截取方式为利用python第三方库pyautogui库进行截图,再通过python获取图片上的文字,获取文字方式为利用python第三方库pytesseract库将图片中的文字转换为文字串,该文字串包括了当前想要编译的.c文件名字,这样就获取到了.c文件的名字,由于.c文件与.bin文件只是名字的后缀不同,因此得到了.c文件的名字,保留.c文件的名字,将后缀改为.bin,即得到.bin文件的名字,进而建立起.bin文件与索引图片库之间的索引路径,整个索引路径也随之建立。

第六步、封装编译下载键:

将上述第一步-第五步所涉及的程序进行封装,依靠python在电脑端创建图形化界面,python实现图形化界面的第三方库为easygui库,因此需要导入python第三方库easygui库,导入easygui库后,增加程序g.msgbox('areyouready?',ok_button='编译下载'),上述用到的函数g.msgbox()为easygui库中的函数,这样就完成了封装编译下载键,封装后界面如图3所示,即在电脑端创建一个类似于qq的软件,但打开软件后只有编译下载键,按编译下载键就可以运行自动化编译下载的python程序,实现一键编译下载,这就是封装编译下载键。

本申请中python有多个框架可以用于自动化测试方面,pywinauto框架是基于python开发的,用于自动化测试的脚本模块,主要操作于windows标准图形界面。它可以允许使用者很容易的发送鼠标、键盘动作给windows的对话框和控件。其中,最主要功能为对windows标准控件的一系列动作可编程处理,包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。程序的开始为对所需应用的启动或连接。获得程序连接后,pywinauto通过窗口的名称、类名、是否可见等属性寻找匹配的窗口,进而通过类似方法寻找用户所需的控件,并获得相应的句柄。之后,用户可通过易理解的编程方式对指定控件进行相关操作的编程,包括鼠标点击、键盘输入、判断控件间关系、获取控件属性等。

本申请将contiki系统成功应用在windows系统中,使其开发板的程序编译下载成为可能,在windows系统下引入contiki系统,具有以下特点:

(1)完全釆用c语言进行编程。contiki系统完全用c语言写成,在编程应用时候也全部利用c语言,简单、易学,开发周期短。

(2)免费开源。contiki操作系统是在开源授权协议下发布的,这代表着用户可以随意把代码用在科学研究、教育、商业中来,并且可以随意修改代码,并发布属于自己的contiki代码。虽然开源免费,但并不代表着就是性能低下的contiki系统,相反因为他的高度开源使得其开发十分之快。更重要的是contiki系统的作者参与互联网标准的制定,并且除了操作系统之外还设计了lwip、protothred等完全开源的软件。

(3)方便移植。contiki系统在设计的时候没有采用任何的硬件功能,这使得其支持更多的芯片。

(4)功耗较低。不同于传统网络中的而网络节点,传感器网络中的众多网络节点,通常是部署在野外,自身携带的电源根本无法供其长时间使用。contiki操作系统在设计开始就充分考虑了网络节点的低功耗特性。不仅如此,contiki系统在不需要额外硬件的前提下就能监测到每个节点功耗多少,并进行能量分析,用来评价传感网的路由协议是否高效。

(5)网络交互。contiki系统支持多种平台的客户端,网络可以用web和命令行进行接口的控制和相关数据信息的存储。在命令行下,交互界面通过shell,进入shell的界面就像linux命令行一样简单易用。

(6)具有文件系统,具有仿真系统,通过时间驱动多任务,完全实现低功耗的协议栈。实施例1

本实施例基于contiki系统的开发板程序编译下载方法,以下载cetic-6lbr.bin(就是个文件的名字,没有特别含义)文件过程为例,具体过程是:

第一步:采集visualc++软件与jlink软件编译和下载过程中需要点击按钮的所有图片,并将采集的所有图片存在相同的文件夹下,采集手段为qq截图;然后采集cetic-6lbr.bin文件图片,采集手段为截图,同样存在刚才的文件夹下。

第二步:将第一步中存储图片的文件夹名字命名为索引图片库,由于编译和下载是有固定顺序的,即先按哪个键后按哪个键是固定的,因此采用“编号-用途”格式命名,采集到visualc++的图片命名为“1-v”,“2-v”,“3-v”,“4-v”,“5-v”,“6-v”,其中v代表visualc++,表明其用途为visaulc++编译,其中数字最大为6表示编译步骤需要点击6个按键。采集到jlink的图片命名为“1-j”,“2-j”,“3-j”,“4-j”,“5-j”,“6-j”,“7-j”,“8-j”,“9-j”,其中j代表jlink,表明其用途为jlink下载,其中数字最大为9表示下载步骤需要点击9个按键。采集到的cetic-6lbr.bin文件图片命名为“cetic-6lbr.bin”。

第三步:找到visualspae文件夹,这个文件夹是安装visualc++过程中由安装向导提示,自己指定的,命名为visualspace,用于存放编译后的.bin文件,因此visualspace就是.bin文件库,因此编译后,此次下载的cetic-6lbr.bin,就在visualspace文件夹下。

第四步:更新索引图片库,但由于本次只下载cetic-6lbr.bin文件,并不会下载其他文件,因此不用进行更新,如果下载其他文件,如a.bin,在更新索引图片库时就是要找到a.bin文件,采集该文件的图像,即用qq截图截取,然后将截图保存到索引图片库中,图片命名为

a.bin,完成更新索引图片库。

第五步:将“1-v”,“2-v”,“3-v”,“4-v”,“5-v”,“6-v”,“1-j”,“2-j”,“3-j”,“4-j”,“5-j”,“6-j”,“7-j”,“8-j”,“9-j”“cetic-6lbr.bin”,写入test.py程序中对应的位置,即可实现对这些图片的索引,程序会根据这些图片在电脑上找到对应的位置进行点击,比如“1-v”对应visualc++软件,电脑就会根据“1-v”,找到visualc++,点击visualc++在电脑上的图标从而打开visualc++。因此这些图片就代表所要点击的按钮,电脑依据这些图片依次点击,就会完成程序的下载,而使用者只需点击一次运行test.py即可。

第六步:python可以创建图形化界面,打开软件后点击编译下载键,运行自动化编译下载的python程序,实现一键编译下载。

本专利适用于以contiki操作系统为嵌入式系统的开发板,用于进行6lowpan网络的开发,适用场景为开发以contiki系统为开发系统的6lowpan网络开发板编译下载程序,电脑操作系统为windows,本申请中索引图片库的规模并不算大,规模大小受.bin文件库的影响,因此非常轻便,易于使用,只要将索引图片库,.bin文件库,以及索引路径建立,就可以实现编译下载的自动化。

本发明未述及之处适用于现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1