⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _debug.h

📁 用于开发Linux的Bootloader源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
//==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 + -