📄 flash_boot.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 + -