📄 _debug.h
字号:
/*
//==Program Name:_Debug.h================================
//--Program Description:Arm bootloader main programm--------
//--Author:Yanyou Song---E-mail:syyo@163.com-----------------
//--Some Program&Fuction May Have BUG------------------------
//--The Code Is Strictly In public,Forbiding Updata On Net---
//--Use This Code Caused All The Problem Is Irrespective The
Programmer,Aftermath By Yourself!!---------------------------
//--Copyright Yanyou Song,All rights reserved.---------------
//--Design Data:2006-09-11 ----------------------------------
//===========================================================
//===========程序名称:_Debug.h=======================
//--程序目的:ARM引导装载程序-----------------------------
//-----设计&编写者 :宋彦佑--电子邮件:syyo@163.com---------
//------------程序&函数有存在BUG的可能--------------------
//------此原码不公开!!不允许公布在因特网上!!------------
//--使用此代码引起的一切问题与设计&编写者无关,后果自负---
//------------作者保留此代码的所有权力--------------------
//----设计日期:-2006-now---------------------------------
//========================================================
//--------最后更改日期---------
//---the last revision time----
//2006-10-31
*/
char chack_pass_key_h(void);
void i_o_debug(void);
void inc_os_use(void);
void set_ip_address(void);
void iic_r_w(void);
void Set_Informatiom(void);
void set_leave_factory_time(void);
void sys_debug(char in)
{
char ch_ch,lo;
unsigned char data[4] ;
int read_data=0;
unsigned int eep_addr;
unsigned char data_eep_char;
int data_eep_int,error=0;
unsigned long data_eep_long=0;
if(in=='h')
{
if(0==chack_pass_key_h())
{
while(1)
{
i_printf("\n\r");
i_printf(" +-----------------------------------------+\n\r");
i_printf(" | 欢迎进入系统高级菜单(V1.3) |\n\r");
i_printf(" | Welcome To System Administrators Menu |\n\r");
i_printf(" | [1] System Use Information |\n\r");
i_printf(" | [2] Test LED (I/O 0,1) |\n\r");
i_printf(" | [3] Download PGM to SDRAM |\n\r");
i_printf(" | [4] Download OS/Programm to Flash |\n\r");
i_printf(" | [5] Start User Pgm/OS |\n\r");
i_printf(" | [6] Set Network IP Address |\n\r");
i_printf(" | [7] IIC EEPROM Read and WRITE |\n\r");
i_printf(" | [8] I/O Debug |\n\r");
i_printf(" | [9] Set Informatiom |\n\r");
i_printf(" +-----------------------------------------+\n\r");
ch_ch=get_char(0);
switch(ch_ch)
{
case '1':
i_printf(" \n\r\n\r");
data_eep_long=0;
data_eep_int=iicread(iic_sys_use_h1);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_h2);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_h3);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
if(iicread(iic_sys_use_h4)!=0xaa) i_printf("\r\nEEPROM Data Error!please chack!\r\n\r\n");;
if(error<=-1) i_printf("\r\nIIC Bus error please chack!\r\n");
i_printf(" 1. System started user PGM/OS %d Times!\n\r",data_eep_long);
data_eep_long=0;
data_eep_int=iicread(iic_sys_use_u1);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_u2);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_u3);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
if(iicread(iic_sys_use_u4)!=0xaa) i_printf("\r\nEEPROM Data Error!please chack!\r\n\r\n");;
if(error<=-1) i_printf("\r\nIIC Bus error please chack!\r\n");
i_printf(" 2. System started bootloader %d Times!\n\r",data_eep_long);
data_eep_long=0;
data_eep_int=iicread(iic_sys_use_f1);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_f2);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
data_eep_long=data_eep_long<<8;
data_eep_int=iicread(iic_sys_use_f3);
if(data_eep_int<=-1) error=-5;
else data_eep_long|=data_eep_int;
if(iicread(iic_sys_use_f4)!=0xaa) i_printf("\r\nEEPROM Data Error!please chack!\r\n\r\n");;
if(error<=-1) i_printf("\r\nIIC Bus error please chack!\r\n");
i_printf(" 3. Download PGM to Flash %d Times!",data_eep_long);
i_printf("\n\r");
i_printf(" 4. Leave Factory time ");
for(lo=0;lo<=12;lo++)
{
i_printf("%c",iicread(iic_finish_time+lo));
}
i_printf("!\n\r");
for(lo=3;lo<=63;lo++)
{
i_printf("%c",iicread(iic_infor_user+lo));
}
i_printf("\n\r");
i_printf("Press any key to Continue!\n\r",data_eep_long);
get_char(0);
break;
case '2':
Test_LED();
break;
case '3':
down_pgm_ram();
break;
case '4':
download();
break;
case '5':
inc_os_use();
jmppc_f();
break;
case '6':
set_ip_address();
break;
case '7':
iic_r_w();
break;
case '8':
i_o_debug();
break;
case '9':
Set_Informatiom();
break;
default:
break;
} } } }}
char chack_pass_key_h(void)
{ char check_char;
char check_back=10;
if(get_char(0)=='i')
{ if(get_char(0)=='t')
{ if(get_char(0)=='a')
{ if(get_char(0)=='t')
{ if(get_char(0)=='c')
{ if(get_char(0)=='i') check_back=20;
}}}}}
if(check_back==20) return 0;
else return -1;
}
//---------------i/o debug----------------------
void i_o_debug(void)
{
char r_back=0,i,in_addr[12],in_data[12];
unsigned long get_add,get_data,rw;
volatile unsigned long *get_add_p;
while(1)
{
i_printf("\n\r");
i_printf("+-------------------------------+\n\r");
i_printf("| Welcome to I/O Debug (V1.0) |\n\r");
i_printf("| (1) Start to use |\n\r");
i_printf("| (2) Exit |\n\r");
i_printf("+-------------------------------+\n\r");
i=get_char(0);
switch(i)
{
case '1':
while(1)
{
i_printf("\r\nPlease Input Read/Write Address!\r\n");
r_back=0;
for(i=0;i<=12;i++) in_addr[i]=0;
i=11;
in_addr[11]=get_char(0);
do{
i_printf("%c",in_addr[i]);
if(!(in_addr[i]=='1'||in_addr[i]=='2'||in_addr[i]=='3'||in_addr[i]=='4'||in_addr[i]=='5'||in_addr[i]=='6'||in_addr[i]=='7'||in_addr[i]=='8'||in_addr[i]=='9'||in_addr[i]=='0'||in_addr[i]=='x'||in_addr[i]=='a'||in_addr[i]=='b'||in_addr[i]=='c'||in_addr[i]=='d'||in_addr[i]=='e'||in_addr[i]=='f'))
{
i_printf("\r\n\r\nSorry,Input Error!\r\n\r\n");
r_back=5;
break;
}
i-=1;
if(i<=0)
{
i_printf("\r\nSorry,Input Overflow!\r\n");
r_back=5;
break;
}
in_addr[i]=get_char(0);
}while(in_addr[i]!=0x0d);
if(in_addr[i]==0x0d) in_addr[i]=0;
if(in_addr[11]!='0'||in_addr[10]!='x')
{
i_printf("\n\rInput Address Error!\n\r");
r_back=8;
}
if(r_back>2) break;
i_printf("\r\nYour Input Address is ");
for(i=11;i>=1;i--)
{
if(in_addr[i]==0) put_char(0, '0');
else put_char(0, in_addr[i]);
}
i_printf("\r\n");
for(i=9;i>=2;i--)
{
if(in_addr[i]>=0x30&&in_addr[i]<=0x40) in_addr[i]=in_addr[i]-0x30;
if(in_addr[i]>=0x60&&in_addr[i]<=0x66) in_addr[i]=in_addr[i]-0x57;
}
get_add=0;
for(i=9;i>=2;i--)
{
get_add=get_add<<4;
get_add|=in_addr[i];
}
get_add_p=(unsigned long*)get_add;
r_back==0;
while(1)
{
i_printf("\n\r");
i_printf("+-------------------------------------------+\n\r");
i_printf("| 1.Read 2.Write 3.Reinput 4.Rewrite 5.Back|\n\r");
i_printf("+-------------------------------------------+\n\r");
i=get_char(0);
switch(i)
{
case '1':
rw=*get_add_p;
i_printf("\r\nYour Input Address is 0x%x",get_add);
i_printf("\r\n");
i_printf("Data is 0x%x \n\r",rw);
break;
case '2':
i_printf("\r\nPlease Input Write Data!\r\n");
for(i=0;i<=12;i++) in_data[i]=0;
i=11;
in_data[11]=get_char(0);
do{
i_printf("%c",in_data[i]);
if(!(in_data[i]=='1'||in_data[i]=='2'||in_data[i]=='3'||in_data[i]=='4'||in_data[i]=='5'||in_data[i]=='6'||in_data[i]=='7'||in_data[i]=='8'||in_data[i]=='9'||in_data[i]=='0'||in_data[i]=='x'||in_data[i]=='a'||in_data[i]=='b'||in_data[i]=='c'||in_data[i]=='d'||in_data[i]=='e'||in_data[i]=='f'))
{
i_printf("\r\n\r\nSorry,Input Error!\r\n\r\n");
r_back=5;
break;
}
i-=1;
if(i<=0)
{
i_printf("\r\nSorry,Input Overflow!\r\n");
r_back=5;
break;
}
in_data[i]=get_char(0);
}while(in_data[i]!=0x0d);
if(in_data[i]==0x0d) in_data[i]=0;
if(in_data[11]!='0'||in_data[10]!='x')
{
i_printf("\n\rInput DATA Error!\n\r");
r_back=8;
}
if(r_back>2) {r_back=0;break;}
for(i=9;i>=2;i--)
{
if(in_data[i]>=0x30&&in_data[i]<=0x40) in_data[i]=in_data[i]-0x30; //
if(in_data[i]>=0x60&&in_data[i]<=0x66) in_data[i]=in_data[i]-0x57; // change ASCALL to num
}
get_data=0;
for(i=9;i>=2;i--)
{
get_data=get_data<<4;
get_data|=in_data[i];
}
i_printf("\r\n");
i_printf("Your Input Data is 0x%x \n\r",get_data);
break;
case '3':
r_back=25;
break;
case '4':
*get_add_p=get_data;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -