📄 main.c.bak
字号:
#include <stdio.h>
#include <c6x.h>
#include "c6416h.h"
#define FLASH_BEGIN 0x64000000 /*FLASH begin address*/
void test_IRAM( unsigned int RAM_add, int length);
void SDRAM_test( unsigned int sdram_add, int length);
void emifa_init();
void emifb_init();
void erase_flash();
void flash_write(unsigned int FLASH_add, int code_size);
void flash_read(unsigned int FLASH_add, int code_size);
void DelayTime(int value);
/*-------------------------------------------------------------------------*/
/* main() begin */
/*-------------------------------------------------------------------------*/
void main()
{
/* DSP initialization */
CSR=0x100; /* Disable all interrupts */
IER=1; /* Disable all interrupts except NMI */
ICR=0xffff; /* Clear all pending interrupts */
printf("*TMS320C6416 hello *\n");
// test_IRAM( 0x00020000, 50); /* test interal Ram*/
emifa_init();
SDRAM_test(0x80100000, 200);
emifb_init();
erase_flash();
flash_write(0x64000000, 100);
flash_read(0x64000000, 100);
printf("*END*\n");
}
/*---------------- main() end -----------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*test interal ram*/
void test_IRAM( unsigned int RAM_add, int length)
{
unsigned int *ptr_ram;
int i;
ptr_ram = (unsigned int*) RAM_add;
for (i=0;i<length;i++)
{
*ptr_ram++ = i;
printf("i=0x%08x\n",i);
}
ptr_ram = (unsigned int*) RAM_add;
for (i=0;i<length;i++)
{
int temp;
temp = *ptr_ram++ ;
printf("Read=0x%08x at Address=0x%08x\n",temp,(ptr_ram-1));
}
}
/*-------------------------------------------------------------------------*/
/*EMIFA intalize --SDRAM */
void emifa_init()
{
*(unsigned volatile int *) EMIFA_GBLCTL = 0x00000020;
*(unsigned volatile int *) EMIFA_CE0 = 0xffffff33;
*(unsigned volatile int *) EMIFA_CESEC0 = 0x00000005;
*(unsigned volatile int *) EMIFA_SDEXT = 0x00054505;
*(unsigned volatile int *) EMIFA_SDTIM = 0x000003d1;
*(unsigned volatile int *) EMIFA_SDCTL = 0x47113000;
}
/*-------------------------------------------------------------------------*/
/*EMIFB intalize -- FLASH */
void emifb_init()
{
*(unsigned volatile int *) EMIFB_GBLCTL = 0x00000020;
*(unsigned volatile int *) EMIFB_CE1 = 0xffffff33;
*(unsigned volatile int *) EMIFB_CESEC1 = 0x00000005;
}
/*-------------------------------------------------------------------------*/
/*SDRAM test*/
void SDRAM_test( unsigned int sdram_add, int length)
{
unsigned int *ptr_ram;
int i;
ptr_ram = (unsigned int*) sdram_add;
for (i=0;i<length;i++)
{
*ptr_ram++ = 0x55555555;
// *ptr_ram++ = 0xaaaaaaaa;
// *ptr_ram++ = i;
// printf("i=0x%08x\n",i);
}
ptr_ram = (unsigned int*) sdram_add;
for (i=0;i<length;i++)
{
int temp;
temp = *ptr_ram++ ;
printf("Read=0x%08x at Address=0x%08x\n",temp,(ptr_ram-1));
}
}
/*************************************************************************/
void erase_flash()
{
int temp = 0;
unsigned char *flash_ptr;
*(unsigned volatile char*)FLASH_ADR1=0xaa; //0x9000aaaa
*(unsigned volatile char*)FLASH_ADR2=0x55; //0x90005555
*(unsigned volatile char*)FLASH_ADR1=0x80;
*(unsigned volatile char*)FLASH_ADR1=0xaa;
*(unsigned volatile char*)FLASH_ADR2=0x55;
*(unsigned volatile char*)FLASH_ADR1=0x10;
while (temp != 0x0080 )
{flash_ptr=(unsigned char *)FLASH_BEGIN;
temp = *flash_ptr;
temp = temp & 0x0080; /*check DQ7="1"? "1"=erase complete.*/
}
/*查RY/BY=0*/
}
/******************************************************************/
void flash_write(unsigned int FLASH_add, int code_size)
{
int i;
unsigned char *flash_ptr;
flash_ptr=(unsigned char *)FLASH_add; /*give flash_ptr=0x90000000*/
for (i=0;i<code_size;i++)
{
*(unsigned char *)FLASH_ADR1=0xaa;
*(unsigned char *)FLASH_ADR2=0x55;
*(unsigned char *)FLASH_ADR1=0xa0;
// flash_ptr=(unsigned char *)(FLASH_BEGIN1+2*i);
*flash_ptr++ = 0x55;
// printf("%0X\n",flash_ptr );//
// printf("%0X\n",*flash_ptr );//
DelayTime(20); //delay do not<20
}
}
/*************************************/
/*read from flash */
void flash_read(unsigned int FLASH_add, int code_size)
{
int i;
unsigned char temp;
unsigned char *flash_ptr;
// unsigned char *ram_ptr;
// *(unsigned volatile short *)FLASH_ADR1=0xaa;
// *(unsigned volatile short *)FLASH_ADR2=0x55;
// *(unsigned volatile short *)FLASH_ADR1=0xf0;
flash_ptr=(unsigned char *)FLASH_add;
for (i=0;i<code_size;i++)
{
// flash_ptr=(unsigned short *)(FLASH_BEGIN1+2*i);
temp = *flash_ptr++;
// ram_ptr=(unsigned short *)(RAM_BEGIN1+i);
// *ram_ptr = temp;
DelayTime(10);
// printf("read=0x%08x\n",temp);
printf("read=0x%08x at address=0x%08x\n",temp,(flash_ptr-1));
//flash_ptr++ ;
}
}
/*********************************/
void DelayTime(int value)
{
while(value--)
printf(" ");
}
/*********************************/
/* END OF FILE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -