RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
3) Het RIOT bord. Wat is RIOT? RIOT (Remote Internet Operated Terminal) is een embedded processorbord met verschillende I/O poorten dat eenvoudig te programmeren is met de in het instituut beschikbare Borland Ccompiler en de freeware tools van de firma Beck. De beschikbare I/O omvat: seriële poorten, parallelle poorten, een I2C bus, 8 channel 10 bit A/D convertor, keyboard interface, alfanumerische LCD interface. Op deze manier is het voor een ‘embedded-systems’ ontwerper of student een relatief eenvoudige zaak om een installatie of product ‘web-enabled’ te maken. Hij kan zich nu concentreren op zijn eigenlijke toepassing zonder zich te moeten verdiepen in het ontwerpen van ‘web-protocollen’. Het RIOT bord bestaat uit twee functionele blokken: Dit wordt in figuur 3.1 aangegeven in het blokschema van het systeem. ●
Enerzijds is er op het RIOT bord een IPC@CHIP SC12 processor aanwezig die als ‘embedded webserver’ in staat is via het internet gegevens uit te wisselen met een gebruiker. Een webserver is een computer die bijvoorbeeld in staat is aan een gebruiker een HTML pagina door te geven aan een standaard webbrowser op je PC.
●
Anderzijds is er op het RIOT bord een bijkomende I/O (Input/Output) processor ‘IOsys’ aanwezig (een voorgeprogrammeerde AVR Atmega 128 microcontroller) die in staat is volledig zelfstandig een aantal taken uit te voeren zodat de webserver hiervan wordt ontlast.
Beide processoren kunnen gegevens met elkaar uitwisselen via een Dual Port geheugen. Dit is een geheugen-component waar zowel de I/O processor ‘IOsys’ als de Webserver gegevens kunnen achterlaten of ophalen. Op deze manier is het mogelijk een aantal parameters voor de I/O processor langs het netwerk in te stellen of een aantal meetwaarden en procesgegevens van de I/O processor door te geven aan een remote gebruiker. Zo zou een RIOT bord naar een gebruiker een email kunnen sturen met de gegevens van een status log-file, indien er zich een service situatie voordoet. Een drank automaat met een RIOT bord zou preventief een berichtje kunnen sturen als hij detecteert dat er een aantal dranken bijgevuld moeten worden. Of de gebruiker surft naar de website van de automaat en kan online de status van de dranken bekijken…
Versie 1.0
27
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
MGM/[dp] RIOT board
PBX IBM Compatible
Ethernet
Modem
Hub/Switch
RS232
RJ45 ethernet
Network trafo / Filter Impedance matching
RS232
Level translator
Level translator
RS232 Ethernet Controller + PHY
I2C unit
Serial port 0 & 1
I2C Real Time Clock +Xtal
I2C Bus SCL, SDATA
IPC@CHIP SC12 512 Kb RAM
512 Kb FLASH
Interrupt controller
Bus interface / Chip select unit
Extra Address bits
Address/ Data bus
80186 CPU
IPC@CHIP SC12
CS
INT
SMPS 7-35V input 5V out @ 1A
DUAL PORT SRAM 1Kb
* RTOS + File system on FLASH disk. * Command int. met: -AUTOEXEC.BAT -CHIP.INI * TCP/IP Stack * Http Webserver + CGI * FTP server * Telnet server * API's for user applications support - Hardware API - BIOS API - FOSSIL API (serial) - I2C API - DOS API - RTOS API - TCP/IP API - ETHERNET API - Webserver CGI API
INT
Address bits
CS Address/ Data bus
Clock 20 MHz
I2C bus
AVR Mega 103/128 (128Kb FLASH) USER PROGRAMMABLE I/O PROCESSOR (Intelligent I/O chip) SPI Isp
Progr. Tool
PORT B
PORT D
Digital programmable 8 bit I/O ports ( LCD port…)
PORT E
PORT F
Digital/Analog port 10 bit resolution
Figuur 3.1:Blokschema van het op het De Nayer instituut ontwikkelde RIOT bord Versie 1.0
28
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Onze experimenteer omgeving: het RIOT bord. Hieronder in figuur 3.2 wordt het RIOT bord weergegeven zoals het op het De Nayer Instituut gebruikt wordt, de belangrijkste onderdelen worden aangegeven System ext. SMPS 7-35V in serial port. 5V @1A out RS232 level
PG serial port.(com) RS232 level
IIC extention connector
Battery backup RTC
RJ45 Ethernet connector
Traffic / Link LED
IIC-RTC
Ethernet trafo/ filter PWR ON LED IPC@CHIP SC12 Beck
Power in/out connector
Manual Reset
Analog I/O connector Dual Port RAM AVR mega128 ISP connector
Selection jumperblock ISP/ Normal serial port TITLE
REVISIONS
RIOT Web-server DATE ORIGINAL
NO.
DATE
DESCRIPTION
V1.0 2/02
Original design
V1.1 12/02
New RJ45/ pull-up R
SCALE
02/2002 LATEST REVISION
12/2002
JOB NO.
IOsys
Programmable I/O ports of the AVR Mega103/128
CHECKED
I/O processor
This is the RIOT board, the Remote Internet Operated Terminal. A off the shelf and ready to use dual processor system, for industial and educational purposes. Its main goal is to “WEB enable” a user application or installation.
DRAWN
[dp]
[dp]
Figuur 3.2: Foto van het RIOT bord met component aanduiding.
Versie 1.0
29
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Getting started… Voedingsspanning. Om het RIOT systeem te kunnen gebruiken hebben we ook nog een DC bron nodig die een spanning aflevert tussen 7V en 35V, dit indien de on-board SMPS aanwezig is. De spanning wordt aangesloten op de PWR connector tussen de GND (massa) en de +VCC (+7Vtot +35V) klem zoals wordt aangegeven in figuur 3.3. De groene PWR LED moet nu oplichten. Indien dit niet het geval is kijk dan de polariteit na van de aangelegde spanning, en check of de SMPS aanwezig is op het bord. De overige klemmen GND en +5V kunnen gebruikt worden om een externe toepassing te voeden op +5V@200mA. +7V..+35V
Power supply +7V.. +35V @1A
On-board Switched Mode Power Supply (SMPS)
GND GND
+5V
Figuur 3.3: Aansluiting voedingsspanning 7-35V. Indien geen SMPS on-board aanwezig is moet men beschikken over een +5V spanningsbron die op de PWR connector wordt aangesloten tussen de GND (massa) en de +5V klem, let hierbij wel op !!! Figuur 3.4 geeft hierover enige duidelijkheid. Er is in dit geval geen beveiliging tegen overspanning en voor verkeerde polariteit van de +5V. De groene PWR LED moet nu oplichten.
GND
Power supply +5V @1A +5V
Figuur 3.4: Aansluiting voedingsspanning 5V.
Versie 1.0
30
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Communicatie via de seriële interface. De eenvoudigste manier om te communiceren met het RIOT bord is via de seriële interface PG (comm) op Headerconnector2 (H2). De verbindingskabel tussen een com poort op de PC en deze PG poort moet er uitzien zoals in figuur 3.5 wordt aangegeven. 10 PIN headerconnector
9 PIN SUB-D Female
5 3
1 GND 2 GND 3 RxD
2
4 TxD
8
5 /CTS
7
6 /RTS Flatcable Pin 7-10 no connection
Figuur 3.5: Seriële communicatiekabel voor PG poort. De verbinding tussen de beschikbare COM poort van de PC en RIOT kan nu worden gemaakt. Eerst moet echter een terminal emulatie programma worden opgestart en ingesteld. Hiervoor kan men de standaard windows terminal emulator “Hyperterminal” gebruiken. Dit programma kan men meestal vinden bij de “Bureau-accessoires” onder het item “Communicatie”. Wanneer men dit programma opstart moet men een naam opgeven en een pictogram kiezen zoals in figuur 3.6 .
Figuur 3.6: Communicatie met Hyperterminal.
Versie 1.0
31
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal .
Gebruikers handleiding v1.0 We geven hier bijvoorbeeld “RIOT TERMINAL” in als naam voor de verbinding, zie figuur 3.7 en we kiezen het eerste pictogram. Dit is het pictogram dat we later op het bureaublad kunnen plaatsen om Hyperterminal op te starten met de ingestelde parameters die bij deze verbinding horen.
Figuur 3.7: Ingeven van de verbindingsnaam We selecteren de poort die op onze PC ter beschikking staat om seriëel te communiceren met het RIOT bord. In het voorbeeld in figuur 3.8 wordt hiervoor COM1 geselecteerd. Op deze poort wordt ook onze verbindingskabel naar het RIOT bord aangesloten.
Figuur 3.8: Selectie van de beschikbare COM poort. Nu moeten nog de nodige communicatie parameters van de asynchrone communicatie worden ingesteld die compatibel zijn met deze van het RIOT bord. Het gaat hier om de Baud rate (19600 bits/sec), het aantal databits (8 databits), de pariteit (geen) en het aantal stopbits (1). Dit wordt aangegeven in figuur 3.10.
Versie 1.0
32
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Figuur 3.10: Ingave van de communicatie parameters. Daarna wordt Hyperterminal opgestart, en kan het RIOT systeem worden aangeschakeld. Indien de verbinding met het RIOT systeem in orde is moeten we een vergelijkbaar scherm krijgen zoals in figuur 3.11 is aangegeven. Dit is ook het scherm dat verkregen wordt na een hardware reset van het RIOT bord, of na een REBOOT commando gegeven na de prompt zoals in dit geval.
Figuur 3.11: Opstartscherm van het RIOT bord. Alles is nu klaar om te gaan experimenteren met het RIOT bordje. Met DOS commando’s kunnen nu de eerste bevelen gegeven worden aan de IPC@CHIP van het RIOT bord, hievoor verwijzen we naar het deel over de command interpreter.
Versie 1.0
33
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Communicatie met de PC over het netwerk. Indien er een netwerk voorzien is, verbindt dan de 10BaseT connector van het RIOT bord met een Hub of switch via een normale UTP straight through kabel. Is er geen netwerk beschikbaar, en wil men toch de netwerk mogelijkheden uitproberen, dan kan men het RIOT bord met de PC verbinden via een crossover UTP kabel. Om een netwerkverbinding op te zetten naar de IPC@CHIP is het voldoende een 10Mbit netwerkkaart in de PC te voorzien. Wanneer de netwerkkaart normaal geïnstalleerd is gaat men naar “Instellingen”, “Configuratiescherm” en “Netwerkverbindingen”. Hier moet men het TCP/IP protocol installeren indien dit nog niet is gedaan. Dit kan door de optie “Installeren” te kiezen en dan bij “Protocol” de optie “TCP/IP” te selecteren. Na opnieuw op te starten is het TCP/IP protocol geïnstalleerd. Zie figuur 3.12. Na opnieuw op te starten is het TCP/IP protocol geïnstalleerd. Het IP adres ,gateway en het Subnetmask kunnen nu worden ingesteld.
Figuur 3.12: Netwerkinstellingen aan de PC zijde. Wanneer men na “OK” de PC terug opstart zijn de ingestelde netwerkinstellingen actief. Dit is echter nog niet voldoende, de IPC@CHIP moet immers ook nog worden geïnitialiseerd. Deze instellingen moeten gebeuren in de file CHIP.INI op de IPC@CHIP een onderdeel van het RIOT bord. Dit kan via een aantal commando’s die vanaf de command line worden gegeven. Met het commando “ipcfg” kunnen zoals in figuur 3.13 de actuele netwerkinstellingen opgevraagd worden.
Versie 1.0
34
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Figuur 3.13: Opvragen van de netwerkinstellingen. Wanneer in het netwerk een DHCP server actief is kan deze de IPC@CHIP zelfstandig een IP adres en subnetmask geven, indien dit met het commando “DHCP =1” wordt ingesteld op de IPC@CHIP. Wanneer geen DHCP server aanwezig is kunnen deze parameters ook individueel statisch worden ingesteld met de commando’s: IP , Netmask , Gateway ,en DHCP zoals in de figuur 3.14 wordt aangegeven.
Figuur 3.14: Statisch ingeven van IP,netmask en gateway. Na een REBOOT commando zijn de parameters actief op de IPC@CHIP SC12, en kan er over het netwerk worden gecommuniceerd met het RIOT bord, dit kan vb. doormiddel van een “TELNETsessie” via een PC. Hierdoor krijgt men dezelfde functionaliteit als een terminal die is verbonden met het RIOT bord, maar dan verbonden over het ethernet.
Versie 1.0
35
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal .
Gebruikers handleiding v1.0 Een TELNET sessie opstarten kan eenvoudig gebeuren door onder “Uitvoeren” het commando “telnet” in te geven met vermelding van het IP adres van het RIOT bord dat moet aangesproken worden zoals duidelijk wordt uit figuur 3.15.
Figuur 3.15: Een telnetsessie opstarten. Daarna wordt de sessie opgestart, en moeten we nog “inloggen” op het RIOT bord : er wordt een Username en een Password gevraagd. Hiervoor kan in beide gevallen de drielettercode “tel” ingegeven worden zoals in figuur 3.16 wordt aangegeven. Om dit in deze tekst aan te geven gebeurt er een local echo naar het scherm zodat de ingetypte karakters zichtbaar worden. Deze usernaam en password kunnen uiteraard worden ingesteld door de gebruiker.
Figuur 3.16: Opgeven van de usernaam en het password. Het instellen van een USER met het bijhorende PASSWORD vanop de commandolijn zal het default password “tel” uitschakelen. USER0=WIZZARD PASSWORD0=OFFOZ1 USER1= EM PASSWORD1=INEM2
Versie 1.0
36
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Programma-ontwikkeling voor het RIOT bord. De IPC@CHIP van het RIOT bord is gebaseerd op een Intel 80186 CPU, deze kan worden geprogrammeerd met de standaard Borland C tools die ter beschikking zijn in het instituut. De programma’s worden gemaakt op een PC en dan langs een terminalemulatie programma over de seriële interface (COM) of met FTP over ethernet naar RIOT overgebracht. Daarna kan dan hun functionaliteit getest worden. De instelling van de Borland ontwikkelomgeving. Om een voorbeeldprogramma in C te schrijven heeft men een ontwikkelomgeving nodig als Borland C. Wanneer de ontwikkelomgeving is geïnstalleerd moeten er nog een aantal instellingen gedaan worden, zodat programma’s voor het RIOT bord kunnen gecompileerd worden. Als we Borland C opstarten krijgen we volgend scherm zoals aangegeven in figuur 3.17, waar we bij de ‘Opties’ de keuze ‘Project…’ nemen.
Figuur 3.17: Instellen ontwikkelomgeving. Onder de ‘16 bit Compiler’ stellen we als Processor de 80186 in en bij Memory Model stellen we Large in zoals in de figuur wordt aangegeven. Nu kunnen we van start gaan met een voorbeeld programma.
Versie 1.0
37
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal .
Gebruikers handleiding v1.0 We selecteren hiervoor onder ‘File’ de optie ‘New’ en dan ‘Project…’ zoals in figuur 3.18.
Figuur 3.18: Opgeven projectnaam. Hier kunnen we dan bij ‘Project Path and Name’ een naam kiezen voor ons project, hier ‘voorbeeld’. Bij ‘Target Type’ stellen we ‘Application [.exe]’ in en bij ‘Platform’ selecteren we ‘DOS (Standard)’. Bij Math Support kiezen we ‘Emulation’. Daarna klikken we op ‘OK’.
Versie 1.0
38
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
We kunnen nu in het ‘Project’ venster ,zie figuur 3.19, op de ‘voorbeeld.cpp’ file klikken en hier dan ons programma ingeven.
Figuur 3.19: Voorbeeld.cpp aanklikken.
Figuur 3.20: Voorbeeld programma voor RIOT. Om het in figuur 3.20 aangegeven programma te laten lopen op het RIOT bord moeten we het eerst omzetten naar een EXE-file door het te compileren.
Versie 1.0
39
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal .
Gebruikers handleiding v1.0 Hiervoor gaan we bij ‘Project’ de optie ‘Build all’ nemen, als gevolg hiervan zal het programma gecompileerd worden en gelinkt aan de nodige library’s om uiteindelijk een EXE-file te vormen. De status info wordt aan de gebruiker weergegeven in figuur 3.21.
Figuur 3.21: Statusinfo na 'build all'. We hebben nu een uitvoerbaar programma op disk staan dat moet worden geladen in het RIOT bord. Dit kunnen we doen op twee manieren; via de seriële poort en Hyterterminal of via FTP over de netwerkinterface. Opladen van de programmafile over de seriële interface via Hyperterminal.
Figuur 3.22: opladen van de .exe file. We geven via het programma Hyperterminal het ‘xtrans’ commando zoals in de figuur 3.22 wordt aangegeven. Hierbij geven we aan via welke poort de file zal binnenkomen (com) en dat we willen ontvangen (r) met daarna de naam zoals hij op het RIOT bord moet worden opgeslagen, hier 'voorb'. Daarna selecteren we in Hyperterminal de optie ‘Verplaatsen’ en ‘Bestand verzenden’ en geven de bestandsnaam van de met Xmodem te versturen file, hier is dit voorbeeld.exe.
Versie 1.0
40
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Figuur 3.23: Overdragen van de .exe file met Xmodem. Het bestand wordt nu overgedragen via het Xmodem protocol, en wanneer het geladen is krijgen we de boodschap ‘File transfer successfully’.
Figuur 3.24: Opstarten van het programma op RIOT. Het programma ‘voorb’ op het RIOT bord kan nu worden opgestart, zoals aangegeven in figuur 3.24 met het verschijnen van de tekstboodschap: ‘Hello world, this is the RIOT board’ als gevolg. Het eerste programma is nu succesvol gemaakt, opgeladen en uitgevoerd!!
Versie 1.0
41
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal . Gebruikers handleiding v1.0
Opladen van de programmafile over de Ethernet interface via FTP. Hiervoor starten we een File Transfer Client, in ons geval de freeware versie van ‘WS_FTP’ nl. ‘WS_FTP LE’.
Figuur 3.25: FTP client opstarten. Bij de eigenschappen van de sessie geven we het IP adres van het RIOT bord dat we willen aanspreken. Zie figuur 3.25.
Figuur 3.26: De WS_FTP LE layout.
Versie 1.0
42
[dp] D. Pauwels
RIOT
Remote Internet Operated Terminal .
Gebruikers handleiding v1.0 Aan de linkerzijde in figuur 3.27 zien we dat we een lokale file ‘voorbeeld.exe’kunnen selecteren die we dan naar de rechterzijde (de remote RIOT zijde) kunnen transfereren via de ‘->’ pijl. Let op enkel DOS benamingen ( 8 char, 3char extention) zijn toegelaten, daarom hernoemen we de file eerst naar ‘voorb.exe’.
Figuur 3.27: Transfer van voorb.exe naar RIOT. We kunnen nu het programma op dezelfde manier opstarten via Hyperterminal, of via een telnet sessie.
Versie 1.0
43
[dp] D. Pauwels