:::: MENU ::::
Browsing posts in: Infomation

전처리기 – #, ##

#과 ##은 전처리기의 연산자로서 #define 전처리 과정에서만 사용하는 특수한 연산자이다. 사용 빈도가 높지는 않지만 잘 알아 두면 매크로의 활용도를 높여 반복되는 코드를 간단하게 작성할 수 있다.

Stringizing Operator – #
#define문의 인수 앞에 사용되며 피연산자를 문자열로 바꾸는 역할을 한다. 피연산자가 실인수로 치환된 후 양쪽에 따옴표를 붙여 치환된 결과 그대로 문자열 상수가 된다.



#define result(exp) printf(#exp” = %d\n”,exp);


 


void main()


{


     result(5*3);


     result(2*(3+1));


}


결과는
5*3 = 15
2*(3+1)  = 8

Merge Operator – ##
#define 문 내에서만 사용되며 형식 인수 사이에 위치한다. 형식 인수를 분리하여 각각 치환되도록 하며 치환 후에는 주변의 공백과 함께 사라져 두 인수의 치환 결과가 하나의 토큰으로 연결될 수 있도록 한다.



#define var(a,b) (a##b)


 


void main()


{


     int var(Total, Score);


     TotalScore=256;


     printf(“총점 = %d\n”,TotalScore);


}


이해를 위해 또 다른 예제를 보면…
#include <iostream>
 
//make function factory and use it
#define FUNCTION(name, a) int fun_##name() { return a;}
 
FUNCTION
(abcd, 12);
FUNCTION
(fff, 2);
FUNCTION
(kkk, 23);
 
#undef FUNCTION
#define FUNCTION 34
#define OUTPUT(a) std::cout << #a << std::endl
 
int main()
{
std
::cout << “abcd: “ << fun_abcd() << std::endl;
std
::cout << “fff: “ << fun_fff() << std::endl;
std
::cout << “kkk: “ << fun_kkk() << std::endl;
std
::cout << FUNCTION << std::endl;
OUTPUT
(million); //note the lack of quotes
 
return 0;
}

Output:

abcd: 12
fff: 2
kkk: 23
34
million



RTS/CTS flow control

시리얼 통신에서 H/W flow control은 RTS, CTS signal을 사용을 한다.
아래 자료는 ST의 칩 데이터시트에서 가져온 내용인데, RTS/CTS flow control에 대해 쉽게 이해가 된다.

RTS 신호가 RX 회로쪽에 CTS 신호가 TX 회로쪽에 연결이 되어 있다는 점에 유의하자.



1. RTS flow control
RTS 신호는 수신이 가능한 상태이면 Low로 되며, 수신이 불가능하면 High로 한다.

2. CTS flow control
TX를 하기전에 CTS 입력을 확인해서 CTS가 Low이면 데이터를 보낸다.

즉 Hardware Flow control을 사용한다면, 데이터를 보내기전에 CTS 입력(상대방의 RTS)을 확인하여 이것이 Low이면 데이터를 보내고, 데이터를 수신시에는 버퍼가 어느 정도까지 차면(buffer full) RTS를 High로 하고, 나머지 상태에서는 Low로  하면 된다.


VLC를 이용한 비디오 스트리밍

스트리밍 서버 설정
미디어 > 스트리밍 메뉴를 선택하고, 미디어 열기 창이 뜨면 스트리밍할 파일을 선택을 한다.
이 창에서 스트림 버튼을 누르면  새창이 뜨면서 방금 선택한 스트리밍소스가 나오는데, 다음 버튼을 누른다.
다음 그림 처럼 스트림 출력 창이 뜨는데, 여기서 먼저 트랜트코팅 옵션은 해제를 해서 스트리밍 서버의 리소스를 줄인다.
그리고 대상항목에서 스트리밍을 할 방법을 선택을 한다. 즉 RTSP, HTTP, UDP등의 프로토콜을 선택을 한다. 선택을 한후에 반드시 추가 버튼을 눌러야 한다.
이제 마지막 창에서 스트림 버튼을 누르면 스트리밍이 시작된다.우측하단 부분에 시간이 0에서 부터 증가하면 제대로 스트리밍이 되는 것이다.


SD 카드 관련 스펙 자료


http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs/

























Simplified Specifications + File Size Release Date
Part 1 Physical Layer Simplified Specification Ver3.01 + 1155KB May 18, 2010
Part A1 ASSD Extension Simplified Specification Ver2.00 + 241KB May 18, 2010
Part A2 SD Host Controller Simplified Specification Ver2.00 + 598KB Feb. 8, 2007
Part E1 SDIO Simplified Specification Ver2.00 + 433KB Feb. 8, 2007
Part E2 SDIO Bluetooth Type-A Simplified V1.00 + 248KB Apr. 3, 2006


STM32 Peripheral power consumption

위 표에서 볼 수 있듯이 APB1은 HCLK을 2분주해서 사용을 하고 APB2는 HCLK를 그대로 사용을 합니다.
따라서 APB2에 연결된 페리페럴이 더 빠르게 동작하며 전류 소비도 더 큽니다.
ADC는 역시 아날로그 파트라 전류 소비가 크군요.


IPv6 테스트

IPv6 테스트 관련 기관

1. TAHI

http://www.tahi.org/


EBSNET에서 받은 test report
IPv6 Ready Logo Phase-1/Phase-2 Self-Test Report 
Section 1: RFC 2460 – IPv6 Specification 
Section 2: RFC 4861 – Neighbor Discovery for IPv6 
Section 3: RFC 4862 – IPv6 Stateless Address Autoconfiguration 
Section 4: RFC 1981 – Path MTU Discovery for IPv6 
Section 5: RFC 4443 – ICMPv6 


2. UNH-IOL (University of New Hampshire InterOperability Laboratory)
http://www.iol.unh.edu/

IPv6 test suite: http://www.iol.unh.edu/services/testing/ipv6/testsuites/








Table of contents











































Fast Ethernet test suite: http://www.iol.unh.edu/services/testing/fe/testsuites/








Table of contents






















IAR 컴파일러에서 J-LINK 사용하기

먼저 segger사의 홈페이지(http://www.segger.com/download_jlink.html)에서 J-LINK 관련파일을 다운 받아서 설치한다.
보드의 JTAG 소켓에 J-LINK의 JTAG 케이블을 연결을 하고 USB 연결을 한다.
ST서의 STM32의 경우 BOOT0핀이 High로 되어 있어야 한다.

보드의 전원을 켜고 다음과 같이 컴파일러 설정을 한다.


부연 설명을 하면 C-CPY 선택해주어야 Extra output 이 설정할수 있고, 여기서 simple-code로  되어야 합니다.
Sim 파일은 ARM의 axf 파일 같은 역할로, 디버그 정보가 포함된 이미지 파일입니다.
이파일이 만들어져야 브레이크 포인트나 잡을 때 레이블 값을 가지고와 소스와 같이 연계되어 볼 수 있습니다.

설정을 저장을하고, Project > Debug를 실행을 하면 컴파일된 바이너리를 보드에 로드를 하고 디버거에서 설정한 대로 main()함수까지 실행을 한후 멈춰있는다.


Pages:1...56789101112