후 성공한지는 꽤 오랜시간이 지났지만
이넘의 디바이스 드라이버가 말썽 ㅜㅜ
거기다 다른 일들이 겹치는 바람에 ㅠㅠ
(어제는 그동안 작업했던 하드가 날라가 버렸다. OTL)
그나마 subversion을 통해 백업해둔 것이 있어서 다행
그래서 더 날리기전에 웹어 올리려겠다.
서론이 넘길군
FreeRTOS Porting 단계
1. FreeRTOS
FreeRTOS
+- Demo
| +- AVR_ATMega323_WinAVR
| +- Common
|
+- License
|
+- Source
|
+- TraceCon
FreeRTOS 소스를 다운 받아 압축을 풀면 위와 같은 구조를 볼 수 있다.
2. FreeRTOS -> Demo -> AVR_ATMega323_WinAVR의 FreeRTOSConfig.h 파일을 연다.
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 8000000 )
윗 줄을 다음 아래 줄로 수정한다. ( Board의 Clock 수정 8MHz -> 4MHz )
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 4000000 )
3. FreeRTOS 내부에 있는 Serial code는 ATmega128에서 정상동작하지 않는다. 특히 이번 제작보드는
ATmega128에서도 UART1번을 사용하므로 다음과 같은 소스를 코딩한다.
+------------------------------------------파일명 AT128_Serial.c------------------------------------------+
#ifdef GCC_MEGA_AVR
/* EEPROM routines used only with the WinAVR compiler. */
#include <avr/eeprom.h>
|#endif
#define KHz 4000
void UART1_Init(int SPEED);
void UART1_tx(unsigned char data);
/*****************************************************************************************/
/* UART0_TX() */
/*****************************************************************************************/
void UART1_Init(int SPEED)
{
PORTB |= 0x01;
UBRR1H = 0x00;
//UBRR1L = (unsigned)( KHz * 1000 / (16 * SPEED) ) - 1; // 0x19
UBRR1L = 0x19;
UCSR1A = 0x00;
UCSR1B = (1<<RXEN1) | (1<<TXEN1);
UCSR1C = (3<<UCSZ00);
}
void UART1_tx(unsigned char data)
{
while( !(UCSR1A & (1<<UDRE1)) ) // UDR0의 송신버퍼가 비어있음..새로운 송신 데이터 받을준비 됨
;
UDR1 = data; // UDR0 버퍼에 저장
}
+---------------------------------------------------------------------------------------------------------+
4. FreeRTOS 소스 자체에는 Serial code가 있다. 소스 부분에 다음 선언문을 추가하여 ATmega323 register명을 ATmega128
register명에 맞게 수정한다.( 이 소스를 컴파일안하면 make 과정에서 에러가 생긴다. 괜히 긁어 부스럼 만들지 말고,
register명만 수정해서 편하게 쓰자 ㅡㅡ;)
+----------------------------------------------+
#define ATMEGA128
#ifdef ATMEGA128
#define UCSRB UCSR1B
#define UCSRC UCSR1C
#define UBRRL UBRR1L
#define UBRRH UBRR1H
#define UDR UDR1
#endif
+----------------------------------------------+
5. 컴파일하기전 make 파일을 수정하자
MCU = atmega323 부분을 MCU = atmega128 와 같이 수정하여한다.
SRC = \
main.c \
ParTest/ParTest.c \
serial/serial.c \
부분에 AT128_Serial.c \를 추가하여 새롭게 코딩한 소스를 같이 컴파일해준다
--출처 http://skyoon.tistory.com/search/freertos
'OS 포팅' 카테고리의 다른 글
FreeRtos 일기 01/20 (0) | 2013.06.20 |
---|---|
OS 종류 (0) | 2013.06.20 |
FreeRTOS 분석 - 고급운영체제 (0) | 2013.06.20 |
FreeRTOS API (0) | 2013.06.20 |
FreeRTOS 구조 (0) | 2013.06.20 |