임베디드개발자 2

[ Linux Kernel ] 02. printf("Hello Wolrd!")의 진실

3. printf("Hello World!")의 진실 그러면 이제 우리가 한 가지 궁금한 점이 있다. 우리는 프로그램을 만들 때 소스코드에 입출력과 관련된 함수를 작성한다. printf()를 사용하거나 get()등 디스크에 접근해서 값을 읽어오거나 화면에 문자를 출력하는 함수를 사용한다. 우리가 작성한 코드와 프로그램은 유저모드에서 아무런 제약없이 사용할 수 있었는데, 왜 I/O가 금지되었다고 말을 하는 것일까? 정답은 “소스코드에서만 그렇게 보인다”이다. 소스코드에서는 개발자가 입출력을 관리하는 것처럼 보이지만, 소스코드를 컴파일 한 후에 바이너리 파일을 열어보면 I/O와 관련된 instruction은 전혀 존재하지 않는다. 위에서 언급했듯이 I/O를 하고 싶으면 커널이 가지고 있는 function을 ..

[ Embedded ] 05. Sampling Rate와 나이퀴스트이론

Sampling Rate 소리는 공기 중의 떨림이다. 그 공기 중의 미세한 움직임을 우리의 귀는 우리의 뇌가 이해할 수 있는 형태로 바꿔주는 것이다. 즉, 하나의 형태의 요소가 다른 형태로 바뀌는 것이다. 마찬가지로 우리가 소리를 디지털화 시키기 위해선, 연속적인 아날로그 소리를 컴퓨터가 이해할 수 있는 디지털 언어로 바꿔주어야 한다. 이 과정에서 바로 Sampling 이 등장하게 된다. `샘플링 레이트(Sampling rate)` : 1초에 몇개의 샘플을 추출할 것인지 `Bit Depth` : 한 개의 샘플이 얼마만큼의 크기를 가지는지 => 잘개 쪼갤 수록 부드러운 곡선이 된다. => Sampling rate가 높을 수록 아날로그와 유사한 디지털 값(고음질)을 얻을 수 있다. 나이퀴스트 이론과 기본적인..