본문 바로가기
임베디드.일렉트로닉스

ARM GCC 의 printf 대신 사용가능한 메모리 조금 먹는 함수.

by i.got.it 2015. 3. 12.

ARM GCC 에서 제공되는 printf 함수는 플레시 메모리를 많이 먹는다.

 

첨부파일의 iprintf.c 에서 제공되는 iprintf() 함수를 이용하면 플레시 메모리 조금만 할당되면서도  UART로 기존 printf 로 전송했던 것을 구현가능하다.

 

단, 지원되는 specifier가 아래표 처럼 제한되어있으나, 디버깅용으로 데이터 전송시 충분하다.

 

Table 1. iprintf() Format Specifiers

%s Array of char
%d Integer in decimal format
%c Char single character
%x Integer in hexadecimal format

 

 

사용법. (pSoC4 시리즈 기준으로 설명)

 

1. 아래 파일 iprintf.c와 iprintf.h 를 다운.

 

iprintf.c

 

iprintf.h

 

2. 위 2개 파일을 펌웨어 프로젝트에 추가.

 

3. iprintf.c 파일의 iputc() 함수 수정.

UART 컴포넌트 추가하고 그 이름이 SCB_1 이었다면 iprintf.c 파일내의 iputc() 함수내에 SCB_1_UartPutChar(ch) 로 수정한다.

SCB (Serial Communiation Block) 으로 UART 를 구현하지 않고 SW Tx Uart 모듈을 사용하는 경우에는  모듈이름_PutChar(ch)로 수정한다.

4. iprintf() 함수 사용할 곳에서 #include "iprintf.h"

그리고 아래 코드처럼 사용하면 됨.

 

 

상기 정보 원본 : http://www.cypress.com/?id=4&rID=81086 

 

/// 221.

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5