embeded/Cortex-M3 Ti2012. 9. 22. 13:02
어느날 프로그램 구으려는데 장치를 못 찾아서 배째는 현상 발생
근 1달 넘게 손을 놓고 있었는데.. -_-t
Win7으로 갈아타려고 하면서 드라이버를 설치하면서 혹시나 했는데 역시나 해결 -_-


일단 증상은 아래와 같이 MDK에서 ICDI 설정시 Attached Devices 목록에 나오지 않는다.


정상이라면 아래와 같이 Stellaris FTDI ICDI가 떠야 한다.


물론 드라이버는 정상적으로 설치되어 있겠으나
"범용 직렬 버스 컨트롤러 - Stellaris ICDI Board A"를 재설치 하니 문제없이 인식한다.
EKC-LM3S1968-CD\Tools\FTDI 의 경로에서 해당 드라이버를 수동으로 잡아서 해주면 된다.


"이 위치에서 가장 적합한 드라이버 검색" 으로 경로를 넣어줘서는 동일한 버전이라고 설치가 안되니
"검색 안 함. 설치할 드라이버를 직접 선택" 으로 경로를 넣어주고 직접 골라서 설치하면 된다.



윈7으로 갈아 타려는데 삼성 IDE  80GB 하드라서 속도가 외장 USB 플래시 만도 못한
초당 15MB/s....그냥 XP로 길이길이 고이고이 살아가련다 ㅠ.ㅠ 
Posted by 구차니
embeded/Cortex-M3 Ti2012. 7. 23. 10:44
stellraisware의 UARTStudioInit()는 간단하게 UART를 초기화 해주는 함수이다.
UARTStudioInit()의 초기화 값은 0에서 2까지 가능하며 이 내용이 합당한 정의는 존재하지 않는듯.
그리고 baud rate 라던가 인터럽트 등은 초기화 해준다고 해도
포트 자체를 사용할지에 대한 초기화는 사용자가 해주어야 한다.
그리고 115200-N-8-1로 무조건 정의되니 주의!!

만약 주변장치 초기화를 하지 않으면, 당연히(!) 아무런 것도 출력되지 않는다.

SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);

UARTStdioInit(1);
UARTprintf("Hello World\n"); 

//*****************************************************************************
//
//! Initializes the UART console.
//!
//! \param ulPortNum is the number of UART port to use for the serial console
//! (0-2)
//!
//! This function will initialize the specified serial port to be used as a
//! serial console.  The serial parameters will be set to 115200, 8-N-1.
//! An application wishing to use a different baud rate may call
//! UARTStdioInitExpClk() instead of this function.
//!
//! This function or UARTStdioInitExpClk() must be called prior to using any
//! of the other UART console functions: UARTprintf() or UARTgets().  In order
//! for this function to work correctly, SysCtlClockSet() must be called prior
//! to calling this function.
//!
//! It is assumed that the caller has previously configured the relevant UART
//! pins for operation as a UART rather than as GPIOs.
//!
//! \return None.
//
//*****************************************************************************
void
UARTStdioInit(unsigned long ulPortNum)
{
    //
    // Pass this call on to the version of the function allowing the baud rate
    // to be specified.
    //
    UARTStdioInitExpClk(ulPortNum, 115200);
} 

[링크 : http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/p/45229/160748.aspx]
Posted by 구차니
Atmega32에 0으로 나누기 해서 미치게 하면 폭발한다는데..
도대체 어찌되먹은 녀석이지 -ㅁ-

[링크 :  http://www.youtube.com/watch?v=mZ7pUADoo58]

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

attiny2313 회로도 조사  (0) 2013.07.01
attiny2313과 함께하는 지랄같은 주말 -_-  (0) 2013.06.29
AVR ATmega128 i2c  (0) 2012.02.20
AVR ISP 핀 순서  (0) 2012.01.22
AVT FFT + DAC = 보청기?  (0) 2012.01.18
Posted by 구차니
embeded/Cortex-M3 Ti2012. 6. 30. 11:17
말이 거창한데...
아무튼 스택의 크기가 작으면 함수 호출의 깊이가 깊을 경우
스택이 깨지면서 프로그램이 예측 불가능하게 죽는 문제가 발생한다.
이런 경우 해당 파일의 Stack 변수를 수정해주면 된다.
프로젝트를 생성해보지 않아서 잘 모르겠지만.. 아무튼 스택 크기는 512Byte(0x0200)으로 잡혀 있으니
용도에 맞게 설정하면 된다.

;******************************************************************************
;
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
;******************************************************************************
Stack   EQU     0x00000200   



Posted by 구차니
embeded/Cortex-M3 Ti2012. 6. 28. 22:00
기본제공 되는 예제에서 unsigned 만 삭제하면 문제없이 영하에 대해서도 작동한다.

long GetTemperature(char isCelcius)
{
	long ulADC0_Value[1];
	long ulTemp_ValueC;
	long ulTemp_ValueF;
	
	ADCProcessorTrigger(ADC0_BASE, 3);
	while(!ADCIntStatus(ADC0_BASE, 3, false))
	{
	}

	ADCSequenceDataGet(ADC0_BASE, 3, ulADC0_Value);
	ulTemp_ValueC = ((1475 * 1023) - (2250 * ulADC0_Value[0])) / 10230;
	ulTemp_ValueF = ((ulTemp_ValueC * 9) + 160) / 5;

	if(isCelcius) return ulTemp_ValueC;
	return ulTemp_ValueF;
}
Posted by 구차니
embeded/Cortex-M3 Ti2012. 6. 18. 22:52
이름은 거창한데,
간단하게 말하면 잘못 구성된 인터럽트 전송 방식에서의 문제점 이다.

void main()
{
    while(1)
        uart_handler();
}

void uart_handler()
{
    if(send != recv) flush();
}

대략 이런 구조에서 단순하게 send와 recv로 전송할 데이터가 있는지만 확인하고
flush()를 이용해 uart tx finish interrupt를 통해 데이터를 지속적으로 보내려고 할경우
uart_handler()에 의해 루프를 도는중 지속적으로 flush를 함으로서 데이터가 몇바이트 깨지거나
순서가 바뀌는 것 같은 문제가 발생하기도 한다.


간단하고 당연한(?) 해결책은
전송이 시작되었고 전송중이라는 플래그를 두는 것. 
Posted by 구차니
embeded2012. 4. 21. 13:57
KEIL 설명서를 보면 C51 C166 C251이 언급이 되는데
검색을 해보니 ARM은 그냥 ARM이라고 표기되는듯 하고

C51은 8051용
C251은 MCS251용
C166은 infenion C16x 패밀리 혹은 STMicroelectronics ST10 패밀리용 컴파일러이다.

[링크 :  http://www.keil.com/product/]
    [링크 :   http://www.keil.com/arm/mdk.asp] ARM
    [링크 :   http://www.keil.com/c51/c51.asp] 8051
    [링크 :   http://www.keil.com/c166/c166.asp] SH architecture ?
    [링크 :   http://www.keil.com/c251/c251.asp] MCS251(8051 하위호환이면 명령어 확장일뿐?)


MCS는 Micro Controller System 의 약자이고
MCS-81은 통상 8051이라는 불리는 녀석
그리고 MCS-251은 MCS-81과 바이너리 호환성을 지닌 상위버전이다.

[링크 :  http://www.mykit.com/kor/ele/micom/micomMCS_51.htm] Micro Controller System 51 (MCS51) = 8051
[링크 :  http://www.zmitac.aei.polsl.pl/Electronics_Firm_Docs/mcs51/datashts/27262001.pdf] MCS251

'embeded' 카테고리의 다른 글

Z80 M6800  (0) 2014.01.27
기즈모 스피어 / 라즈베리 파이  (0) 2014.01.02
USB2LPT for JTAG  (0) 2013.06.21
Hi-Z / Tristate / 플로트(float)  (0) 2013.01.02
keil 에서 inline 함수 사용하기  (0) 2012.04.21
Posted by 구차니
embeded2012. 4. 21. 13:47
inline 키워드가 아니라
__inline 키워드로 하면된다 -_-

[링크 : http://www.keil.com/support/man/docs/c166/c166_le_inlinefuncs.htm]

'embeded' 카테고리의 다른 글

Z80 M6800  (0) 2014.01.27
기즈모 스피어 / 라즈베리 파이  (0) 2014.01.02
USB2LPT for JTAG  (0) 2013.06.21
Hi-Z / Tristate / 플로트(float)  (0) 2013.01.02
KEIL 컴파일러 종류  (0) 2012.04.21
Posted by 구차니
embeded/ARM2012. 4. 19. 22:48
이상하게 RTCSet만 하려고 하면 시스템이 멈추는 문제가 발생해서
driverlib 소스를 뒤져봐도 딜레이 주는것 외에는 딱히 문제가 없어 보이는데
뒤지다 뒤지다 뒤져도 답이 안나온다 -_-


일단 hibernate mode로 항상 들어가게 해놓고
분기조건으로 어떻게 할지를 안해줘서 그런걸려나?

[링크 : http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/t/183421.aspx]
Posted by 구차니
embeded/ARM2012. 4. 19. 19:31
KEIL로 컴파일 하면 아래와 같은 문구가 나오고
 Program Size: Code=34744 RO-data=11400 RW-data=1344 ZI-data=9872

의미는 아래와 같다.
1. ZI Data: Zero Initialized Data

2. RO Data are the constants.
Total
RAM Size = RW Data + ZI Data
Total ROM Size = Code + RO Data + RW Data

3. Some constants (RO data) are generated by the compiler/linker and might also be from libraries. So they will exist regardless that your program doesn't explicitly defines any constants. 

[링크 : http://www.keil.com/forum/10624/


글 완전 날로먹은듯? ㅋㅋㅋ

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

TI DM368와 H-JTAG(실패)  (0) 2013.06.28
HibernateRTCSet  (0) 2012.04.19
타이머 핸들러 시간 충돌 안나게 조절하기?  (0) 2012.04.13
ti lm3s 시리즈 하이버네이트 모드 + RTC 사용하기  (2) 2012.04.04
TI LM3S1607 time epoch  (0) 2012.03.27
Posted by 구차니