?? flash_bootloader.gel
字號:
/* set PMST to: MP = 1 OVLY = 0; DROM off, CLKOUT on */
#define PMST_VAL 0xffc0u
/* set wait-state control reg for: 2 w/s or more on i/o; one for ext memory */
#define SWWSR_VAL 0x7fffu
/* set external-banks switch control for: no bank switching; BH set */
#define BSCR_VAL 0x02u
/* Set Default Reset Initialization Value */
#define ZEROS 0x0000u
#define flash_work 0x001C@io
/* Set Peripheral Control Register Addresses for DEV_RESET */
#define DMPREC 0x0054u
#define DMSA 0x0055u
#define DMSDI 0x0056u
#define DMA_CH0_DMFSC_SUB_ADDR 0x0003u
#define DMA_CH1_DMFSC_SUB_ADDR 0x0008u
#define DMA_CH2_DMFSC_SUB_ADDR 0x000Du
#define DMA_CH3_DMFSC_SUB_ADDR 0x0012u
#define DMA_CH4_DMFSC_SUB_ADDR 0x0017u
#define DMA_CH5_DMFSC_SUB_ADDR 0x001cu
#define MCBSP0_SPSA 0x0038u
#define MCBSP0_SPSD 0x0039u
#define MCBSP1_SPSA 0x0048u
#define MCBSP1_SPSD 0x0049u
#define MCBSP2_SPSA 0x0034u
#define MCBSP2_SPSD 0x0035u
#define MCBSP_SPCR1_SUB_ADDR 0x0000u
#define MCBSP_SPCR2_SUB_ADDR 0x0001u
#define MCBSP_SRGR1_SUB_ADDR 0x0006u
#define MCBSP_SRGR2_SUB_ADDR 0x0007u
#define MCBSP_MCR1_SUB_ADDR 0x0008u
#define MCBSP_MCR2_SUB_ADDR 0x0009u
#define SRGR1_INIT 0x0001u
#define PRD0 0x0025u
#define TCR0 0x0026u
#define PRD1 0x0031u
#define TCR1 0x0032u
#define TIMER_STOP 0x0010u
#define TIMER_RESET 0x0020u
#define PRD_DEFAULT 0xFFFFu
#define GPIOCR 0x0010u
/* variable */
#define BOOT_LENGTH 0x7000
#define BOOT_ADDRESS 0x4000
StartUp()
{
VC5402_Init();
}
VC5402_Init()
{
PMST = PMST_VAL;
SWWSR = SWWSR_VAL;
BSCR = BSCR_VAL;
C5402_Periph_Reset();
GEL_Reset();
GEL_MapReset();
GEL_MapOn();
GEL_MapAdd(0x0,0,0x100000,1,1);
GEL_MapAdd(0x0000,1,0x10000,1,1);
GEL_MapAdd(0x0,2,0x10000,1,1);
boot_enable();
GEL_TextOut("C5402_Init Complete.\n");
}
C5402_Periph_Reset()
{
IFR = 0xFFFF;
IFR = 0x0000;
DMA_Reset();
MCBSP0_Reset();
MCBSP1_Reset();
TIMER0_Reset();
TIMER1_Reset();
GPIO_Reset();
}
DMA_Reset()
{
*(int *)DMPREC = ZEROS;
*(int *)DMSA = DMA_CH0_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
*(int *)DMSA = DMA_CH1_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
*(int *)DMSA = DMA_CH2_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
*(int *)DMSA = DMA_CH3_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
*(int *)DMSA = DMA_CH4_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
*(int *)DMSA = DMA_CH2_DMFSC_SUB_ADDR;
*(int *)DMSDI = ZEROS;
*(int *)DMSDI = ZEROS;
}
MCBSP0_Reset()
{
*(int *)MCBSP0_SPSA = MCBSP_SPCR1_SUB_ADDR;
*(int *)MCBSP0_SPSD = ZEROS;
*(int *)MCBSP0_SPSA = MCBSP_SPCR2_SUB_ADDR;
*(int *)MCBSP0_SPSD = ZEROS;
*(int *)MCBSP0_SPSA = MCBSP_SRGR1_SUB_ADDR;
*(int *)MCBSP0_SPSD = SRGR1_INIT;
*(int *)MCBSP0_SPSA = MCBSP_SRGR2_SUB_ADDR;
*(int *)MCBSP0_SPSD = ZEROS;
*(int *)MCBSP0_SPSA = MCBSP_MCR1_SUB_ADDR;
*(int *)MCBSP0_SPSD = ZEROS;
*(int *)MCBSP0_SPSA = MCBSP_MCR2_SUB_ADDR;
*(int *)MCBSP0_SPSD = ZEROS;
}
MCBSP1_Reset()
{
*(int *)MCBSP1_SPSA = MCBSP_SPCR1_SUB_ADDR;
*(int *)MCBSP1_SPSD = ZEROS;
*(int *)MCBSP1_SPSA = MCBSP_SPCR2_SUB_ADDR;
*(int *)MCBSP1_SPSD = ZEROS;
*(int *)MCBSP1_SPSA = MCBSP_SRGR1_SUB_ADDR;
*(int *)MCBSP1_SPSD = SRGR1_INIT;
*(int *)MCBSP1_SPSA = MCBSP_SRGR2_SUB_ADDR;
*(int *)MCBSP1_SPSD = ZEROS;
*(int *)MCBSP1_SPSA = MCBSP_MCR1_SUB_ADDR;
*(int *)MCBSP1_SPSD = ZEROS;
*(int *)MCBSP1_SPSA = MCBSP_MCR2_SUB_ADDR;
*(int *)MCBSP1_SPSD = ZEROS;
}
TIMER0_Reset()
{
*(int *)TCR0 = TIMER_STOP;
*(int *)PRD0 = PRD_DEFAULT;
*(int *)TCR0 = TIMER_RESET;
}
TIMER1_Reset()
{
*(int *)TCR1 = TIMER_STOP;
*(int *)PRD1 = PRD_DEFAULT;
*(int *)TCR1 = TIMER_RESET;
}
GPIO_Reset()
{
*(int *)GPIOCR = ZEROS;
}
menuitem "FLASH PROGRAMMING";
hotmenu FlashStart()
{
GEL_TextOut("Flash Program Start!\n");
*(int *)flash_work = 0;
GEL_Load("C:\\ti5xx\\\myprojects\\flash_bootload\\flash_boot.out");
GEL_TextOut("flash_boot.out load successful!\n");
GEL_Go(flash_wr_boot0);
GEL_TextOut("FLASH ERASE successful!\n");
GEL_Go(flash_wr_text1);
GEL_MemoryLoad(0x4000,1,BOOT_LENGTH,"C:\\ti5xx\\\myprojects\\flash_bootload\\test.dat");
GEL_TextOut("test.dat load successful!\n");
GEL_Go(flash_wr_vector1);
GEL_TextOut("text.dat Program Success!\n");
GEL_Go(flash_wr_cinit1);
GEL_TextOut("vector.dat Program Success!\n");
GEL_Go(flash_wr_switch1);
GEL_TextOut("cinit.dat Program Success!\n");
GEL_Go(flash_over);
GEL_TextOut("switch.dat Program Success!\n");
GEL_TextOut("FLASH Program Over!\n");
}
menuitem "PROGRAM ADDR";
hotmenu boot_enable()
{
*(int *)flash_work = 1;
}
hotmenu boot_disable()
{
*(int *)flash_work = 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -