4) De IPC@CHIP hardware.



Vergelijkbare documenten
RIOT Remote Internet Operated Terminal. Gebruikers handleiding v1.0 7) De I 2 C interface.

RIOT Remote Internet Operated Terminal. Gebruikers handleiding v1.0

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Wat is een busverbinding?

Arduino CURSUS. door Willy - 09-juni-2017

Hoofdstuk 7. Computerarchitectuur

Hoofdstuk 19. Embedded systemen

FORTH op de 80C535 processor met het ATS535 board.

18 Embedded systemen 1

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Sequentiële Logica. Processoren 24 november 2014

256Kb (Standaard) Geen. 1 M ohm, 12- bit resolutie, ±10 VDC, Sampling-rate 4,3 KHz. Vier 12-bit resolutie, 0-10 V DC, update rate 10 KHz

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

OP6800/ OP6810: C-programmeerbare besturingscontrollers: OP6800-serie.

Inhoud vandaag. Interrupts. Algemeen ARM7 AIC

Wat is Arduino? Arduino = microprocessor (Atmel)

Deel 2 S7 Graph Ont4 - GA3

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

Hoofdstuk 18. Embedded systemen

De seriële poort Jan Genoe KHLIM

Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

Inleiding microcontrollers. Week 1 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Tentamen 17 augustus 2000 Opgaven Computerarchitectuur

ES1 Project 1: Microcontrollers

EDK Walkthrough: Hardwareontwerp met GPIO en UART Deel 1

BASIS MICROCONTROLLERS. INLEIDING EN ADDENDUM BIJ HET AduC800 DATABOEK.

Debugging in embedded en native systemen met GDB

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

Digitale technieken Microprocessoren

PROJECT: A. ( Soekris Installatie)

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

ES1 Project 1: Microcontrollers

in Operating System Concepten

in Operating System Concepten Doel van een Operating System Interrupts 3-Lagen model spooling (Simultaneous Peripheral Operation On Line)

Betaalbaar Home Control. Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen

Peripheral Interface Controllers. BRAC clubavond PE2WDO

A Quick Start Guide: AVR programmeren

Seriële bluetooth verbinding ATmega128

Gebruiksaanwijzing AVR910 USB Programmer

Het koppelen van een FC302 op Profibus met een Siemens PLC

Firewall van de Speedtouch 789wl volledig uitschakelen?

Manual Debug software. VMC next

Microcontrollers. Robert Langenhuysen, PA0RYL

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Bescherming van (software) IP bij uitbesteding van productie

Netwerken in productiesystemen. Automatiseringspiramide SCADA. Inleiding computersystemen en netwerken deel 2

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Animeo IB+ : control solution for building enveloppe performance. Oplossingen voor tertiaire gebouwen

Een intelligent DMX netwerk

Xilinx JTAG Programmer

Testprogramma voor EPROMprogrammer

Handleiding software USB PIC DEV. BOARD

De CB channel controller TMS1022NL/NLL en TMS1023NL/NLL. ( Dit is een maskrom-programmed version van de Texas Instruments TMS1000 family)

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8

Altera NIOS 3.0 Tutorial

TCP-IP message van partner PLC naar Alarmsysteem met als inhoud alarmen en analoge waarden in Format code 01.

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.

Koppelen Centix Datacollecter aan RS-485 bus d.m.v. de Moxa 5150.

1 graduaat Elektriciteit/elektronica KHLim - dep. IWT HALFGELEIDER-GEHEUGENS HALFGELEIDER GEHEUGENS STATISCH DYNAMISCH ROM PROM EPROM EEROM

Parallelle Poort Aansturen Met Visual Basic

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

7,3. Samenvatting door een scholier 1961 woorden 16 januari keer beoordeeld. Informatica Informatica actief

Bedieningspaneel. Drukknoppen en Ds

Tweede workshop Arduino

Gebruiker afschermen van de hardware

Workshop Arduino voor beginners deel 2

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

INHOUD SPI : SERIAL PERIPHERAL INTERFACE ALGEMEEN. Videolessen Deel 3 DATACOMMUNICATIE SPI

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

Installatie & Configuratiehandleiding. Socket Server. OpenAT applicatie

De AVR Microcontroller programmeren met GCC

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Microcontrollers Labo

Inductiemeter via de parallelle poort

Hardware specialisatie. Sessie: Systeemoptimalisatie

2 Algemene opbouw van een computersysteem


LabVIEW 8.5. Voor beginners. Adriaan Brebels

Handleiding NodeMCU. Handleiding NodeMCU l Pagina 1

Jan Genoe KHLim. PCI Signalen en timing

Beveiliging in Industriële netwerken. Waarom monitoring een goed idee is

Les B-04 Het moederbord

1. Installatie netwerklock

Halfgeleider geheugens:

Deel 8: stappenmotoren en interrupts

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen

DCC Lok Decoder met Atmel Tiny45

Transcriptie:

4) De IPC@CHIP hardware. Hier geven we een beschrijving van de verschillende hardware-onderdelen van het RIOT bord en hun onderlinge samenhang. De belangrijkste componenten zijn: de IPC@CHIP SC12, een rudimentaire embedded Internet PC on chip, de IO processor en het dual port geheugen. De IPC@CHIP SC12 embedded controller. De IPC@CHIP van de firma Beck is een embedded controller ontworpen om producten te kunnen verbinden met het internet of een LAN. De IPC@CHIP is een combinatie van hardware en software. De hardware bestaat uit een 186-processor, RAM, FLASH-disk, twee seriële poorten, timers, IIC controller, ethernet controller, parallelle poort en een adres/databus. De grootte van het geheugen en de snelheid van de CPU hangt af van het type IPC@CHIP. Figuur 4.1: IPC@CHIP SC12 Deze hardware is verpakt in een DIL32 behuizing, zie figuur 4.1. De software bestaat zoals wordt aangegeven in figuur 4.2 uit een Real Time Operating System (RTOS) met file system, TCP/IP stack, web, FTP, Telnet en Hardware interface layer. Al deze services zijn voor user programma s aanspreekbaar via Application Programmers Interfaces (API s). User DOS programma s, uitgevoerd als tasks van het RTOS RTOS en Filesystem API RTOS, TCP/IP, Hardware,Web,CGI,Serial, Ethernet, I2C, DOS int21 TFTP DHCP Client FTP HTTP Web Socket Application Interface TCP/IP Stack ARP, ICMP, TCP, UDP, IGMP Telnet UDP Config DOS EXE Loader Command shell Ethernet Packet driver PPP Client PPP Figuur 4.2: IPC@Chip software architectuur Versie 1.0 44 [dp] D. Pauwels

De software is pre-installed on-chip, de IPC@CHIP is dus gebruiksklaar bij verzending. Door deze strategie is dus een groot deel van de functionaliteit een onderdeel van het operating system. Alleen de toepassingsgebonden functionaliteit moet nog worden ontwikkeld als een userprogramma. De IPC@CHIP is dus ideaal om snel een nieuw product web-enabled op de markt te krijgen. Het RTOS kan 35 tasks, 15 timers, 60 semaforen, 10 message exchanges en 2 event groups aan. De user-programma s worden geschreven als een 16 bit DOS toepassing. De RTOS kan tot 12 user-programma s in RAM laden, waar iedere toepassing uitgevoerd wordt in een afzonderlijke task. Vanuit een user-programma kan men door gebruik te maken van software interrupts het RTOS aanspreken om tasks te creëren, TCP sockets te openen enz. Als programmeeromgeving kan een gewone BORLAND C/C++ compiler gebruikt worden. Een bijhorende source level debugger is vrij beschikbaar via de website http://www.bcl.de. De TCP/IP stack is een performante stack, zonder compromissen. Hij biedt TCP, UDP, ARP, ICMP, Socket interface, 64 Sockets en 3 device interfaces ( Ethernet, PPP en PPP client). Deze TCP/IP stack is in het OS slechts beschikbaar vanaf de BIOS versie SC12Vxxx_MEDIUM. De versie van de BIOS software kan door de gebruiker zelf worden opgeladen in functie van zijn toepassing. Graag verwijzen we hiervoor naar de gedetailleerde 'Getting started' info van de firma Beck. Overzicht van de IPC@CHIP. Technische gegevens: 80186 16 bit CPU. 20MHz clock. 512 Kbyte Flash ROM. 512 Kbyte RAM. 14 programmeerbare I/O (PIO) pinnen. 2 DMA kanalen. 2 seriële poorten. Ethernet controller IEE802.3 met geïntegreerde 10Base-T ontvanger. 3 programmeerbare 16 bit timers. PWM. Programmeerbare interruptcontroller met 6 externe en 8 interne interruptbronnen. Programmeerbare geheugen en I/O chip-select logica. Single 5V voedingsspanning. Watchdog timer. DIL32 behuizing. IIC Bus master Versie 1.0 45 [dp] D. Pauwels

Pinout van de IPC@CHIP SC12. Figuur 4.3: pinout van de IPC@CHIP. Pin functies. VCC Voedingsspanning 5VDC GND Massa A[0..2] Address bus (tristate, synchroon) AD[0..7] Address/Data bus (tristate,synchroon) Gemultiplexte addres en data bus voor de I/O-map. Geldig address bij dalende flank ALE. ALE Address Latch Enable (synchroon) Dalende flank geeft geldig address weer op AD[0..7] /RD Read signaal (synchroon, actief laag) Geeft lees actie aan in de I/O-map. /WR Write signaal (synchroon, actief laag) Geeft schrijf actie aan in de I/O-map PIO[0..13] Programmeerbare I/O pinnen (input,output, asynchroon,open drain) TPRX/TPTX Ethernet controller (10Base-T interface) RXD/TXD Seriële poorten. CTS/RTS RXD1/TXD1/CTS1/RTS1 COM poort. RXD0/TXD0/CTS0/RTS0 EXT poort. PCS[0..3] Peripheral chip selects (synchroon) PCS[5..6] Deze selecteren telkens een I/O bereik van 256 bytes. PCS4 wordt intern door door het OS gebruikt om de ethernetcontroller aan te spreken. INT[0,2..4] TMRIN/ TMROUT RESET I2CCLK I2CDAT Maskable interrupt request (asynchroon). Timer input/ output. Resetpin voor de IPC@CHIP. Spanning onder 0.8V reset de chip. IIC bus clock. IIC bus data. Versie 1.0 46 [dp] D. Pauwels

Gebruik van de ADDRESS/ DATA-bus. Bij het gebruik van de IPC@CHIP als processor zijn er twee mogelijkheden om het I/O adresbereik aan te spreken. De eerste mogelijkheid bestaat erin om over de adresbus A[0..2] en de pinnen PCS[0,2,3] (Programmable Chip Select 0,2,3) het volgende adresbereik te adresseren: Tabel 4.1: Beperkte adresseerbaarheid. PCS (Programmable Chip Select) AD[0..2] PCS 0 00H-07H PCS 2 200H-207H PCS 3 300H-307H Bij deze vorm van adresseren zijn de AD[0..7] pinnen datalijnen. Met de /RD en de /WR lijnen wordt er aangegeven of er in het I/O adresgebied gelezen of geschreven wordt. PCS [1,5,6] zijn door het gebruik van A[0..2] niet beschikbaar. Het nadeel van deze adressering is het kleine adresseringsgebied dat ter beschikking staat. Een tweede mogelijkheid is de adressering met behulp van de ALE (Address Latch Enable) lijn. Bij deze adresserings methode staat een veel groter adresbereik ter beschikking. Immers PCS[1..3] en PCS[5,6] staan nu ter beschikking. PCS0 wordt hier gebruikt als ALE lijn en is voor adressering niet beschikbaar. PCS4 wordt intern gebruikt voor de Ethernetcontroller. Tabel 4.2: Adresseerbaarheid via de ALE lijn. PCS (Programmable Chip Select) AD[0..7] PCS1 (PIO4) 100H-1FFH PCS2 (/CTS1) 200H-2FFH PCS3 (/RTS1) 300H-3FFH PCS5 (PIO3) 500H-5FFH PCS6 (PIO2) 600H-6FFH Bij de dalende flank van ALE staat op de AD[0..7] lijnen nu een geldig adres. Deze methode wordt op ons RIOT bord deels toegepast. Zie figuur 4.4. of het totaalschema in het technisch dossier. We spreken hier telkens het adresbereik 100H tot 1FFH aan, wat als gevolg heeft dat de PCS1 lijn wordt geactiveerd, wat blijkt uit tabel 4.2. PCS1 wordt gebruikt als Chip Enable lijn van de DPRAM, d.w.z. dat de DPRAM vanuit de software alleen maar aangesproken wordt bij het adresbereik 100H tot 1FFH (we spreken dus maximaal 256 bytes aan van de voorziene 1Kbyte)! De pinnen PCS2 (/CTS1) en PCS3 (/RTS1) worden op het RIOT bord hardwarematig reeds gebruikt met hun alternatieve functies als handshake signalen van de seriële poort1, we kunnen ze dus niet meer gebruiken als Chip Select pin voor externe componenten op de bus. We gebruiken nu de pinnen PCS5 en PCS6 met hun alternatieve functie nl. als gewone parallelle IO pinnen PIO3 en PIO2, en verbinden deze met de adreslijnen A9 en A8 van de DPRAM. Bij elke mogelijke digitale combinatie (A9,A8) die we hiermee onder softwarecontrole kunnen aanbieden aan de DPRAM kunnen we nu het bereik van 100H tot 1FFH op de adres/databus aanspreken. Maar telkens bij een andere geheugenbank aangegeven met A8 en A9, wat resulteert in vier maal een 256byte bereik. Versie 1.0 47 [dp] D. Pauwels

Op deze manier is het geheugenbereik van 1Kbyte van de Dual Port RAM (DPRAM) aanspreekbaar. De op RIOT gebruikte DPRAM circuits zijn afgebeeld in figuur 4.5. Het timing diagramma van figuur 4.6 geeft de relatie aan tussen de verschillende signalen die betrokken zijn bij een bus-acces. De DPRAM vormt de interface naar de IO-processor ('IOsys'), en werkt als een mailbox geheugencomponent waarin langs de IPC@CHIP zijde als langs de IOprocessor('IOsys') zijde informatie kan worden geschreven en gelezen. De IO-processor 'IOsys' is een voorgeprogrammeerde microcontroller en heeft immers geen businterface waarmee hij met de IPC@CHIP kan worden verbonden, maar wel een adres/databus waarmee hij oa. geheugencomponenten kan aanspreken. In de DPRAM kunnen door de IPC@CHIP op welomschreven locaties parameters worden geschreven die door de IO-controller worden gelezen en zo de werking van deze laatste beïnvloeden. Op deze manier krijgen we een krachtige 'intelligente' periferiechip die verschillende taken zelfstandig kan uitvoeren zonder de IPC@CHIP processor hiermee lastig te vallen. IPC@CHIP SC12 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 PIO2 PIO3 PIO4 /RD /WR ALE AD0-AD7 sheet:3/2a PIO2-PIO4 sheet:3/1a CONTROL sheet:3/1a Dit is de adres/databus die extern door een 74HC573 wordt gedemultiplexed tot een 8bit adresbus en een 8bit databus door middel van het ALE controlesignaal. PIO2 en PIO3 worden bij het aanspreken van de DPRAM gebruikt als de meest beduidende adresbits A8 en A9. PIO4 wordt gebruikt als chip enable /CE van de DPRAM. /RD en /WR worden gebruikt om de /OE en de R/W lijn aan te spreken van de DPRAM. Figuur 4.4: De IPC@CHIP businterface naar DPRAM Figuur 4.5: De op RIOT gebruikte DPRAM circuits Versie 1.0 48 [dp] D. Pauwels

Figuur 4.6: Timingdiagramma van een buscyclus. In de command interpreter COMMAND staan er DOS-achtige commando s ter beschikking voor de adressering met ALE. ALE 1 PCS 1 OB 100 FF IB 105 Activering van de adres/data bus. I/O bereik 100H-1FFH. De waarde FF wordt in de I/O locatie 100H geschreven. Het adres 105H wordt gelezen. Deze commando s staan ook via API s ter beschikking van de programmeur van user programma s zodat softwarematig de bus-mode kan worden ingesteld zoals wordt weergegeven in het volgende programma voorbeeld. Deze bus-mode (PCS1) wordt op het RIOT bord gebruikt, om de Dual Port Ram te kunnen aanspreken. Het volgende voorbeeld kan een en ander verduidelijken. Versie 1.0 49 [dp] D. Pauwels

// Example of using the RIOT board v1.1 // // Created by [dp] 23.02.2002 // This program reads the contents of memory bank 0 of the dual port ram // on the RIOT board, and writes it to stdio. // It can be used to debug the memory hardware of the RIOT board by verifying the // external address/data bus and the control signals /RD,/WR,PCS1, PIO2,PIO3 of the // IPC@CHIP SC12 device on an oscilloscoop or logic analyser. // // includes #pragma option -1 #include <stdio.h> #include <dos.h> //create 80186 code // defines #define PFE_INT 0xa2 // Pin Function Enabler #define HAL_INT 0xa1 // Hardware Abstraction Layer software interrupt #define TCP_INT 0xac // variables union REGS inregs; union REGS outregs; struct SREGS segregs; // initialise RIOT v1.1 // enable the databus on the IPC@CHIP (ALE signal, PCS1 activates 100H-1FFH addresses) void enable_databus (void) // enable 8 bit databus inregs.x.ax = 0x8001; //enable ALE, databus inregs.x.dx = 0x00ff; //all 8 bits are enabled //enable chip select 1 (PIO4) inregs.h.ah = 0x83; inregs.x.dx = 0x02; //PCS1# (100h-1ffh) //software interrupt (OS call) Versie 1.0 50 [dp] D. Pauwels

// bank select 0 PIO2,PIO3 (A8,A9)=00b void select_bank0 (void) // reset pio2,pio3 lines inregs.h.al = 0x05; //pio2,pio3 both 0 inregs.x.dx = 0x000b; //enable pio2,pio3 // bank select 1 PIO2,PIO3 (A8,A9)=10b void select_bank1 (void) // reset pio3 line inregs.h.al = 0x05; //pio3 0 inregs.x.dx = 0x0008; //enable pio3 // set pio2 line inregs.h.al = 0x04; //pio3 0 inregs.x.dx = 0x0004; //enable pio3 // bank select 2 PIO2,PIO3 (A8,A9)=01b void select_bank2 (void) // set pio3 line inregs.h.al = 0x04; //pio3 state1 inregs.x.dx = 0x0008; //enable pio3 // reset pio2 line inregs.h.al = 0x05; //pio2 0 inregs.x.dx = 0x0004; //enable pio2 Versie 1.0 51 [dp] D. Pauwels

// bank select 3 PIO2,PIO3 (A8,A9)=11b void select_bank3 (void) // set pio2,pio3 lines inregs.h.al = 0x04; //pio2,pio3 both 1 inregs.x.dx = 0x000b; //enable pio2,pio3 // Read databus on specified address unsigned char read_databus (unsigned int ram_address) unsigned char value; // read data bus inregs.h.ah = 0x80; inregs.x.di = ram_address; // address= user parameter inregs.x.bx = 0xffff; //wand=0xffff inregs.x.cx = 0x0000; //wxor=0x0000 int86x (HAL_INT,&inregs,&outregs,&segregs); value = outregs.h.al; returnvalue; // Write databus on specified address void write_databus (unsigned char value, unsigned int ram_address) // Write data bus inregs.h.ah = 0x81; inregs.x.di = ram_address; // address= user parameter inregs.h.dh = 0; inregs.h.dl = value; inregs.x.bx = 0xff; //wand= 8 bit databus inregs.x.cx = 0x0000; //wxor=0x0000 int86x (HAL_INT,&inregs,&outregs,&segregs); Versie 1.0 52 [dp] D. Pauwels

// select memory bank 0, and repeatedly dump a 256 byte block on screen void main (void) while (1) unsigned char number; unsigned int address; void enable_databus (void); //setup address/databus ALE, PCS1 void select_bank0 (void); //select the memory bank to read for (address=0x100; address<=0x1ff; address++) number= read_databus (address); //read riot dual port ram on address 100-1ffh printf ("\r\ndata: %02Xh, Address: %02Xh",number,address); // display memory location Aan de hand van de functie enable_databus wordt via een operating system call (PFE-API) de ALE pinfunctie en de PCS1 pin geënabled, zodat bij het aanspreken van een adres in het bereik 100H-1FFH de ALE en PCS1 pinnen actief worden. De functie select_bank0 heeft als gevolg dat, de pinnen PIO2,PIO3 op het '00'b niveau worden geplaatst, en dus dat geheugenbank 0 wordt aangesproken. De functie read_databus leest de geheugenlocatie op het aangegeven adres. Daarna wordt deze data in een blok van 256 bytes op het scherm afgedrukt a.d.h.v. een for lus. Om de voorbeeldprogramma's beter te begrijpen is het nuttig de informatie van de firma Beck te raadplegen die handelt over de verschillende API's die ter beschikking staan van de gebruiker. Versie 1.0 53 [dp] D. Pauwels

De MEMORY- en I/O MAP van de IPC@CHIP. Figuur 4.7: Geheugen structuur van de IPC@CHIP. De firmware in Flash-ROM is steeds herprogrammeerbaar met de meest recente BIOS versie die downloadbaar is via de website van de firma BECK. In het RAM geheugen wordt het uit te voeren programma geladen (vanuit de Flash-Disk, en door het OS). Hierin is ook het gebruik van een RAM-disk mogelijk vanuit user programma s. Zie figuur 4.7. In het 64Kbyte grote I/O gebied merkt men dat er naast de user-inschakelbare chip-selectlijnen (waarvan wij op het RIOT bord PCS1 gebruiken) met een adresgebied van 0000h tot 06FFh, ook het gebied van FF00h tot FFFFh aanspreekbaar is. Dit zijn de in de 80186 beschikbare controle-registers langs waar men de on-chip resources (hardware componenten) direct kan aanspreken. Dit is echter voor een aantal periferie componenten niet nodig daar ze ook door API s ondersteund worden vanuit het OS. Op deze manier hoeft de gebruiker zich geen zorgen te maken over de specifieke werking van deze door API s ondersteunde hardware onderdelen. De gebruiker kan echter voor specifieke gevallen of voor de door API's niet ondersteunde hardwarecomponenten deze hier direct aanspreken en initialiseren. Voor de gedetailleerde beschrijving van de in de 80186 beschikbare periferie componenten, en hun werking verwijzen we graag naar de 80186 USERS MANUAL. Versie 1.0 54 [dp] D. Pauwels