embeded/Cortex-M3 Ti2012. 2. 5. 22:08
driverlib 관련 분석 내용 / uart 예제사용
전반적으로 초기화 설정을 보면 무언가.. 중복되도록 설정하는 느낌?
특히 UART의 경우에는 몇단계를 통해서 설정을 하는 것을 보면...

함수설명
extern void SysCtlClockSet(unsigned long ulConfig); // 클럭설정을 하도록 함.
 

extern void SysCtlPeripheralEnable(unsigned long ulPeripheral); // 포트를 사용하도록 설정함
extern void GPIOPinConfigure(unsigned long ulPinConfig); // GPIO로 쓸지 하드웨어 내장 기능을 쓸지 설정함

extern void GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins); // 해당 포트의 해당핀을 입력용으로 설정
extern void GPIOPinTypeGPIOOutput(unsigned long ulPort, unsigned char ucPins); // 해당 포트의 해당핀을 출력용으로 설정
extern void GPIOPadConfigSet(unsigned long ulPort, unsigned char ucPins, unsigned long ulStrength, unsigned long ulPadType);
                                                                                  // 해당 포트의 해당핀에 대한 GPIO 드라이브 전류와 pull-up / open-drain 설정
 

예제설명
int main(void)
{
    char cThisChar;

    // 시스템 클럭설정
    SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
    // UART0 기능을 사용하도록 함
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    // UART 핀이 포함된 GPIOA 포트를 사용하도록 함
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    // GPIO A의 0번 핀을 U0 RX로 사용하도록 함
    GPIOPinConfigure(GPIO_PA0_U0RX);
    // GPIO A의 1번 핀을 U0 TX로 사용하도록 함
    GPIOPinConfigure(GPIO_PA1_U0TX);
    // GPIO A의 0번 1번 핀을 UART에 할당함
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
    // UART의 클럭소스와 Baudrate등을 설정함
    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
                       (UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|UART_CONFIG_PAR_NONE));
    do
    {
        // UART0로 부터 1문자를 받아옴(blocking 방식)
        cThisChar = UARTCharGet(UART0_BASE);
        // 받아온 문자을 UART0로 출력함
        UARTCharPut(UART0_BASE, cThisChar);
    } while((cThisChar != '\n') && (cThisChar != '\r'));

    return(0);
}

'embeded > Cortex-M3 Ti' 카테고리의 다른 글

uart 인터럽트 / 폴링 충돌  (0) 2012.06.18
Ti lm3s1968 arm cortex m3 i2c  (0) 2012.02.20
Cortex-M3 인터럽트 관련 문서  (0) 2012.01.31
Cortex-M3 예제소스  (0) 2012.01.27
Cortex-M3 LM3S1968 Evaluation board  (0) 2012.01.27
Posted by 구차니
embeded/Cortex-M3 Ti2012. 1. 31. 17:32
으헝헝 이런걸 찾고 있었던 거야 ㅠ.ㅠ

아무튼 중요한 내용은,
Cortex-M3 계열은 인터럽트 발생후 리셋하지 않기 때문에 수동으로 리셋을 해주어야 한다는 점인듯?


[링크 : http://skean.tistory.com/34]
[링크 :  http://eoworld.tistory.com/entry/LM3S8962-interrupt ]
  [링크 : http://www.cyworld.com/gooble/4856690] << 원본?

'embeded > Cortex-M3 Ti' 카테고리의 다른 글

Ti lm3s1968 arm cortex m3 i2c  (0) 2012.02.20
TI stellarisware / driverlib 기본설정 (uart예제)  (4) 2012.02.05
Cortex-M3 예제소스  (0) 2012.01.27
Cortex-M3 LM3S1968 Evaluation board  (0) 2012.01.27
ARM Cortex-M3 ISR 등록 방법  (0) 2012.01.20
Posted by 구차니
embeded/Cortex-M3 Ti2012. 1. 27. 19:49
Driverlib 사용하는 방법과 핀을 직접 설정하는 예제비교이다.

원래 stellarisware에는 핀을 직접 설정하는 blinky 라는 예제가 있고
그걸 어떤 분이 driverlib을 사용하는 방식으로 변경한 소스이다.

(물론 작동은 안될지도?)

[링크 : http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/t/123089.aspx]
Posted by 구차니
embeded/Cortex-M3 Ti2012. 1. 27. 10:53
제목이 모호하지만 기분탓으로 넘기고

일단 H-JTAG
LM Flash Programmer
MDK(KEIL) 을 이용한 플래시 read/write 관련 내용이라고 요약!

H-JTAG LPT를 이용한 READ
주의 : Evaluation board가 hibernate 모드면 못 읽어옴. 보드가 살아있는지 확인할 것!
보충 : USB 로 연결되어도 문제는 없음

Step 1. Settings - USB/LPT Selection - LPT 선택하고
           아래와 같이 장비명이 UNKNOWN에서 CORTEX-M3로 바뀌면 정상인식!


Step 2. F 아이콘 눌러 Flasher를 실행, 칩을 선택한다.
          칩모델은 LUMINARY - LMS1968


Step 3. Ext XTAL은 몰라서 그냥 1Mhz로 찍고(어짜피 1 이하로 입력하면 배쨈 -_-)
           INIT / PGM TCK는 그냥 안전빵으로 125KHz로 설정 


Step 4. 가장 아래의 칩 아이콘 눌러주고(Entire Chip 아이콘) Read를 눌러 파일로 저장!


Step 5. 만약 보드가 hibernate 모드라면 아래와 같은 에러가 발생한다.


          정상적으로 연결되었다면, 아래와 같이 읽어옴!


MDK를 이용한 USB 시리얼 JTAG
주의 : 읽어 오는것에 대한 설정은 없음.
보충 : 아직 안써봤음 -_-

Step 1. Stellaris ICDI 로 선택하고 Settings 누르면 


Step 2. 정상적으로 FTDI 드라이버가 설치 되어 있다면, 아래와 같이 Attached Devices에 뜨게 된다.


LM Flash Programmer - USB 를 이용한 ERASE / WRITE
주의 : Evaluation board에 패러럴과 USB JTAG 둘다 연결되면 인식을 못함
보충 : -

Step 1. LM3S1968 Evaluation Board로 설정


Step 2. 위에서 빼낸 bin 파일 선택하고 Program 누르면 3초 정도 내에 구워진 기분?


Step 3. Erase는 1초도 안걸린 기분?
---
2012.1.28 추가
"Upload Flash Contents to a .bin file" 에 파일 이름을 적고 entire Flash를 눌러준후 Upload를 누르면 파일로 저장된다.
---


Step 4. 이건 아직 쓸데 없는듯?


머.. 겁나서 읽어서 쓰기도 손이 덜덜덜 ㅠ.ㅠ
안에 들어있는거 날아가면 어떡해 ㅠ.ㅠ
막 이러면서 쑈함 -_-
Posted by 구차니
embeded/AVR (ATmega,ATtiny)2012. 1. 22. 21:12
매번 헷갈리는게 이 핀이 위에서 보는건지 아래서 보는건지 알수가 없다는거 -_-
아무튼, 여러개를 동시에 보니 항상 같은 배열이고, 5번 쪽에 구멍이 뚫린것을 봐서는
보드 기준 위에서 아래로 내려다 보고 만든 핀 배열인 것으로 생각이 된다.
만약 커넥터측의 회로를 만들어서 떔질을 한다면 아래에서 위로 보고 좌우가 뒤집히게 결선을 해야 할려나?



[링크 : http://www.us-technology.co.kr/product/doc/isp.pdf]

 

----
조립되어 있는(?) 케이블들을 보니 커넥터의 방향을 동일한 쪽으로 해주었다.
아~ 별거 아니지만 이렇게 연장을 하는거구나 라는걸 깨달은 바보 같은 구차니군 ㅠ.ㅠ

 

'embeded > AVR (ATmega,ATtiny)' 카테고리의 다른 글

0으로 나누면 어떻게 될까?  (0) 2012.07.04
AVR ATmega128 i2c  (0) 2012.02.20
AVT FFT + DAC = 보청기?  (0) 2012.01.18
AVR TWI 예제  (0) 2012.01.11
AVR EEPROM / CODE section 관련  (0) 2012.01.03
Posted by 구차니
embeded/Cortex-M3 Ti2012. 1. 20. 10:40
Atmel avr에만 너무 찌들었나 -_-
cortex m3 관련 구조는 너무 달라서 이리저리 헤매는 중 ㅠ.ㅠ

stellarisware 데모 코드들을 뜯어보고 이리저리 보니
avr이 아래와 같이 ISR() 식으로 정해진 코드로 한다고 한다면
#include <avr/interrupt.h>

ISR(ADC_vect)
{
    // user code here
} 

arm ti cortex m3 는 초기화 코드중 isr_vector 섹션에 들어갈 변수에 함수 포인터를 등록해주는 식으로 구성된다.
말을 쉽게 하자면, 원하는 함수 명으로 대충 void func(void) 식으로 만들고 등록만 해주면 땡~
__attribute__ ((section(".isr_vector")))
void (* const g_pfnVectors[])(void) =
{
    (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
                                            // The initial stack pointer
    ResetISR,                               // The reset handler
    NmiSR,                                  // The NMI handler
    FaultISR,                               // The hard fault handler
    IntDefaultHandler,                      // The MPU fault handler
    IntDefaultHandler,                      // The bus fault handler
    IntDefaultHandler,                      // The usage fault handler
    0,                                      // Reserved
    0,                                      // Reserved
    0,                                      // Reserved
    0,                                      // Reserved
    IntDefaultHandler,                      // SVCall handler
    IntDefaultHandler,                      // Debug monitor handler
    0,                                      // Reserved
    IntDefaultHandler,                      // The PendSV handler
    IntDefaultHandler,                      // The SysTick handler
    IntDefaultHandler,                      // GPIO Port A
    IntDefaultHandler,                      // GPIO Port B
    IntDefaultHandler,                      // GPIO Port C
    IntDefaultHandler,                      // GPIO Port D
    IntDefaultHandler,                      // GPIO Port E
    IntDefaultHandler,                      // UART0 Rx and Tx
    IntDefaultHandler,                      // UART1 Rx and Tx
    IntDefaultHandler,                      // SSI0 Rx and Tx
    IntDefaultHandler,                      // I2C0 Master and Slave
    IntDefaultHandler,                      // PWM Fault
    IntDefaultHandler,                      // PWM Generator 0
    IntDefaultHandler,                      // PWM Generator 1
    IntDefaultHandler,                      // PWM Generator 2
    IntDefaultHandler,                      // Quadrature Encoder 0
    IntDefaultHandler,                      // ADC Sequence 0
    IntDefaultHandler,                      // ADC Sequence 1
    IntDefaultHandler,                      // ADC Sequence 2
    IntDefaultHandler,                      // ADC Sequence 3
    WatchdogIntHandler,                     // Watchdog timer
    Timer0IntHandler,                       // Timer 0 subtimer A
    IntDefaultHandler,                      // Timer 0 subtimer B
    Timer1IntHandler,                       // Timer 1 subtimer A
    IntDefaultHandler,                      // Timer 1 subtimer B
    IntDefaultHandler,                      // Timer 2 subtimer A
    IntDefaultHandler,                      // Timer 2 subtimer B
    IntDefaultHandler,                      // Analog Comparator 0
    IntDefaultHandler,                      // Analog Comparator 1
    IntDefaultHandler,                      // Analog Comparator 2
    IntDefaultHandler,                      // System Control (PLL, OSC, BO)
    IntDefaultHandler,                      // FLASH Control
    IntDefaultHandler,                      // GPIO Port F
    IntDefaultHandler,                      // GPIO Port G
    IntDefaultHandler,                      // GPIO Port H
    IntDefaultHandler,                      // UART2 Rx and Tx
    IntDefaultHandler,                      // SSI1 Rx and Tx
    IntDefaultHandler,                      // Timer 3 subtimer A
    IntDefaultHandler,                      // Timer 3 subtimer B
    IntDefaultHandler,                      // I2C1 Master and Slave
    IntDefaultHandler,                      // Quadrature Encoder 1
    IntDefaultHandler,                      // CAN0
    IntDefaultHandler,                      // CAN1
    IntDefaultHandler,                      // CAN2
    IntDefaultHandler,                      // Ethernet
    IntDefaultHandler                       // Hibernate
}; 

void
ResetISR(void)
{
    //
    // Jump to the CCS C Initialization Routine.
    //
    __asm("    .global _c_int00\n"
          "    b.w     _c_int00");
}

static void
IntDefaultHandler(void)
{
    //
    // Go into an infinite loop.
    //
    while(1)
    {
    }
} 

[링크 : http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/t/85136.aspx#294202]
Posted by 구차니
embeded/AVR (ATmega,ATtiny)2012. 1. 18. 21:31
Atmega128 에 내장된 녀석은 ADC 뿐이며 그것도 10bit 밖에 안된다.


윈도우 녹음기에서 미리설정된 "전화 음질"만 해도 16bit 모노이다 -_-


일단 AVR에서 FFT 연산이 거의 실시간에 가능하다고 해도
전화 음질만도 못한 녀석이어서는 좀.. 안습?

[링크 : http://www.micombox.com/index.php?document_srl=223459]

    [링크 : http://elm-chan.org/works/akilcd/report_e.html] << 아무튼 FFT + LCD 예제

[링크 : http://www.jjj.de/fft/fftpage.html]

인터넷 찾아보니, MAX195 / MAX542 라는 외부 ADC/  DAC 를 구매해서 했다는데
가격을 찾아보니 이거머.... ADC야 만원 미만이지만 DAC는 5만원 정도 -_-
I've used MAX195 as ADC and MAX542 as DAC. Sampling frequency is 24kHz
[링크 : http://www.youtube.com/watch?v=BNmr3Sd7UZc]  



머.. 간단하고 성급하게 결론을 내리자면 AVR에 내장된 ADC로는 조금 많이 아쉬운 성능.
그리고 DAC는 드럽게 비싸니 이 프로젝트는 심각히 고심을 -_-

---
ATxmega 시리즈에는 12bit ADC / DAC가 내장되어 있다.
12bit가 충분하다면 ATxmega 칩도 고려 해볼만 할 듯 

'embeded > AVR (ATmega,ATtiny)' 카테고리의 다른 글

AVR ATmega128 i2c  (0) 2012.02.20
AVR ISP 핀 순서  (0) 2012.01.22
AVR TWI 예제  (0) 2012.01.11
AVR EEPROM / CODE section 관련  (0) 2012.01.03
AVR ATmega용 JTAG과 AVR32 호환성?  (0) 2011.12.29
Posted by 구차니
embeded/Cortex-M3 Ti2012. 1. 16. 21:55
오늘 code sourcery 설치해서 낑낑대고 하는 중인데
정리가 잘되어 있는 블로그를 발견해서 링크 투척!

[링크 : http://blog.naver.com/PostList.nhn?blogId=sigsaly&from=postList&categoryNo=71]

[링크 : http://www.yagarto.de/#download]

[링크 : https://sourcery.mentor.com/GNUToolchain/subscription29095] CodeSorcery Standard ARM EABI
    [링크 : https://sourcery.mentor.com/GNUToolchain/release1994]
[링크 : https://sourcery.mentor.com/sgpp/lite/arm/portal/subscription3057?lite...  Lite 버전(컴파일러만)
    [링크 : https://sourcery.mentor.com/sgpp/lite/arm/portal/release2029
Posted by 구차니
embeded/ARM2012. 1. 16. 10:33
http://www.gnuarm.com/  에서 다운로드 받은 gcc toolchain의 압축을 풀어보니 arm-elf-gcc 라고 나오는데..
일반적으로 사용하던 툴체인이 arm-linux-gcc 여서  검색을 해보니 아래와 같은 차이점이 있다고 한다.

 The difference is that the linked output from the arm-elf-xxx toolchain is a linux loadable binary, while arm-linux-xxx outputs a kernel object (ko), which is a blob with its own linkage format (for modules), or the main kernel itself, which doesn't need a packaging format. I.e., for user space you want the final dynamically linked object to be an ELF executable, library, or shared object. For kernel space, you want the final object (kernel or module) to be in the linux-arm-kernel linkage format.

You'll notice that the intermediate objects (.o files) of both targets are probably all ELF, since that is what the toolchain is expecting.
 
[링크 : http://stackoverflow.com/questions/390099/arm-linux-gcc-vs-arm-elf-gcc]  

'embeded > ARM' 카테고리의 다른 글

lm flash example  (0) 2012.03.13
TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
winARM  (0) 2012.01.12
ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
Posted by 구차니
embeded/ARM2012. 1. 12. 19:44
winavr 처럼 윈도우용으로 만든(포팅한) avr gcc 이다.

[링크 : http://pinkwink.kr/28]
    [링크 : http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm]
[링크 : http://www.gnuarm.com/]

'embeded > ARM' 카테고리의 다른 글

TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
arm용 linux 패치  (0) 2011.06.20
Posted by 구차니