[TI]/LuminaryMicro2009. 1. 6. 18:06

[LuminaryMicro] EWARM 개발환경 설정 - 디렉토리 옵션

[LuminaryMicro] EWARM 개발환경 설정 - 디렉토리 옵션

$PROJ_DIR$\
$PROJ_DIR$\..\
$PROJ_DIR$\..\..\01_drv\

내가 자주 사용하는 옵션

$PROJ_DIR$\
$PROJ_DIR$\..\
$PROJ_DIR$\..\inc\
$PROJ_DIR$\..\01_drv\util\
$PROJ_DIR$\..\01_drv\
$PROJ_DIR$\..\01_drv\lcd\
$PROJ_DIR$\..\01_drv\driverlib\



$PROJ_DIR$\lm3s_evm_ew5.icf
Posted by nexp
TAG EWARM, IAR-AMR

댓글을 달아 주세요

[TI]/LuminaryMicro2008. 12. 30. 15:40

IAR Systems, Luminary Micro MCU용 무료 개발 툴 발표


IAR Systems사는 Luminary Micro사의 Stellaris 계열인 100, 300과 600 시리즈 등 3가지 MCU 시리즈를 위한 자사의 IAR

Embedded Workbench KickStart 판을 무료로 이용할 수 있다고 발표했다. KickStart 판은 32Kbyte 컴파일러를 갖추고 있는데 이는 현재 시장에 나와 있는 19개 Stellaris MCU 중 14개에 사용할 수 있는 칩 탑재형 플래시 모두를 완벽하게 지원한다.

Luminary Micro사는 ARM Cortex-M3 프로세서 기반 MCU를 설계 및 출시하고 판매하는 팹리스 반도체 회사로서 내장형 개발자들에게 최초로 1달러짜리 ARM을 제공한 회사다. 이 회사는 현재 100, 300과 최고 32킬로바이트 범위의 칩 탑재형 플래시를 갖춘 600과 64킬로바이트 칩 탑재형 플래시를 가진 800 계열 등 4 계열에 사용할 수 있는 19가지 Stellaris MCU를 가지고 있다. 이 KickStart 공개로 64킬로바이트 플래시를 가진 Stellaris 800 계열 칩만이 완전한 기능을 가진 무료 상업용 등급의 평가 툴로 충분히 지원되지 않고 있다.

Posted by nexp

댓글을 달아 주세요

[TI]/LuminaryMicro2008. 11. 16. 17:52

Luminary Micro 사용시 printf를 사용하시 문제점

Luminary Micro 사용시 printf를 사용하시 문제점

Luminary Micro 사용시 기본예제를 수정하여 printf를 사용하면 문제가 발생한다.
기본 예제에서 제공하는 blinky-ewarm4.xcl 파일에는 HEAP 영역이 할당되어 있지 않아서 파일을 수정했다.
 
-> ewarm4_flash.xcl HEAP영역 설정
//*************************************************************************
// Stack and heap segments.
//*************************************************************************

-D_CSTACK_SIZE=128
-D_HEAP_SIZE=128

-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND

추가하고나니 printf가 정상 동작한다.

그리고 printf에서 Buffer 사이즈도 늘렸다.
void U0_printf(char *fmt,...)
{
    va_list ap;
    unsigned char string[64];


추가로 Sysetm Stack크기도 변경해 두어야 한다.
startup_ewarm4.c 에서 pulStack 변수 크기를 바꾸니 정상 동작한다.
//static unsigned long pulStack[64];
static unsigned long pulStack[128];


IAR에서 printf full옵션으로 설정하면 용량이 너무 크다 10kbyte이상 커진다. 그렇다고 Tiny는 기능이 너무 작고.. 그나마 Small으로 설정하면 적당히 printf를 사용할 수 있고 용량도 적절한것 같다.

Posted by nexp

댓글을 달아 주세요

[TI]/LuminaryMicro2008. 11. 6. 16:56

Luminray Micro GPIO 관련자료

Luminray Micro GPIO 관련자료





Luminary Micro GPIO 특징
아주 특별한것은 없지만 5V호환 가능다는것, 드라이버 전류가 8mA로 적다는것 정도.
Programmable control for GPIO interrupts:
 - Interrupt generation masking
 - Edge-triggered on rising, falling, or both
 - Level-sensitive on High or Low values
5-V-tolerant input/outputs
Bit masking in both read and write operations through address lines
Programmable control for GPIO pad configuration:
 - Weak pull-up or pull-down resistors
 - 2-mA, 4-mA, and 8-mA pad drive
 - Slew rate control for the 8-mA drive
 - Open drain enables
 - Digital input enables

모든 GPIO는 디폴트 값으로 입력모드(GPIODIR=0 and GPIOAFSEL=0)로 설정된다.
예외) JTAG 핀 (PB7 and PC[3:0]. (GPIOAFSEL=1))


GPIO 블록도




주요 레지스터
GPIODIR
: 입출력 방향 설정
0: 입력
1: 출력

GPIODATA :  입출력 데이터

GPIOAFSEL : GPIO 핀 모드 설정
 0: Software control of corresponding GPIO line (GPIO mode).
 1: Hardware control of corresponding GPIO line (alternate hardware function).


초기화 방법
1) GPIO 클럭 초기화
GPIO에 클럭을 공급하기 위해 RCGC2 레지스터를 설정해야 한다.
Luminary Micro 제공함수 SysCtlPeripheralEnable()를 이용하면 쉽게 설정 가능하다.

ex) SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

2)GPIO 입출력 방향 설정 및 모드 설정
역시 GPIOPinTypeGPIOOutput() 함수를 이용하면 쉽게 초기화 가능하다.

ex) GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, 0xFF);


GPIO Driver 정의

//LED Driver
#define LED1_BIT          BIT0
#define LED1_PORT      GPIO_PORTB_DATA_R
#define Led1Off()          Sbi(LED1_PORT, LED1_BIT)
#define Led1On()          Cbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()    Tbi(LED1_PORT, LED1_BIT)

#define Led1Init()          SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);\
                                  GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, LED1_BIT)

 

Luminary Micro GPIO제어 예제 - LED제어

void main()
{
 SystemInit(); 

 Led1Init();
 Led1On();

 while(1)
 {
  Led1Toggle();
  Delay(500)
 }
}



GPIO 제어에 대한 고찰
GPIO 제어용 함수를 이요하면 쉽게 제어 가능하지만 함수이용 자체가 오버헤드가 걸린다. 
GPIOPinWrite() 함수 사용시 코드
17            GPIOPinWrite(GPIO_PORTB_BASE, BIT0, 0);
   \                     ??main_1:
   \   0000002C   0022               MOVS     R2,#+0
   \   0000002E   0121               MOVS     R1,#+1
   \   00000030   2046               MOV      R0,R4
   \   00000032   ........           BL       GPIOPinWrite
   \   00000036   F9E7               B.N      ??main_1


define 문으로 정의시 코드
16            Led1Off();
   \   0000002C   0168               LDR      R1,[R0, #+0]
   \   0000002E   41F00101           ORR      R1,R1,#0x1
   \   00000032   FAE7               B.N      ??main_1
   \                     ??main_0:

Posted by nexp

댓글을 달아 주세요

  1. 홈키파

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.04.29 14:17 [ ADDR : EDIT/ DEL : REPLY ]

[TI]/LuminaryMicro2008. 11. 6. 16:55

Luminary Micro 클럭설정 관련 자료

Luminary Micro 클럭설정 관련 자료

ex) Lib함수 이용 클럭 설정
// Set the clocking to run directly from the crystal.
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);


RCGC2 (Run Mode Clock Gating Control Register 2 , offset 0x108)
ex) GPIO 클럭 설정
    SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
 
 
 
 
 
//*****************************************************************************
// The following are defines for the bit fields in the SYSCTL_RCGC2 register.
//*****************************************************************************
#define SYSCTL_RCGC2_GPIOH      0x00000080  // Port H Clock Gating Control.
#define SYSCTL_RCGC2_GPIOG      0x00000040  // Port G Clock Gating Control.
#define SYSCTL_RCGC2_GPIOF      0x00000020  // Port F Clock Gating Control.
#define SYSCTL_RCGC2_GPIOE      0x00000010  // Port E Clock Gating Control.
#define SYSCTL_RCGC2_GPIOD      0x00000008  // Port D Clock Gating Control.
#define SYSCTL_RCGC2_GPIOC      0x00000004  // Port C Clock Gating Control.
#define SYSCTL_RCGC2_GPIOB      0x00000002  // Port B Clock Gating Control.
#define SYSCTL_RCGC2_GPIOA      0x00000001  // Port A Clock Gating Control.
Posted by nexp

댓글을 달아 주세요