2013/10/06

SmartFusion (A2F500-FGG256) MSS 프로그램 소스-1

#include "mss_uart.h"
#include &ltstdio.h&gt
#include &ltstdlib.h&gt

//#define ACTEL_STDIO_THRU_UART

#define RxBufferSize 0x20
char RxBuffer0[RxBufferSize];
uint16_t RxCounter0 = 0;

void UART0_Putch(char tmp);
uint32_t UART0_get_Number(void);
void show_Menu(void);


/* Main function */
int main(void)
{
char KeyIn;

/* Initialize and configure UART0. */
MSS_UART_init(&g_mss_uart0,MSS_UART_115200_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT);

MSS_UART_polled_tx_string(&g_mss_uart0, "Start FW -------------------------ver 0.0.1\r\n");
show_Menu();

while(1)
{
#if 1
KeyIn = UART0_get_Number();
switch(KeyIn){
case 1:
MSS_UART_polled_tx_string(&g_mss_uart0, "1. HELP : Show menu explanation\r\n");
break;
default :
MSS_UART_polled_tx_string(&g_mss_uart0, "Invalid input value\r\n");
break;
}
MSS_UART_polled_tx_string(&g_mss_uart0, "anonymous>");
#endif
}

return 0;
}

void UART0_Putch(char tmp){
g_mss_uart0.hw_reg->THR = tmp;
}

uint32_t UART0_get_Number(void){
uint32_t KeyIn, key_value, i;
uint8_t status = 0;

/* Receive a string (Max RxBufferSize bytes) from the Hyperterminal ended by '\r' (Enter key) */
do
{
status = g_mss_uart0.hw_reg->LSR;
g_mss_uart0.status |= status;
if(((status & 0x01) != 0)&&(RxCounter0 < RxBufferSize))
{
key_value = g_mss_uart0.hw_reg->RBR;
status = g_mss_uart0.hw_reg->LSR;
g_mss_uart0.status |= status;
UART0_Putch(key_value);
if(key_value == '\r'){
RxBuffer0[RxCounter0]='\0';
UART0_Putch('\n');
KeyIn = atoi(RxBuffer0);

RxCounter0 = 0;
for(i = 0; i < RxBufferSize; i++)
RxBuffer0[i] = 0;

g_mss_uart0.hw_reg->RBR;
status = g_mss_uart0.hw_reg->LSR;
g_mss_uart0.status |= status;
return KeyIn;
}
else{
RxBuffer0[RxCounter0++] = key_value;
}
}
}while((key_value != '\r')&&(RxCounter0 != RxBufferSize));


return -1;

}

void show_Menu(void){
MSS_UART_polled_tx_string(&g_mss_uart0, "1. HELP : Show menu explanation\r\n");
MSS_UART_polled_tx_string(&g_mss_uart0, "anonymous>");

}


아래와 같이 실행된다.

























이 소스를 베이스로 Fabric과 ACE를 돌려봐야긋다.