?? 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 + -