Tibbo technology - the Home of Advanced Serial Device Servers
Serial Device Servers
Site search    Login help

Login: 

Password: 

Home Products Downloads Support Order Register Contacts Jobs

Taiko Home - The main page

White Paper - All about Taiko

Tibbo BASIC - About the language

TiOS - Tibbo Operating System

TIDE - Tibbo Integrated Development Environment

Upload Procedure - Animated tutorial

Your First Project - Animated tutorial

Resources - Demo files and projects

Taiko Downloads - Get the files!

Taiko Docs - Technical Documentation

Taiko Code Tips - Tips on TBASIC programming


11 MARCH 2008
New TIDE and TiOS version released with new features (LCD, Wi-Fi, etc.)

This new release of TIDE and TiOS files includes many improvement to the stability and extended many new features. New features include Wi-Fi, LCD, keypad, IO interrupt, IO ports, flash disk, improved HEX editor, etc. We have also updated the documents to reflect the recent additions. There's a new demo on how to setup Wi-Fi available for download in our resource page.
More info...


05 OCTOBER 2007
New TIDE and TiOS version released

This release fixed bugs concerning TIDE stability, the syscall "instr", and HTML.
More info...


04 SEPTEMBER 2007
New TIDE version released

This TIDE release features all-new Project Browser and Parser. New Parser is much faster, and also understands local declarations and variables. Additionally, the tooltips (for variables, procedures, etc.) now allow HTML formatting.

The update also includes new TiOS firmware files for our hardware.
More info...


Taiko Whitepaper

On January 02 2006 Tibbo Technology announced availability of its new solution called "Taiko". This white paper examines, in the form of questions and answers, the significance of this new product line for Tibbo and its customers.

In a nutshell, what is Taiko?

Taiko = programmability -- in BASIC! It is a combination of PC software, an embedded OS (called TiOS), and Tibbo hardware that allows you to create a program in BASIC and then run it on select Tibbo external devices and embedded modules.

How is this different from existing Tibbo products?

The original line of Tibbo devices, such as the DS100 or EM100 offered specific functionality -- seamless data routing between the network (Ethernet) and serial (RS232, 422, 485) "sides" of the device. Some people call this kind of product "serial-to-network converters", and some people call them "serial device servers". No matter how you call them, our products were designed for TAIKO ALLOWS YOU TO MAKE OUR DEVICES WORK EXACTLY HOW YOU NEED THEM TO.transparently connecting any serial device to the network.

The new Taiko is much more than this. Instead of just sending the data from the serial side to the net and vice versa, Taiko allows you to make our devices work exactly how you need them to -- put intelligence and logic required by your project right into our device.

And why is this useful? Why do you need to change the way Tibbo products work?

When you are building a product or a system you always face the need to add some custom functions. Adapting your serial device to network communication sometimes requires more than just converting serial data into "TCP/IP". What if, for instance, you want to be able to configure or monitor your machine through a web-based interface? A simple "serial device server" won't allow you to implement this functionality. But with Taiko, you will be able to write a simple BASIC program that does just that.

OUR DEVICES ARE NO LONGER CONFINED TO BEING JUST NETWORK INTERFACES...More importantly, with new BASIC programmability our devices are not longer confined to being just "network interfaces". In fact, in many cases a Taiko device, such as an embedded module, can be used as a central building block of your system, eliminating the need for another "main" CPU.

So, basically, you are offering some kind of programmable embedded solution!

This is exactly right! We do not call our Taiko devices "serial device servers" because this wouldn't do them justice. Calling them "programmable controllers" would be more appropriate.

But isn't this a step back? Haven't you positioned your original products as a no-programming-needed alternative to the hard labor of changing or writing embedded firmware?

Taiko is a step forward, not back! What it does, it adds flexibility, but it is your choice whether you want to use it or not.

Our programmable devices will be supplied with a "default" application -- written in BASIC -- which implements the exact functionality of our "fixed" network-to-serial devices. This way, if you just want a simple converter, you don't have to write any code. At the same time, the moment you want to change or add something, you will have all the tools to easily -- and I stress the word "easily" -- do this.

This is somewhat similar to using Microsoft Word. When you are content with the pre-packaged functionality of Word, you don't have to explore its in-built macro abilities. A lot of users, though, discover that they can customize their text processor in many ways, through a built-in programming language!

Well, one still might argue that a well-designed product contains all the options you'll ever need.

Really? Have you tried? No matter how many user-selectable options you provide, there are always requests for more! This is not surprising, as all systems and projects are different... NO MATTER HOW MANY USER-SELECTABLE OPTIONS YOU PROVIDE, THERE ARE ALWAYS REQUESTS FOR MORE! no matter how hard you try to provide all options you can't cover everything, plus you end up with a product which has so many adjustable settings that many users can't figure out how to setup your device correctly.

In this regard, being able to quickly write a simple BASIC program that is tailored to a particular application or Customer may be a much more elegant solution.

OK, OK. Let's look at this from another angle. Offering embedded programmability means pitting yourself against a large number of incumbent embedded software vendors. There are literally hundreds, if not thousands, of embedded solutions. How do you expect to beat this competition?

Yes, at first glance, the embedded programming industry appears to be a very competitive market. You have microcontroller and CPU manufacturers that also offer development tools, independent software vendors supplying sophisticated operating systems, compilers, etc. At the same time, we can argue, that with all this abundance, there is something missing!

And what would that be?

We observe a notable absence of easy-to-use systems and tools. Just think about what it takes to start developing an embedded system. Typically, you need a knowledge of C, better with some understanding of assembler-level programming. You need tools -- a compiler, a linker, etc. Most of the time you need an In-Circuit Emulator (ICE) for debugging. On top of this you need to spend time understanding libraries that vendor supplied. All this costs you money, sometimes lots of it, but more importantly, it takes a lot of time. You could easily log several months of work before you even start working on an actual project.

JUST GET ONE OF OUR DEVICES, INSTALL OUR PC SOFTWARE, AND YOU CAN START CREATING YOUR SOFTWARE.Now, with Tibbo, it is completely different. Just get one of our devices, install our PC software called Tibbo Integrated Development Environment (TIDE) and you can start creating your software. Write your program in BASIC -- which is, incidentally, a very popular and well-understood language -- and debug it right from TIDE. You don't need to buy an expensive ICE machine -- just get one of our devices! The debugging process is seamless, and is one of our strongest points, in my view. You totally forget that the program you are debugging actually runs on a Tibbo device, not your PC!

Yes, speaking of BASIC -- why did you choose this? Isn't BASIC a bit "amateur"?

...PUT THE ABILITY TO CREATE OR CUSTOMIZE EMBEDDED SYSTEMS INTO THE HANDS OF AS MANY PEOPLE AS POSSIBLE.We don't look at BASIC this way. In fact, calling a programming language "amateur" is an arrogant point of view. Tibbo's goal is to put the ability to create or customize embedded systems into the hands of as many people as possible. In this we remain faithful to the general direction we have defined for ourselves from the moment Tibbo was founded. Our first-generation products were easy to install. Now, our Taiko products are easy to program!

And what is wrong with "amateur" anyway? I recall the days when programming for PCs was considered to be a domain of professionals. No mortal "word processor" user could dream of creating his or her own software. And then several companies -- Microsoft, Borland -- released a completely new kind of software development systems -- such as Visual Basic or Delphi. These were actually easy to understand and master. Suddenly, just about anybody could write a Windows program! We can argue that VB, Delphi, and similar systems democratized software development for PC! This is exactly what we are trying to achieve for the embedded market. Now, you, the designer, and your customers, systems integrators, and their customers, end users -- can all partake in this added flexibility!

System integrators? End users? You expect these to do some "easy" programming too???

Let me tell you -- this is not as far fetched as it sounds! Take any professional industry segment... say, security systems, as an example. Supposing, you supply an access control panel. Typically, you sell to a Systems House, or System Integrator which add their software to complete your solution. The Integrator, in turn, will sell to Installers who do actual system installation. Finally, there is an end user who buys the system.

Now, what makes access control a good example is the fact that no two access control installations are ever alike. Customers always want customization. In most cases, this is done by adjusting myriads of configurable options (we talked about this already), but still doesn't add up to a 100% fit. Yes, customers accept this, but only because there is, for the most part, no other choice.

Tibbo BASIC and Taiko provide you with the way out. YOU CAN CREATE A WHOLE NEW MICRO-ECONOMY AROUND CUSTOMIZATION OF YOUR PRODUCT!Create your system basing on one of our modules, write a "default" application in BASIC, and provide the source code to trusted parties. Let the Systems House guys add some bells and whistles. Give value added resellers a chance to implement their ideas within your system (rather then think quietly about building their own solution). This will create immense new marketing opportunities for you! In fact, you can create a whole new micro-economy around customization of your product! Large software vendors like SAP understand this and build programmability into their systems. Strangely, the embedded market largely hasn't figured this one out!

Here is another concern -- BASIC is considered to be a rather slow solution! Modern PCs have a lot of resources so even if you are writing your program in BASIC you get acceptable performance. Embedded systems are different -- they need to be agile, use up minimum resources. How do you address this issue?

True, a "classic" BASIC interpreter would not perform well in the embedded world. This is why we had to create our own "Tibbo BASIC". Yes, it is all ours -- we did not license any compiler from any third party (in fact, Tibbo always writes all of its firmware and software). Tibbo BASIC is specifically optimized to run on lightweight Tibbo devices and perform in an embedded environment.

Can you elaborate on this last statement? What makes your Tibbo BASIC different?

Several aspects. First of all, what we offer is a BASIC compiler. This means, your program is compiled into an "executable binary file" and then loaded into the Tibbo device for execution. Original BASICs were "interpreted" languages and this really slowed things down.

This said, I want to note that we do not compile your BASIC program into the "native code" of our device's CPU. Instead, we produce a "pseudo-code" (p-code) executed by the Virtual Machine (VM) that is a part of our embedded Operating System called TiOS.

This is getting heavy! What is a Virtual Machine?

Virtual Machine is a "simulated" processor. Just like a real hardware processor, it executes "machine code". The name comes from the fact that the execution is not handled by some sort of hardware, but, instead, is implemented as a software process.

And why is this important?

Being a part of the OS, the VM cannot take full control of the CPU and "overpower" the OS. Basically, your BASIC program is running in a sort of "sandbox" -- it can freely do things within certain limits but it cannot affect the operation of the system in general.

The main advantage of this is that even when your BASIC program is running astray, this won't cause any major disruptions in the system you will still be able to control it from TIDE, start and stop execution at will, set breakpoints, etc. This kind of "complete control" would be impossible had we not chosen to run your compiled BASIC application on the VM.

OK, I think I understand. What other features of Tibbo BASIC can you highlight?

...TAILORED TO FIT THE REQUIREMENTS OF EMBEDDED AND REAL-TIME SYSTEMS APPLICATIONS.We carefully tailored it to fit the requirements of embedded and real-time systems applications. First of all, our system is event-driven. This means that your program does not execute as a "single piece" from top to bottom but instead consists of chunks of code that are called in response to events registered by the device. For example, you push the button, this causes a "button pressed" event to be generated, and then a piece of BASIC program you have written for this event executes.

Windows programs work like this, right?

Yes, but "homegrown" firmware usually is not like that. If you want it this way, you need to spend a lot of time on firmware design, or use a rather heavy and difficult to master embedded OS. Taiko brings event-driven programming to you in an easy to understand and use way. And, the device it runs on is very "light"!

What else?

Second, we have addressed the requirements of the real-time market by making the system deterministic, timing-wise. IT GUARANTEES THAT EXTERNAL EVENTS WON'T BE MISSED.For example, for the "button" object we can guarantee, that pressing a button will be noticed within a certain number of milliseconds. It doesn't matter how busy the system is or how complicated your program is -- once the button is pressed for longer than X milliseconds, an event is generated. For real-time systems, this is a big deal! It guarantees that external events won't be missed.

Third, our system has been carefully designed to offer non-blocking operation. This means that for an operation that requires a lot of time, execution is completely asynchronous to the execution of your BASIC program. For example, supposing you system needs to establish a TCP connection with some other host on the network. You insert a certain "connect" statement into your program. Now, when TiOS gets to processing this statement, it takes note of what needs to happen, and then the execution of your BASIC program continues right away. Meanwhile, a separate process, fully independent of the VM, handles the actual connection establishment, which can take substantial time! Your BASIC program is not "blocked" while a connection is being established.

This is special?

YES! Even on Windows there are a lot of blocking operations. For example, when you try to send some data out of the COM port, your program will be paused until all the data you wish to send goes out. For real-time systems, this is simply unacceptable! On our system, when your program says "send", the execution continues even before the first byte leaves the serial port.

Fourth, and the last feature I want to explain is the separation of the language itself and the I/O. We call our Basic a "pure" language because it does not directly include any input/output functionality. In most languages, there is always some I/O mixed in. For example, in QBASIC for DOS you have a PRINT statement that outputs a string of text onto the screen. Our language does not include anything but logical and mathematical "facilities".

This is getting difficult again. How, then, do you work with serial ports or send and receive network data?

THERE IS A 'SER' OBJECT THAT IMPLEMENTS ALL SERIAL PORT FUNCTIONALITY.All, all I/O available on a particular hardware device is accessible through so-called objects. Again, readers with Windows programming experience will find this familiar. Objects have properties, methods, and events. For example, there is a "ser" object that implements all serial port (UART) functionality. This object has properties like "baud rate" or "parity mode", methods like "send data" and events such as "data arrival".

So, if objects are not part of the language, then where do they come from?

A collection of objects forms a "platform". A platform is basically a description of a particular hardware device, expressed through objects. For example, there is a platform for the EM202 Ethernet Module. When you choose to write a program for the EM202 you select "EM202 platform" in TIDE and then get a set of objects that relate to all hardware facilities of the EM202. And if you choose to write a program for a different device you only need to select another platform and get familiar with its objects -- the programming language stays exactly the same!

So, Tibbo is going to provide a platform for each programmable device it will release?

Correct. Keep in mind, though, that this doesn't mean that platforms will all be completely different. On the contrary, most objects will be "shared" between platforms! This way you will need to spend minimum time learning about all those new devices we have coming.

So, many new products are on the horizon?

Yes, we have quite a few new modules and external devices under development!

Can you tell a little bit about these new products?

Actually, it is not our policy to talk about the product until it is in stock and ready to be shipped. Instead of talking about a particular future model, I can elaborate on our general direction.

QUICKLY BUILD A SOPHISTICATED CONTROL, COMMUNICATIONS, OR DATA COLLECTION PRODUCT.In a very near future, you will be able to pick one of our new, high-performance modules and quickly build a sophisticated control, communications, or data collection product. The module will include everything -- networking, real-time clock, FLASH storage with file and database management system, plenty of I/O lines, serial ports, etc. You will then connect peripheral components you need, such as an LCD, a keypad, or a card reader. You will then launch TIDE, select an appropriate platform, and create your program -- fast! This is our vision -- to be the system of choice for rapid product development in the fields of industrial control, security, retail, factory floor automation, data collection, and the like.

Last question. What is Taiko?

A Japanese drum. It is used to open tournaments. This is our statement. We are ready to compete.

This was a chat with Mr. Dmitry Slepov, Managing Director and one of the founders of Tibbo Technology.


Copyright Tibbo Technology Inc. 2001 - 2007   Tel: 886-2-26925443   E-mail: info@tibbo.com