X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=pyfrprog.git;a=blobdiff_plain;f=pkernel%2Fmain.c;fp=pkernel%2Fmain.c;h=3676387a43694582dcf5e33e73b4d59a5a15f63e;hp=ff5a4da31e8be6ff7fa8f9e1529b9ff106ab00c3;hb=53f7a41d712ea632f433699ad64900fd23d42a89;hpb=909b8a72c470bc2b4a3680440bd0bb3b8c4c5a7b diff --git a/pkernel/main.c b/pkernel/main.c index ff5a4da..3676387 100644 --- a/pkernel/main.c +++ b/pkernel/main.c @@ -3,35 +3,128 @@ #pragma section CODE=IRAM,attr=CODE -void increaseled(void) +#define BUFSIZE 0x20 +#define cleardata() memset(data,0,BUFSIZE) + +static void increaseled(void) { PDR14 = ~(((~PDR14)+1)%256); HWWD_CL = 0; } +static unsigned char recvbyte(void) +{ + return Getch4(); +} + +static unsigned short recvword(void) +{ + static unsigned char b1, b2; + static unsigned int ret; + b1 = recvbyte(); + b2 = recvbyte(); + ret = (b2 << 8) | b1; + return ret; +} + +static unsigned int recvdword(void) +{ + static unsigned char b1, b2, b3, b4; + static unsigned int ret; + b1 = recvbyte(); + b2 = recvbyte(); + b3 = recvbyte(); + b4 = recvbyte(); + ret = (b4 << 24) | (b3 << 16) | (b2 << 8) | b1; + return ret; +} + +static void halt(void) +{ + while(1) { + HWWD_CL = 0; + } +} + +static void panic(void) +{ + PDR14 = 0xff; + PDR14 = 0x22; + halt(); +} + void main(void) { - unsigned int i, baseaddr; - unsigned int toflash[] = {0x9b00, 0x0d4e, 0xcff1, 0x1601, 0x9b05, 0x04c7, 0xc106, 0x1656, 0xe0fb}; //len = 9 + unsigned int address; + unsigned short i, size; + unsigned char running = 1, data[BUFSIZE] = {0}; PORTEN = 0x3; /* enable I/O Ports */ /*Enable LEDs*/ DDR14 = 0xFF; - PDR14 = 0x00; - increaseled(); + PDR14 = 0xff; /*Initialize UART4*/ InitUart4(); -#if 1 + while(running) { + cleardata(); + increaseled(); + switch(recvbyte()) { + case 0x13: //receive + Putch4(0x37); + increaseled(); + + address = recvdword(); + increaseled(); + + size = recvword(); + increaseled(); + + Putch4(0x04); //Received Metadata. + PDR14 = 0xff; + for(i=0; i