?? library.c
字號:
#include "4510b.h"
#include "Main.h"
//-*****************************************-//
//
//-*****************************************-//
void wait10uS(void)
{
int i;
for(i=100;i!=0;i--)
{
;
}
}
///////delay count*10us///////
void delay(int count)
{
while(count--)
{
wait10uS();
}
}
/////////////////////////////
void init_queue(seqqueue *Q)
{
Q->front = 0;
Q->rear = 0;
}
/////////////////////////////
int queue_empty(seqqueue Q)
{
if(Q.front == Q.rear) return TRUE;
else return FALSE;
}
////////////////////////////
int queue_full(seqqueue Q)
{
if(((Q.rear+1) % Uart_buf_size)== Q.front) return TRUE;
else return FALSE;
}
////////////////取隊頭元素/////////////
int queue_front(seqqueue Q, char *x)
{
if(queue_empty(Q) == TRUE) return FALSE;
else
{
*x = Q.buffer[(Q.front+1)/Uart_buf_size];
return SUCCESS;
}
}
///////////////入隊//////////////
int Enqueue(seqqueue *Q, char x)
{
if(queue_full(*Q) == TRUE) return FALSE;
else
{
Q->rear = (1 + Q->rear) % Uart_buf_size;
Q->buffer[Q->rear] = x;
return SUCCESS;
}
}
//////////////出隊///////////////
int Outqueue(seqqueue *Q, char *x)
{
if(queue_empty(*Q) == TRUE) return FALSE;
else
{
Q->front = (1+Q->front) % Uart_buf_size;
*x = Q->buffer[Q->front];
return SUCCESS;
}
}
//////////////////////////////////
void menu(void)
{
printp(" \n***************************************************************");
printp(" \n* THE SAMSUNG S34510B BootLoader System *");
printp(" \n***************************************************************");
printp(" \n* [B] :DownLoad new BootLoarder *");
printp(" \n* [L] :DownLoad uCLinux *");
printp(" \n* [D] :DownLoad Demo Program *");
printp(" \n* [A] :DownLoad Ramdisk *");
printp(" \n* [R] :Run uCLinux *");
printp(" \n* [r] :Run Demo Program *");
printp(" \n* [T] :Use TFTP Download uCLinux *");
printp(" \n* [F] :Use TFTP Download Ramdisk *");
printp(" \n* [E] :Erease the Onboard 2M Flash *");
printp(" \n* [H,h] :For help .... *");
printp(" \n* If you don't touch any key in 5S, *");
printp(" \n* The BootLoader will boot the onboard uClinux *");
printp(" \n***************************************************************\n:>");
}
void print(char ch);
void BootLoader(char *last_ch)
{
char ch;
while(queue_empty(Uart_buffer) == FALSE)
{
if(Outqueue(&Uart_buffer, &ch) == SUCCESS)
{
if(ch!=0x0D)
{
print(ch);
//printp("%c",ch);
*last_ch = ch;
}
else
{
switch(*last_ch)
{
case 0:
break;
case 'B':
printp("\n [B] :DownLoad new BootLoarder\n");
break;
case 'D':
{
uchar receive_text_buffer[0x200000];
command_flag = 'D';
uart_receiver_count = 0;
Time0_count = 0;
Point_program_address=(int *)FLASH_START_ADDR;
Puart_receiver_buffer=receive_text_buffer;
printp("\n [D] :DownLoad Demo Program\n");
printp("Receive Demo Program from Uart ...\n");
//Program_AM29LV160(receive_text_buffer,Point_program_address,8192*2);
}
break;
case 'L':
printp("\n [L] :DownLoad uCLinux\n");
break;
case 'A':
printp("\n [A] :DownLoad Ramdisk\n");
break;
case 'R':
printp("\n [R] :Run uCLinux\n");
break;
case 'r':
printp("\n [r] :Run Demo Program\n");
break;
case 'T':
printp("\n [T] :Use TFTP Download uCLinux\n");
break;
case 'F':
printp("\n [F] :Use TFTP Download Ramdisk\n");
break;
case 'E':
{
printp(" \n* [E] :Erease the Onboard 2M Flash*");
AM29LV160_EraseFLASH();
}
break;
case 'h':
case 'H':
menu();
break;
default:
printp("\n please input the correct command! \n");
}
*last_ch = 0;
printp("\n:> ");
}
}
else
printp("\n Outqueue(&Uart_buffer, &ch) error \n");
}
}
void print(char ch)
{
int before_line=0;//小寫字母
int back_line=0;
if(ch>31&&ch<64)
{
ch+=32;
before_line=1;
}
else if(ch>95&&ch<127)
{
ch-=32;
back_line=1;
}
if(ch>64&&ch<91) switch(ch)
{
case '@' :
if(before_line) printp("__");
else if(back_line) printp("'");
else printp("@");
break;
case 'A' :
if(before_line) printp("!");
else if(back_line) printp("a");
else printp("A");
break;
case 'B' :
if(before_line) printp("'");
else if(back_line) printp("b");
else printp("B");
break;
case 'C' :
if(before_line) printp("#");
else if(back_line) printp("c");
else printp("C");
break;
case 'D' :
if(before_line) printp("$");
else if(back_line) printp("d");
else printp("D");
break;
case 'E' :
if(before_line) printp("%");
else if(back_line) printp("e");
else printp("E");
break;
case 'F' :
if(before_line) printp("&");
else if(back_line) printp("f");
else printp("F");
break;
case 'G' :
if(before_line) printp(".");
else if(back_line) printp("g");
else printp("G");
break;
case 'H' :
if(before_line) printp("(");
else if(back_line) printp("h");
else printp("H");
break;
case 'I' :
if(before_line) printp(")");
else if(back_line) printp("i");
else printp("I");
break;
case 'J' :
if(before_line) printp("*");
else if(back_line) printp("j");
else printp("J");
break;
case 'K' :
if(before_line) printp("+");
else if(back_line) printp("k");
else printp("K");
break;
case 'L' :
if(before_line) printp(",");
else if(back_line) printp("l");
else printp("L");
break;
case 'M' :
if(before_line) printp("-");
else if(back_line) printp("m");
else printp("M");
break;
case 'N' :
if(before_line) printp(".");
else if(back_line) printp("n");
else printp("N");
break;
case 'O' :
if(before_line) printp("/");
else if(back_line) printp("o");
else printp("O");
break;
case 'P' :
if(before_line) printp("0");
else if(back_line) printp("p");
else printp("P");
break;
case 'Q' :
if(before_line) printp("1");
else if(back_line) printp("q");
else printp("Q");
break;
case 'R' :
if(before_line) printp("2");
else if(back_line) printp("r");
else printp("R");
break;
case 'S' :
if(before_line) printp("3");
else if(back_line) printp("s");
else printp("S");
break;
case 'T' :
if(before_line) printp("4");
else if(back_line) printp("t");
else printp("T");
break;
case 'U' :
if(before_line) printp("5");
else if(back_line) printp("u");
else printp("U");
break;
case 'V' :
if(before_line) printp("6");
else if(back_line) printp("v");
else printp("V");
break;
case 'W' :
if(before_line) printp("7");
else if(back_line) printp("w");
else printp("W");
break;
case 'X' :
if(before_line) printp("8");
else if(back_line) printp("x");
else printp("X");
break;
case 'Y' :
if(before_line) printp("9");
else if(back_line) printp("y");
else printp("Y");
break;
case 'Z' :
if(before_line) printp(":");
else if(back_line) printp("z");
else printp("Z");
break;
case '[' :
if(before_line) printp(";");
else if(back_line) printp("{");
else printp("[");
break;
case 92 :
if(before_line) printp("<");
else if(back_line) printp("|");
else printp(" ");
break;
case ']' :
if(before_line) printp("=");
else if(back_line) printp("}");
else printp("]");
break;
case '^' :
if(before_line) printp(">");
else if(back_line) printp("~");
else printp("^");
break;
case '-' :
if(before_line) printp("?");
else if(back_line) printp(" ");
else printp("-");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -