[MCU]/CANTUS2009. 12. 19. 19:10

[CANTUS EVM] UART테스트

[CANTUS EVM] UART테스트

CANTUS는 8채널의 16450호환 UART가 있다. FIFO도 16Byte가 있고.. 멋지다.



CANTUS에서 UART제어를 위해 Seial.c에 있는 U0_GetByte(), U0_PutByte()를 수정해 주면 된다.  ADChip사에서 제공되는 코드는 너무많은 기능을 제공하려다 보니 오히려 복잡하고 속도도 느려질 수 있다. 그래서 데이터시트를 보고 간단히 작성해 보았다.
#define UART0_LSR   *(volatile unsigned long*)((unsigned long)R_UART0_BASE + UART_LSR) 
#define UART0_URDR   *(volatile unsigned long*)((unsigned long)R_UART0_BASE + UART_RBR)
#define UART0_UTDR   *(volatile unsigned char*)((unsigned long)R_UART0_BASE + UART_THR)

unsigned char U0_GetByte(void)
{
 while((UART0_LSR & ULSR_DRDY))
 {
  return UART0_URDR;
 }

void U0_PutByte(unsigned char Data)
{
 while(!(UART0_LSR & ULSR_TEMP));
 UART0_UTDR = Data;
}



CANTUSPIC32 UART테스트 예제코드
#include "system.h"
#include "serial.h"

int main()
{
 SystemInit();

 Led1Init();
 Led1On();
 
 Led2Init(); 
 Led2Off();

 U0_Init(BAUD_115200);
 DebugPrint("Cantus EVM1\r\n");
 
  while(1)
 {
  if(U0_IsGetByte())
  {
   switch(U0_GetByte())
   {
    case '0':
     DebugPrint("Led1 Off\r\n");
     Led1Off();
     break;
    case '1':
     DebugPrint("Led1 On\r\n");     
     Led1On();
    break;
   } 
  }

Posted by nexp
TAG CANTUS

댓글을 달아 주세요

[MCU]/CANTUS2009. 12. 17. 15:00

[CANTUS EVM] GPIO를 이용한 LED테스트

[CANTUS EVM] GPIO를 이용한 LED테스트

CANTUS의 GPIO는 아래 그림과 같은 구조이다.
구조는 그리 복잡하지 않은데... 한가지 아쉬운점은 Data 레지스터가 HIGH레지스터, LOW레지스터로 나누어져 있어 데이터버스처럼 쓰기가 효율적이지 못한점과 토글할때도 번거러운점이 있다.



GPIO기능설정
각포트는 여러기능을 할 수 있기 때문에 먼저 PAFx레지스터에 GPIO모드로 사용할것을 설정하는 것이 필요하다.




GPIO방향 설정
GPIO의 입출력 방향 설정은 DIR레지스터로 설정 가능하다.

#define Led1Init()     Sbi(*R_PAF5, (3<<(2*4)));Sbi(*R_P5oDIR, LED1_BIT)


[CANTUS EVM] 보드의 LED회로도



[CANTUS EVM] LED 드라이버 코드
//-----------------------------------------------------------------------------
// On board LED
#define LED1_BIT     BIT4
#define LED1_PORT

#define Led1Init()     Sbi(*R_PAF5, (3<<(2*4)));Sbi(*R_P5oDIR, LED1_BIT)
#define Led1Off()     sbi(*R_P5oHIGH, LED1_BIT)
#define Led1On()     cbi(*R_P5oLOW, LED1_BIT)

#define LED2_BIT     BIT5
#define LED2_PORT

#define Led2Init()     Sbi(*R_PAF5, (3<<(2*5)))F;Sbi(*R_P5oDIR, LED2_BIT)
#define Led2Off()     sbi(*R_P5oHIGH, LED2_BIT)
#define Led2On()     cbi(*R_P5oLOW, LED2_BIT)
//-----------------------------------------------------------------------------
Posted by nexp
TAG CANTUS

댓글을 달아 주세요

[MCU]/CANTUS2009. 12. 17. 12:30

[CANTUS EVM] 개발환경 설정

[CANTUS EVM] 개발환경 설정



ADC사의 CANTUS는 국내에서 개발한 AE32000C 코어를 가진  32bit MCU이다. ADC사에서  EISC Studio 라는 컴파일러, 디버거, 에디터 기능을 하는 IDE 프로그램을 제공한다.

ADC사 홈페이지에서 최신 버전을 다운로드 받을 수 있다.

설치하고 프로그램을 실행하여 새로운 프로젝트를 생성해 보자



코어 및 프로젝트이름을 기입하고 새로운 프로젝트를 생성한다.



새로운 프로젝트를 생성하면 기본들이 생성된다. 각 폴더별로 프로젝트에 추가하면 된다.


1)Source File
 - strt.s(ADC사 제공), main.c, system.c

2)LinkerScript
-cantus.ld(ADC사 제공)
 -> 자신의 환경에 따라 약간의 수정이 필요하다. 메모리 사이즈 및 생성될 메모리 위치정도.. 제공되는 코드는 sdk\startup\ 폴더에 있는데, 예제마다 수정이 필요할 수도 있기 때문에 나는 프로젝트 폴더 내로 옮겼다.

3)Static Library Files
-libcantus.a(ADC사 제공)
-> 반드시 필요한것은 아니지만 사용하면 편리한점이 있다. 물론 오버헤드는 있다. 미리 컴파일된 라이브러리 이기 때문에 보드에 따라 수정이 필요하다. 프로젝트파일이 제공되기 때문에 수정해서 다시 컴파일 하면 된다.















Project옵션
옵션은 별다른 설정이 필요 없고 디렉토리만 설정해 주면 된다.




프로젝트 폴더 구조
ADC사에서 제공하는 폴더 구조는 용량도 크고(모든자료가 포함되어 있어 90M 가까이된다.), 기존 코드와 호환을 위해 약간의 변경이 필요하다.
프로젝트폴더 상위에 cantus폴더를 만들어서 필요한것만 복사하니 3M 정도 밖에 되지 않는다.




빌드
프로젝트 셋업이 되면 메인 코드 작성해서 컴파일 하면 에러없이 컴파일 되는것을 확인할 수 있다.
무료로 제공되는 IDE환경이지만 간단하고 깔끔하게 동작한다.
Posted by nexp
TAG CANTUS

댓글을 달아 주세요

[MCU]/CANTUS2009. 12. 12. 22:56

[CANTUS EVM] GPIO속도 측정 테스트

[CANTUS EVM] GPIO속도 측정 테스트


 
CANTUS는 96MIPS의 5단 파이프라인으로 고속이라고 한다.  GPIO토글속도 테스트로 성능측정을 해 보았다.

CANTUS의 GPIO는 GPIO Ser/Reset레지스터가 따로 존재 하므로 우선 비트 On/Off로 테스트 해본다.

150ns - 3.2Mhz가 출력된다. 96MIPS 속도라고 하기에는 페리가 너무 느리다.
int main()
{
 SystemInit();

 Led1Init();
 
 while(1)
 {
  *R_P5oHIGH |= BIT4;
  *R_P5oLOW |= BIT4;
 }
}

옵티마이즈 옵션을 주어 컴파일을 다시 해 보니
133ns - 3.5M  까지 나온다. 하지만 그렇게 빠르지는 않은것 같다.



단순 ON/OFF만 했을때는 39ns - 12.5Mhz 가 출력된다.
  *R_P5oHIGH = BIT4;
  *R_P5oLOW = BIT4;

클럭설정이 문제 인지.. RAM에 올려서 측정해야 하나? 아무튼 그리 고속이라는 느낌은 아닌데...
Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2009. 12. 6. 19:24

[CANTUS EVM] 보드 제작

[CANTUS EVM] 보드 제작
CANTUS는 ADChip사의 32비트 AE32000코어를 탑제한 MCU이다. 5단 파이프 라인의 EISC구조라고 한다. 512K Flash, 80K RAM 에 96MIPS속도이고 가격은 저렴하니(쇼핑몰 기준 4500원) 사용해 볼만하다.
개인적으로는  한국에서 MCU코어 가진 회사가 그리 많지 않은데 계속 발전해 나갔으면 한다.



일단 샘플로 받은 CANTUS 128로 조립해 보았다. 기본 형태는 [M-Type EVM] 형태로 제작했다.



CANTUS는 기본적으로 SDIO를 지원하므로 고속으로 SD카드를 엑세스할 수 있다. 뒷면에 SDIO방식의 T-Flash를 연결할 수 있도록 했다.





CANTUS 512확장 테스트 보드 - 이더넷(W5100) 모듈 테스트



TFT LCD 확장 테스트 모듈
LCD_EXP_EVM 보드 에 연결하여 TFT LCD를 테스트 할 수 있다.

Posted by nexp

댓글을 달아 주세요