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

📄 flash_boot.c

📁 基于dsp的flash驱动程序
💻 C
字号:
/************************************************************************************
	filename:	flash_boot.c
	版权(c) 	2003-		北京合众达电子技术有限责任公司			                *
*  	设计者:	戴展波	
*************************************************************************************/

#include <string.h>
#include "flash.h"

#define ENTER_POINT	0x4304
#define FIRST_S_LENGTH	0x062a		/* text */
#define FIRST_S_ADDRESS	0x4078
#define SECOND_S_LENGTH 0x0078		/* vector */
#define SECOND_S_ADDRESS	0x4000
#define THIRD_S_LENGTH	0x013e		/* cinit */
#define THIRD_S_ADDRESS 0x46a2
#define FOURTH_S_LENGTH	0x0014		/* switch */
#define FOURTH_S_ADDRESS 0x47e0
#define FIFTH_S_LENGTH	0x000b		/* zimu */
#define FIFTH_S_ADDRESS 0x47f4

int i;
unsigned long address;
unsigned int length;

void main()
{
	i = 1;
	asm("flash_era:");
//	i = flash_erase(0x0000,0x10);	
	if(i == 0)	
	{
		for(;;);
	}
	
	/* 烧写 */
	
	asm("flash_wr_boot0:");
	i = flash_writes(0x8ffff,0x4000);	/* source address */
	if(i == 0)
	{
		for(;;);
	}
	address = 0x84000;
	i = flash_writes(address,0x10AA);	/* 16BITS */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0x7fff);		/* SWWSR */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0x0002);		/* BSCR */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0);		/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,ENTER_POINT);	/* ENTER_POINT */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,FIRST_S_LENGTH);	/* first segment length */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0);	/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,FIRST_S_ADDRESS);	/* first segment destination address */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	asm("flash_wr_text1:");
	i = flash_writem(address,FIRST_S_ADDRESS,FIRST_S_LENGTH);	/* first segment code */
	if(i == 0)	
	{
		for(;;);
	}
	
	address = address + FIRST_S_LENGTH;
	
	i = flash_writes(address,SECOND_S_LENGTH);	/* second segment length */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0);	/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,SECOND_S_ADDRESS);	/* second segment destination address */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	asm("flash_wr_vector1:");
	i = flash_writem(address,SECOND_S_ADDRESS,SECOND_S_LENGTH);	/* second segment code */
	if(i == 0)	
	{
		for(;;);
	}
	
	address = address + SECOND_S_LENGTH;
	
	i = flash_writes(address,THIRD_S_LENGTH);	/* third segment length */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0);	/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,THIRD_S_ADDRESS);	/* third segment destination address */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	asm("flash_wr_cinit1:");
	i = flash_writem(address,THIRD_S_ADDRESS,THIRD_S_LENGTH);	/* third segment code */
	if(i == 0)	
	{
		for(;;);
	}
	
	address = address + THIRD_S_LENGTH;
	
	i = flash_writes(address,FOURTH_S_LENGTH);	/* fourth segment length */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,0);	/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,FOURTH_S_ADDRESS);	/* fourth segment destination address */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	asm("flash_wr_switch1:");
	i = flash_writem(address,FOURTH_S_ADDRESS,FOURTH_S_LENGTH);	/* second segment code */
	if(i == 0)	
	{
		for(;;);
	}
	
	address = address + FOURTH_S_LENGTH;
	
	i = flash_writes(address,FIFTH_S_LENGTH);	/* fifth segment length */
	if(i == 0)
	{
		for(;;);
	}
	
	address++;
	i = flash_writes(address,0);	/* XPC */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	i = flash_writes(address,FIFTH_S_ADDRESS);	/* fifth segment destination address */
	if(i == 0)
	{
		for(;;);
	}
	address++;
	asm("flash_wr_uart1:");
	i = flash_writem(address,FIFTH_S_ADDRESS,FIFTH_S_LENGTH);	/* fifth segment code */
	if(i == 0)	
	{
		for(;;);
	}
	
	address = address + FIFTH_S_LENGTH;
	
	i = flash_writes(address,0);	/* end code */
	if(i == 0)
	{
		for(;;);
	}
	
	asm("flash_over:");
	for(;;);
}

⌨️ 快捷键说明

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