//*----------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name : Debug.c
//* Object : Debug menu
//* Creation : JPP 16/May/2004
//* Modif : JPM 16/Nov/2004
//*----------------------------------------------------------------------------
#include <stdio.h>
// Include Standard files
#include "Board.h"
#include "Flash.h"
/*---------------------------- Global Variable ------------------------------*/
char message[512];
//*--------------------------1--------------------------------------------------
//* \fn AT91F_DBGU_Printk
//* \brief This function is used to send a string through the DBGU channel
//*----------------------------------------------------------------------------
void AT91F_DBGU_Printk( char *buffer)
{
while(*buffer != '\0') {
while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++);
}
}
//*----------------------------------------------------------------------------
//* \fn AT91F_US_Get
//* \brief Get a Char on USART
//*----------------------------------------------------------------------------
int AT91F_US_Get( char *val)
{
if ((AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU)) == 0) return (false);
else
{
*val= AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
return (true);
}
}
//*----------------------------------------------------------------------------
//* \fn AT91F_DBGU_scanf
//* \brief Get a string on USART and manage Backspace and echo
//*----------------------------------------------------------------------------
void AT91F_DBGU_scanf(char * type,unsigned int * val)
{//* Begin
unsigned int read = 0;
char buff[10];
unsigned int nb_read =0;
while( (read != 0x0D) & (nb_read != sizeof(buff)) ) {
//* wait the USART Ready for reception
while((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_RXRDY) == 0 ) ;
//* Get a char
read = AT91C_BASE_DBGU->DBGU_RHR ;
buff[nb_read]= (char)read;
//* Manage Backspace
while((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY) ==0) {}
if ((char)read == 0x08) {
if ( nb_read != 0 ) {
nb_read--;
AT91C_BASE_DBGU->DBGU_THR = read;
}
}
else {
//* echo
AT91C_BASE_DBGU->DBGU_THR = read;
nb_read++;
}
}
//* scan the value
sscanf(buff,type,val);
}//* End
//*----------------------------------------------------------------------------
//* \fn AT91F_DBGU_Flash
//* \brief print address and size
//*----------------------------------------------------------------------------
void AT91F_DBGU_Flash(unsigned int add, unsigned int size)
{
sprintf( message,"Start 0x%X size 0x%X (%d)\n\r" ,add, size, size);
AT91F_DBGU_Printk(message);
}
//*----------------------------------------------------------------------------
//* \fn AT91F_Print_Memory
//* \brief Print a memory area add: xx xx xx xx
//*----------------------------------------------------------------------------
void AT91F_Print_Memory(unsigned int add, unsigned int size)
{
unsigned int i;
unsigned int * start_add = (unsigned int *) add;
AT91F_DBGU_Flash(add,size);
for (i=0 ; i < size ; i+=4)
{
sprintf( message,"At 0x%X: 0x%X 0x%X 0x%X 0x%X\n\r",&start_add[i], start_add[i], start_add[i+1], start_add[i+2], start_add[i+3] );
AT91F_DBGU_Printk(message);
}
}
//*----------------------------------------------------------------------------
//* \fn AT91F_Flash_Lock_info
//* \brief Print Flash NVM bit
//*----------------------------------------------------------------------------
void AT91F_Flash_Lock_info(void)
{
sprintf(message,"\n\rMC_FSR Value: 0x%X\n\r",AT91C_BASE_MC->MC_FSR);
AT91F_DBGU_Printk(message);
if (AT91F_Flash_Lock_Status()!=0) AT91F_DBGU_Printk("Lock Bit is set\n\r");
if (AT91F_NVM_Status() !=0) AT91F_DBGU_Printk("NVM Bit is set\n\r");
if (AT91F_SET_Security_Status() !=0) AT91F_DBGU_Printk("Security Bit is set\n\r");
}
//*----------------------------------------------------------------------------
//* \fn menu
//* \brief Debug menu
//*----------------------------------------------------------------------------
void menu(void)
{
unsigned int * start_add;
int i,size,page;
char val;
unsigned int status, buff[FLASH_PAGE_SIZE_LONG*10];
//* Data initialization
size = FLASH_PAGE_SIZE_BYTE;
page = 0;
start_add = ( unsigned int *) AT91C_IFLASH;
AT91F_DBGU_Flash (( unsigned int)start_add,size);
for (i=0; i < FLASH_PAGE_SIZE_LONG*4; i++) { buff[i] = 0xAABBCC00+i;}
AT91F_DBGU_Printk("\n\rMenu:\n\r1) Flash Info\n\r2) Dump Entire Flash\n\r3) Write One Page\n\r4) Write Several Pages\n\r5) Erase Entire Flash\n\r6) Set Lock Bit\n\r7) Clear Lock Bit\n\r8) Clear All Lock Bits\n\r9) Set All Lock Bits\n\rA) Set Security Bit\n\rEnter:");
//* Loop menu
while (1)
{
if (AT91F_US_Get(&val))
switch (val) {
case '1': //* Flash Info
AT91F_Flash_Lock_info();
if (AT91F_Flash_Check_Erase((unsigned int*)AT91C_IFLASH,AT91C_IFLASH_SIZE/4) ) AT91F_DBGU_Printk("Flash is erased\n\r");
else AT91F_DBGU_Printk("Flash is not erased !\n\r");
AT91F_DBGU_Printk("\n\rMenu:\n\r1) Flash Info\n\r2) Dump Entire Flash\n\r3) Write One Page\n\r4) Write Several Pages\n\r5) Erase Entire Flash\n\r6) Set Lock Bit\n\r7) Clear Lock Bit\n\r8) Clear All Lock Bits\n\r9) Set All Lock Bits\n\rA) Set Security Bit\n\rEnter:");
break;
case '2': // Dump Flash
AT91F_Print_Memory((unsigned int)start_add,AT91C_IFLASH_SIZE/4);
AT91F_DBGU_Printk("\n\rMenu:\n\r1) Flash Info\n\r2) Dump Entire Flash\n\r3) Write One Page\n\r4) Write Several Pages\n\r5) Erase Entire Flash\n\r6) Set Lock Bit\n\r7) Clear Lock Bit\n\r8) Clear All Lock Bits\n\r9) Set All Lock Bits\n\rA) Set Security Bit\n\rEnter:");
break;
case '3'://* Write One Page
AT91F_DBGU_Printk("\n\rPage Number:");
AT91F_DBGU_scanf("%d",(unsigned int*)&page );
start_add = ( unsigned int *) AT91C_IFLASH + ( page * FLASH_PAGE_SIZE_LONG);
AT91F_DBGU_Flash((unsigned int)start_add,FLASH_PAGE_SIZE_LONG);
if (AT91F_Flash_Write((unsigned int)start_add ,FLASH_PAGE_SIZE_BYTE ,(unsigned int*) &buff) ) AT91F_DBGU_Printk("Flash has been written correctly\n\r");
else AT91F_DBGU_Printk("Flash has not been written correctly !\n\r");
AT91F_Print_Memory((unsigned int)start_add,FLASH_PAGE_SIZE_BYTE/4);
AT91F_DBGU_Printk("\n\rMenu:\n\r1) Flash Info\n\r2) Dump Entire Flash\n\r3) Write One Page\n\r4) Write Several Pages\n\r5) Erase Entire Flash\n\r6) Set Lock Bit\n\r7) Clear Lock Bit\n\r8) Clear All Lock Bits\n\r9) Set All Lock Bits\n\rA) Set Security Bit\n\rEnter:");
break;
case '4'://* Write Several Pages
AT91F_DBGU_Printk("\n\rAddress (Hex value):");
AT91F_DBGU_scanf("%X",(unsigned int*)&size );
start_add = (unsigned int *)size;
AT91F_DBGU_Printk("\n\rSize in byte (Dec value):");
AT91F_DBGU_scanf("%d",(unsigned int*
没有合适的资源?快使用搜索试试~ 我知道了~
AT91SAM7S256-BasicFlash
共94个文件
html:35个
entries:9个
repository:9个
需积分: 9 8 下载量 30 浏览量
2009-03-21
00:39:06
上传
评论 1
收藏 327KB RAR 举报
温馨提示
AT91SAM7S256-BasicFlash-IAR4_30A-1_21.rar
资源推荐
资源详情
资源评论
收起资源包目录
AT91SAM7S256-BasicFlash-IAR4_30A-1_21.rar (94个子文件)
AT91SAM7S256-BasicFlash-IAR4_30A-1_21
AT91SAM7S-BasicFlash
compil
SrcIAR
Cstartup_SAM7.c 4KB
Interrupt.s79 2KB
Cstartup.s79 10KB
Flash.h 3KB
Board.h 3KB
fill32.s79 1KB
Flash.c 11KB
cvs
Entries 312B
Repository 42B
Root 58B
tools.html 17KB
Flash.ewd 25KB
BasicSAM7.eww 159B
sam7.html 270B
Flash.ewp 45KB
download.html 25KB
resource
at91SAM7S256_NoRemap.xcl 5KB
SAM7_RAM.mac 10KB
SAM7.mac 8KB
at91SAM7S256_64KRAM.xcl 5KB
cvs
Entries 206B
Repository 44B
Root 58B
cvs
Entries 312B
Entries.Log 34B
Repository 35B
Root 58B
fill.ewp 20KB
main.html 438B
html
Flashinfo.xls 14KB
orange_degrade_top.gif 1KB
basic.html 9KB
cvs
Entries 213B
Repository 27B
Root 58B
AT91_title.html 396B
src
main.c 2KB
debug.c 12KB
cvs
Entries 84B
Repository 26B
Root 58B
cvs
Entries 50B
Entries.Log 43B
Repository 22B
Root 58B
include
ioat91sam7s256.ddf 102KB
AT91SAM7S256.html 350B
html
AT91SAM7S256_RSTC.html 12KB
AT91SAM7S256_idx.html 398B
AT91SAM7S256_PMC.html 46KB
AT91SAM7S256_RTTC.html 10KB
AT91SAM7S256_UDP.html 57KB
lib_AT91SAM7S256_h.html 310KB
AT91SAM7S256_WDTC.html 9KB
AT91SAM7S256_SSC.html 61KB
AT91SAM7S256_PWMC.html 23KB
AT91SAM7S256_USART.html 80KB
AT91SAM7S256_PIO.html 29KB
AT91SAM7S256_MC.html 29KB
AT91SAM7S256_TWI.html 27KB
AT91SAM7S256_list.html 6KB
AT91SAM7S256_PDC.html 21KB
AT91SAM7S256_AIC.html 23KB
AT91SAM7S256_search.html 180KB
AT91SAM7S256_CKGR.html 9KB
AT91SAM7S256_TC.html 65KB
AT91SAM7S256_SYS.html 25KB
AT91SAM7S256_ADC.html 61KB
AT91SAM7S256_VREG.html 4KB
AT91SAM7S256_PITC.html 9KB
AT91SAM7S256_SPI.html 49KB
AT91SAM7S256_TCB.html 8KB
AT91SAM7S256_h.html 397KB
AT91SAM7S256_DBGU.html 43KB
AT91SAM7S256_PWMC_CH.html 20KB
cvs
Entries 2KB
Repository 19B
Root 58B
ioat91sam7s256.h 243KB
AT91SAM7S256.h 142KB
AT91SAM7S256.rdf 121KB
AT91SAM7S256_inc.h 126KB
cvs
Entries 466B
Entries.Log 14B
Repository 14B
Root 58B
lib_AT91SAM7S256.h 143KB
AT91SAM7S256.inc 119KB
AT91SAM7S256.tcl 107KB
cvs
Entries 3B
Entries.Log 47B
Repository 18B
Root 58B
Entries.Static 0B
共 94 条
- 1
资源评论
dreamatea
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功