command.c

来自「arm开发很好的例程」· C语言 代码 · 共 121 行

C
121
字号


#include "bios.h"
#include "stdio.h"
#include "uart.h"
#include "xmodem.h"
#include "command.h"
#include "flash.h"
#include "utils.h"
#include "29dl640.h"

UNS32 Down_func(void)
{
	UNS32 size;
	my_printf("Please send App Program File!\n\r");
	size = xmodem_down(0x1000);
	put_str("\n\rDownload is Ok!\n\r",0);
	return size;
}



void Write_Flash_func(UNS32 size)
{
	UNS16 i;
	my_printf("Flash is programming...\n\r");
	my_printf("Eraseing...\n\r");
	for( i = 0;size > Sector_address[i] ;i++)
	{
		Flash_sector_erase(Sector_address[i]);
		put_char('.');
			
	}
	my_printf("\n\rprogramming...\n\r");
	Flash_write(size);
	my_printf("\n\rFlash Program is Ok!\n\r");
	
}


void  Read_Flash_ID_func(void)
{
	UNS16 ID_Buffer[4];
	
	Flash_read_id(ID_Buffer);
	
	my_printf("Flash: \n\r\tManufacture's code: 0x%04x",ID_Buffer[0]);
	my_printf("\n\r\tDevice code: 0x%04x",ID_Buffer[1]);
	my_printf("\n\r\tExtended Device code: 0x%04x\t0x%04x\n\r",ID_Buffer[2],ID_Buffer[3]);
	
}

void Verify_Flash_func(UNS32 size)
{
	UNS32 address;
	
	UNS8 String[16];
	
	address = Flash_Verify(size);
	my_printf("Flash is verifing...\n\r");
	
	if ( address != (size>>1) )
	{
		my_printf("Verify is error at Address: 0x%x\n\r",address);
	}
	else
		my_printf("Verify is Pass!Address:0x%x\n\r",address);
		
	
}


void Read_Flash_func(void)
{
	UNS16 *ptr= (UNS16 *)0x20000000;
	S8 buf[16];
	UNS32 address;
	UNS32 size;
	UNS16 i;
	UNS16 temp;
	
	my_printf("Input start address:");
	get_str(buf,sizeof(buf));
	sscanf((const char *)buf,"0x%x",&address);
	my_printf("\n\rInput size:",address);
	get_str(buf,sizeof(buf));
	sscanf((const char *)buf,"0x%x",&size);
	
	my_printf("\n\rResult:  Start Address:0x%x\tSize:0x%x\n\r",address,size);
	ptr += address;
	size >>= 4;
	for( i=0;i<size;i++)
	{
		for( temp = 0;temp <8;temp ++)
		{
			my_printf("0x%04x,",*ptr);
			ptr++;
		}
		my_printf("\n\r");
	}
}



void GoTo_func(void)
{
	my_printf("Start the App Program ...");
	//0xFFE02004
	
	asm("						\
		P5.h = 0xFFE0;		\
		P5.l = 0x2004;        \
		P0.l=0x1000;            \
		P0.h=0x0000;            \
		[P5]=P0;                \
		P1=[P5];                \
		JUMP(P1);               \
								\
	");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?