* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download ppt
Survey
Document related concepts
Zero-configuration networking wikipedia , lookup
Asynchronous Transfer Mode wikipedia , lookup
Computer network wikipedia , lookup
Wake-on-LAN wikipedia , lookup
Deep packet inspection wikipedia , lookup
Airborne Networking wikipedia , lookup
Serial Peripheral Interface Bus wikipedia , lookup
Cracking of wireless networks wikipedia , lookup
Network tap wikipedia , lookup
Internet protocol suite wikipedia , lookup
Serial digital interface wikipedia , lookup
Recursive InterNetwork Architecture (RINA) wikipedia , lookup
Transcript
Master/Slave Software Architecture Master commands and responses are packets not single bytes void master() _task_ MAST{ Button(mode); // enq(cmd) checkDB(mode); // enq(cmd) } void comTop() _task_ COM{ wait(K_TMO, 1); if (!deq(cmd)) { cmd = pollCmd(next++); slave = next; } else slave = toWho(cmd); write(slave, cmd); read(response); signal(VERIFY); } void comBot() _task_ VERIFY{ // match up resp. and commds wait(K_SIG); verify(response); updateDB(response); } mode is NOT a global variable Slave void mainTask() _task_ SL{ manageLoad(mode); } COMMANDS void comTop() _task_ TOP{ read(master,cmd); write(master,response); //prev signal(DO); }// could be ISR RESPONSES responses are for previous command CSE 466 – Fall 2000 - Introduction - 1 void comBot() _task_ DO { wait(K_SIG); response = do(cmd); // set local mode } Sockets are a logical constructs socket == 2-way fifo Socket could be implemented in shared memory, internet, or anything in between. High level architecture can be independent of implementation choices. slave Master slave slave CSE 466 – Fall 2000 - Introduction - 2 Physical Network MCU2 Bus MCU1 Device1 Device2 CSE 466 – Fall 2000 - Introduction - 3 ISO Network Layers – modularity/interop. Physical Layer: What physically moves a bit/byte from one place to another (ethernet). Devices have a local physical address. Voltage Current Photons Radio Sonar Data Link Layer: Guarantees delivery of “frames” over the physical layer, to the physical address. Assembles/dissembles packets from/to frames. Address (Source and Destination) Checksum Data Usually a fixed size or maximum size. Network Layer: Primarily responsible for routing of network packets Maps packet destination address from/to local physical address Adds network layer header to packet Gives packets w/ header to data link layer, along with physical address. CSE 466 – Fall 2000 - Introduction - 4 ISO Layers Continued Transport Layer: responsible for end-to-end protocol of user data buffer transmissions. Source and destination addresses are private – host to host. Maps application space channel (socket) name to network address. makes network packets w/ transport header and communicates w/ network layer. Each layer has a peer-to-peer and an intra-stack protocol Application Application write(s, buf,n); read(s, buf,n ); Transport -- TCP Transport -- TCP Network -- IP Network -- IP Network -- IP Network -- IP Datalink -- Ether Datalink -- Ether Datalink -- Ether Datalink -- Ether fiber Physical -- Ether Physical -- Ether ethernet fiber ethernet CSE 466 – Fall 2000 - Introduction - 5 Embedded Networking: Simplest Case Simple case: socket name is the same as physical address. No mapping, we just need to break our message into frames…maybe Physical Layer – typically low bandwidth, serial, byte oriented Data link layer – read/write interface to the application frames: destination address, data, checksum. No mapping from sockets to network address No mapping from network address to physical address (no routing) Application Application write(s, buf,n); read(s, buf,n ); Transport Transport Network -- IP Network -- IP Network -- IP Network -- IP Datalink Datalink -- Ether Datalink -- Ether Datalink fiber Physical Physical ethernet fiber ethernet CSE 466 – Fall 2000 - Introduction - 6 Example of Physical Layer: SPI Bus SCK Master SCK SDO SDI SDI void isr() interrupt TIMER { SDR = S; while(!SPF); R = SDR; } Slave SDO 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 shift reg void isr() interrupt SPF{ R = SDR; SDR = S signal(RECV); } shift reg CSE 466 – Fall 2000 - Introduction - 7 Multiple Slave Configuration SCK Master SCK SDO SDI SDI Slave SDO SCK SDI SDO CSE 466 – Fall 2000 - Introduction - 8 Slave Master Slave Data Link Protocol As an example frame is [destination address, command, data] An acknowledgement frame is [address, data, checksum] Master SCK SCK SDO SDI SDI SDO Slave mux SCK dst cmd data dst type data SDI addr data sum type data sum mux x x x 1 1 1 2 2 2 CSE 466 – Fall 2000 - Introduction - 9 SDO Slave Data Link Layer (Master/Slave) 30 end slave1 ooo 15 cont. slave1 10 loadtable slave1 write(slave1, “loadtable 10 15 25 30”); //transport interface void physical() interrupt TIMER { S = deq() setMux(S); SDR = S while (!SDF); R = SDR; signal(DLIN); } void datalink() _task_ DLIN { while(1) { wait(); frame[i++] = R; if (i == 3) { i = 0; process(frame); } } verify checksum } update local DB with data in the ACK frame. Handle error. longer packets = less overhead but longer latency (response time) not shown: synchronizing dealing w/ errors CSE 466 – Fall 2000 - Introduction - 10 void physical() interrupt SF { R = SDR; SDR = deq(); signal(DLIN); } void datalink _task_ DLIN { while (1) { wait(); frame[i++] = R; if (i == 3) { i = 0; process(frame); } } } if for me, prepare ACK assemble into packets and signal app when packet complete Application Interface to Data Link Layer void mast() _task_ app { … // application layer protocol defines meaning write(SLAVE1, “loadtable 10 15 20 25 30”); //blocking … } void write(int dst, char *command{ // transport interface frame_array = mkFrames(dst,command); for (each byte in frame array) enq(byte); } slave1 loadtable 10 slave1 cont. 15 slave1 end 30 void slave()_task_ app( while(1) { if (!read(master, cmd)) do(cmd); other_processing() } } int read() { if (test(READ)) { sprintf(cmd,”%s”,deq()) return(0); } return(-1) } void process(char *frame) { response = resp(frame); for (each byte) enq(response); if (addframe(p,frame)) { enq(p); p = new packet(); signal(READ); } } CSE 466 – Fall 2000 - Introduction - 11 Trade-off Between Frame Size and Overhead write(p1, “loadtable 10 15 25 30”); //transport interface p1 loadtable 10 p1 cont. 15 p1 end 30 Frame: bus is dedicated to that transmission during the entire frame or p1 loadtable 10 15 20 25 30 end similar to the OS time slice problem: efficiency v. responsiveness CSE 466 – Fall 2000 - Introduction - 12 Another Physical Layer – I2C Multi-mastered Send and receive Two wire (plus ground) Packet oriented (block send) CSE 466 – Fall 2000 - Introduction - 13 Major Features of I2C CSE 466 – Fall 2000 - Introduction - 14 Physical Layer CSE 466 – Fall 2000 - Introduction - 15 Bit Transfer Transmitter Master CSE 466 – Fall 2000 - Introduction - 16 Who gets to be master The one who initiates a frame: A frame is: <Start><addr><data>…<data><Stop> OR <Start><addr><data>…<data><R_Start><addr><data>…<Stop> CSE 466 – Fall 2000 - Introduction - 17 An I2C Byte Transfer MSB First Rx MSB……………….LSB slave Tx Device Rx Device master CSE 466 – Fall 2000 - Introduction - 18 slave “Bit Banging” v. Bus Controller Bit Banging do all signal transitions in SW very difficult IC Interface: Mem Mapped device: set your address initiate transfer service the device on interrupt byte received transmission complete CSE 466 – Fall 2000 - Introduction - 19 Schematic from App Note Something is wrong with this picture…but its close CSE 466 – Fall 2000 - Introduction - 20 Arbitration what’s the backoff rule? CSE 466 – Fall 2000 - Introduction - 21 A Complete Frame MSB……..LSB CSE 466 – Fall 2000 - Introduction - 22 CSE 466 – Fall 2000 - Introduction - 23