当前位置: 首页 > 工具软件 > tIDE > 使用案例 >

第三章、TIDE

文增
2023-12-01

针对TIBBO提供的整合开发工具TIDE(Tibbo Integrated DevelopmentEnvironment)进行介绍,教导读者如何操作TIDE平台,内容包含TIDE开发环境介绍、功能介绍、相关使用注意事项,例如如何建立项目、执行项目与除错方法等等,让读者可以对最重要的开发环境具备有基本的操作能力。

TIDE(Tibbo Integrated Development Environment)是Tibbo提供的整合式程序开发平台,与市面上常见的IDE平台具备相同主要功能,包括建立项目、撰写程序、执行程序、除错等功能,但因为TIDE的程序需要搭配硬件模块执行,所以会有链接Target、程序上下传到Platform、运行方式与Firmware的更新方法等专属的功能。TIDE内使用的程序语言称为Tibbo Basic,虽然名称内有Basic,但又不是全部沿用Basic的语法,当中很多c/c++的架构与影子,实质上可以说是两者的合体,关于Tibbo Basic我们将在第四章中说明。

要操作本章后面说明的环境或工具,您需要先做些准备,当然安装是免不了的,这个我们已经在第二章一开始做过说明与介绍,如果您有任何疑问,建议您先回去阅读第二章中关于TIDE一节的说明。

一、TIDE开发环境

顺利安装完TIDE后,以Windows10系统为例,您可以在「开始 > Tibbo > Tibbo IDE」中找到 「Tibbo IDE」,点选「Tibbo IDE」就可以启动TIDE开发平台。

启动后的主画面从上至下可以分成四大区,分别是(1)功能选项区、(2)功能快选区、(3)主程序编辑区、(4)讯息区,是一个非常标准的Windows操作接口。您可以在功能选项区与功能快选区找到TIDE提供的所有功能,在主程序编辑区编写您的程序与监看错误讯息,讯息区则是提供程序编写与执行过程中必要的讯息。

在第二章中我们已经说明过如何使用TIDE开启并执行一个已经存在的范例程序LED_blinker;所以,这里我们将从建立新程序开始进行说明。虽然口语上都习惯称一支程序,但是在TIDE内的正式称呼是项目(Project),因为里面包含主程序、资源文件、对象等等,所以远比程序范围来的广,所以后面我们将用「项目」此一名词来代替「程序」一词。「功能选项区」包含File、Edit、View、build、Debug、Tools、Window与Help等八大项功能,各自集合之功能说明如下:
1、File:所有项目相关档案的操作,包括开关项目(New Project、Open Project、close Files、Close Project)、设置项目(project Files、project settings)、保存文件(Save main.tbs、save all)、TIDE Preferences(TIDE界面偏好设置)、页面设置(page setup)、打印(Print)已开启过文件列表与离开TIDE(Exit)等都属于File的功能。

2、Edit:所有项目内程序编辑相关的操作,包括剪下(Cut)、复制(Copy)、粘贴(Paste)、回复(Undo、Redo)、选择(Select All)、寻找(Find…)与取代(Replace)、注释、取消注释(comment/uncomment)、切换标记 (toggle bookmark)、去某一行(go to line)、自动完成窗口(Auto-complete list)等都属于Edit的功能。

3、View:TIDE环境内所有窗口的显示与关闭相关的操作,包括快速选单(Project Toolbar)、除错工具(Debug Toolbar)、搜索工具(search toolbar)、讯息列(Status Bar)、对象资源区(Files)、浏览器项目(browser-project)、浏览器文件(browser-file)、编译讯息区(Output)、局域变量(locals)、监看式窗(Watch)与等都属于View的功能。

4、build:TIDE环境内所有项目相关的操作,建置项目(Build、Rebuild All)与建置与执行项目(Build and Upload)、全部重建并上传(rebuild all and upload)都属于Build的功能。

5、Debug:TIDE环境内所有项目执行与除错相关的操作,包括搜寻/管理硬件(Select/Manage Target)、开始tibbo项目管理系统模拟器(Start TIOS Simulator)、重新执行程序(Restart)、执行程序(Run)、暂停程序执行(Pause)、逐步追踪除错(Step…)、断点(Toggle Breakpoint、Remove Al Breakpoints)与加入监看(Add to Watch List)等都属于Debug的功能。

6、Window:TIDE环境内所有执行窗口相关的操作,包括关闭(Close All、Close All But This)都属于Window的功能

7、Help:TIDE环境所有相关的在线协助操作,包括说明书(manual)、上下文相关帮助(Context-Sensitive Help)、线上支持(Online Support)、版本更新记录(what’s new)、检查更新(Check For Updates)与关于TIDE(About TIDE)等都属于Help的功能。

建立新项目的第一个步骤是从「功能选项区」选择「File > New Project」,接着您需要设定Platform、源库设置(Source library set)、选择项目类型(Available project type)、设定项目名称(Project Name)、项目储存位置(Location)与硬件模块(Target address)等几项必要参数,其中Platform与您未来要执行的硬件模块内的Firmware型态有关,项目类型则请选择「1-EmptyProject」,建立一个全新的项目,至于项目名称与储存位置则请您自定义。建议您储存位置最好不要放在桌面上,或是路径中有空白与中文字,以免执行上会出现不可预期的错误。

接着要选择硬件模块(Target address),这个不一定要在这设定,因为如果暂时没有硬件,这部分可以先跳过。如果您已经有硬件模块,同时也已经透过网络与计算机进行链接,那我们可以选择Target address旁的「Select按钮」这个窗口其实就是「Device Explorer」再从Device Explorer中列出的硬件选择一个未来项目要执行的硬件,最后选择Device Explorer窗口上的「Select按钮」就可以。Target address会出现硬件的MAC address,最后请点选「OK按钮」。

此时,TIDE的主程序编辑区将出现三个区块,分别是物件资源区、程序编写区与编译讯息区。Tibbo将硬件模块上的硬件都加以对象化,例如一个按钮对应到button对象,LED灯号称为pat,但请记得这个因为是跟硬件有关,所以每次的画面可能都不同,要看您选择的Platform而定,Tibbo将其称为Platform Objects。TIDE也采用事件驱动设计方式,也就是按钮被按下去是一个事件,程序内对应有处理的程序代码事件区,Tibbo将其称为Platform Events;最后一部分是系统提供可呼叫的函式与功能,称之为Platform Syscalls。

至此,新项目已经建立完成,让我们看看全新项目一开始有哪些档案,其中tpr档案是整个项目的起始点,也就是下次要再开启项目时,可以透过这个档案,这里Tibbo会用第一个步骤的项目名称当作文件名,例如这里的aaaaaa.tpr,另外会有一个默认的程序,称为main.tbs(Tibbo Basic Source File),也是所有程序执行的起始点,这点跟c/c++的程序结构相同,一定要有main的存在;最后则是global.tbh(Tibbo Basic Header File),里面放置了项目需要的资源与变量等设定,这也与c/c++的程序结构相同,使用时也是用include,程序编辑区上面的第一行就是「include“global.tbh”」。后面随着程序功能的扩充,您将会有越来越多的.tbh与.tbs档案,而.tpr档案将永远只有一个。

二、设定硬件

了解TIDE的基本操作以后,本节我们将以EM510这个硬件模块为例),一步步带领您使用TIDE开发出相关的应用程序,请记得这样的操作流程也适用于其他Tibbo的硬件模块,只是此处我们用的是EM510,一个相对其他硬件模块较为简易的设备。

我们用Device Explorer重新扫描一次,您将会发现EM510出现在画面上,大部分的Device Server设备都可以透过上述步骤变成可程序化设备,实际操作就留给读者自行进行。

三、开启新专案

有了未来程序对应执行的设备,请依照本章第一节介绍方式,建立一个新项目,并命名为 「Hello World」,并选择「EM510W - EM510 Module」这个Platform。接着选择「Target」,新项目需要的全部设定完成后。

四、撰写程序

现在,可以开始针对EM510模块撰写程序了,为何这样说呢?记得吗?因为选择的Platfirm不同,代表给予的对象与事件支持不同,这点可以从TIDE画面上「对象资源区」的变化看出来。
我们将撰写一个简单的程序,控制EM510设备上的红色与绿色LED依照设定的样式(pattern)进行亮灭的程序,使用上用户需要按下EM510上的SETUP按钮后,就可以启动LED明灭样式程序,结束后将再重新连续执行一次,直到被手动终止。

Tibbo Basic程序规定,整个程序是采取对象与事件驱动方式设计,整个项目是由main.tbs程序开始执行,而main.tbs程序内则是由on_sys_init事件为起始执行点,整个项目执行结束则是会触发on_pat()事件,这个基本的规定,与大部分对象与事件驱动开发程序相同,有这类开发经验的人一定很熟悉,若是第一次接触,请大家一定要将此规则谨记于心。

TIDE也支持「程序代码自动完成」之功能,当您写了程序开头,后续该写的程序代码或事件,TIDE将可以自动提醒或提供选择,做到自动完成的目的。本章的程序代码与更详细Tibbo Basic语法与结构将于第四章中介绍,这里大家只需要记得大架构与如何透过TIDE输入与执行程序即可。

首先,在main.tbs中定义需要的变量,程序代码则是如下方框所示。

'定义需要的变量
Dim hello_world As String   
'定义目前已经执行程序大小与执行起始位置
Dim length, play_position As Integer
'定议程序执行区块大小
Const PAT_PLAY_CHUNK_LENGTH = 15 
'定义子程序play_Next
Declare Sub play_Next 

接着,在程序开始执行事件on_sys_init()中撰写程序,TIDE内特定Platform的所有事件可以在「对象资源区」窗口中的「Platform Events」取得。这里我们需要on_sys_init(),所以请展开「对象资源区」视窗中的「Platform Events」,并快速点选on_sys_init()两下,就可以看到on_sys_init()事件区块程序代码出现在main.tbs中;或是您可以将鼠标移到 on_sys_init()上,TIDE将出现与其相关的简要说明(hint)。

您将可以发现,每个事件区块都是以「sub事件名称」为起始,以「end sub」为结束,当中就是属于这个事件的程序代码区块。

现在,可以在on_sys_init()事件中撰写需要的程序代码,也就是控制红色与绿色LED明灭的程序。我们用hello_world这个变量定义明灭的样式(pattern),样式说明如下:

R:亮红灯
G:亮绿灯
-:全灭

透过length变量取得整个样式的长度,做为未来连续播放的循环依据,用play_position变量定义样式执行的位置,整个on_sys_init()事件程序代码如下所示。

sub on_sys_init()
'TODO: place “on_sys_init” event handler code here...
hello_world = 
        "R-R-R-R---R---R-GGG-R-R---R-GGG-R-R---GGG-GGG-GGG" 
        +"-------" +"R-GGG-GGG---GGG-GGG-GGG---R-GGG-R---R-GGG-R-R---GGG-R-R" 
        +"-------" +"R-R-GGG-GGG-R-R-"
    length = len(hello_world) 
        play_position = 1 
end sub

顺带一提,TIDE也支持「实时指令显示」功能,当您输入既有的函数,TIDE会贴心的提醒您需要的后续参数个数与参数型态等必要的程序代码,简化开发者需要背诵与记忆的数据量。为了达成使用上使用者需要按下EM510上的SETUP按钮后,才可以启动LED明灭样式程序,结束后将再重新连续执行一次,直到被手动终止的目的。我们需要on_button_pressed()事件来启动 LED明灭样式程序,需要on_pat()事件重新连续执行这个程序。

首先说明on_button_pressed()事件,是当使用者按下EM510设备上的SETUP按钮后会触发的事件,因此我们将执行hello_world样式的程序撰写于此事件区块中,如下所示:

sub on_button_pressed()
'TODO: place “on_button_pressed” event handler code here...
    play_position = 1 'start playing from the beginning of the pattern
play_next 'call the routine which plays the next chunk (the first chunk,in this case)
end sub

这里我们定义了一个副程序,名为play_next,用来决定要播放hello_world样式中的第几个位置样式,直到最后结束,而实际执行明灭样式的指令则是pat.play,play_next副程序指令如下:(源码复制到tide可执行)

sub play_next  
        'plays the next chunk of our large pattern. if we have reached the end of the pattern, stop.
if length < play_position then exit sub 
        'internal integer for the length of current chunk to be played.
dim chunk_len as integer  
        'calculate how much of the large string is left.
chunk_len = length - play_position + 1 
        'if too much is left, we bite off only a chunk we can process.
    if chunk_len > PAT_PLAY_CHUNK_LENGTH then chunk_len =PAT_PLAY_CHUNK_LENGTH
    dim chunk as string   
        'will contain the chunk which will actually play now. chunk is the part of hello_world 
        'which begins at play_position and is as long as chunk_len.
    chunk = mid(hello_world, play_position, chunk_len) 
        'Play this chunk. YES means the pattern may be interrupted -- 
'you can press the button while the pattern is playing, and it will start again from the top.
    pat.play(chunk, YES)
    play_position = play_position + chunk_len   
        'advance play_position to account for the chunk we played.
end sub
最后,当整个明灭样式完成后,我们希望可以继续连续执行,所以我们使用on_pat()事件,也就是在项目整个执行一次后,会自动触发的事件,在on_pat()事件重新呼叫play_next,就可以连续明灭程序,如下所示:
sub on_pat()
'TODO: place “on_pat” event handler code here...
    play_next  'call the routine which plays the next chunk
end sub

全部完成后的程序代码画面如上所示,接着就可以准备把程序编译后下载到EM510内执行。

五、建置、上传与执行

完成程序编辑后,就可以将程序编译并下载到Target上执行,您可以透过「Debug/Run」或是快选按钮编译与执行程序,将同时完成建置、上传与执行三个动作。编译结果将出现在灰色窗口中,如果有错误程序将停止编译与后续的执行作业。若程序编译成功并顺利下载到Target上执行时,,讯息列上出现绿底白字的RUN讯息。

这时候,我们可以再回到项目的实际目录做观察,一开始建立项目后的目录内只有三个档案。但经过编译与执行后会多了「tmp目录」与「Hello World.tpc」(Pcode File),Pcode就是可以被Tibbo Platform执行的可执行文件。

如果程序没有修改,下次要把程序下载到同样Platform上执行时,可以直接使用这个Pcode。利用Device Explorer的「Load Application Through the Network」功能将 Pcode下载到Target上执行,直行前请先选择Target;,择上述编译后的「Hello World.tpc」后,Device Explorer将开始将程序下载到选定的Target上执行。

最后,我们要透过硬件模块EM510验证程序,当我们按下EM510上的RESET键后,可以看到EM510上的红绿LED以设定的样式进行连续明灭,至此整个程序开发流程就算是完成。试试看将网络线从EM510移除,EM510将可以单独执行上述程序,就算将其电源移除后再复归,程序仍可以顺利执行,这才称为嵌入式系统,不是吗?

 类似资料: