RTOS를 사용하지 않는 베어메탈 Firmware의 프로그램 절차는 무한루프와 인터럽트로 이루어져 있습니다. 이번장에서는 무한루프의 구조를 어떻게 바꾸며 보다 효율적이고 좀 더 그럴듯하게 만들 수 있는지 알아보겠습니다. 우선 우리가 알고 있는 기본적인 while 무한루프입니다. /* main.c */ void main(void) { while(1) { process1(); process2(); switch(key) { case button1: break; case button2: break; case button3: break; default: break; ... } } } 위의 코드는 간단해보이지만 실제적으로는 훨씬 더 복잡해 질 가능성이 있습니다. 만약 설정(#ifdef)에 따른 process 유무가..
기본적인 OS가 아예없는 Firmware에서 모든 기능은 무한루프와 인터럽트로 이루어져 있습니다. 이번장에서는 기본적으로 무한루프를 어떻게 실행하면 관리가 좋을 지 생각해보도록 하겠습니다. 우선 우리가 알고 있는 기본적인 while 무한루프입니다. 위의 코드는 간단해보이지만 실제적으로는 훨씬 더 복잡해 질 가능성이 있습니다. 만약 설정(#ifdef)에 따른 process 유무가 들어 간다면 더욱 복잡해 집니다. 이제 소개할 scheduler는 RTOS가 없기 때문에 컨텍스트 스위칭인 일어나지 않는 것을 잘 이해해야 합니다. 그리고 순차적으로 프로세싱이 동작합니다. 따라서 하나의 프로세스나 흐름이 너무 많은 시간을 소요하면 지연 문제가 발생 할 수 있습니다. (이상하게도 해당 소스는 에디터에서 이상하게 변..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.