거의 다 까먹었긴 한데..
ㅇㅅㅇ
예전에 코톡에 적어서 백업해둔 것
ㅇㅅㅇ
- 하드웨어 준비
- 하드웨어 핀 세팅 작업
- 클럭 세팅
- 전원 들어왔을때 실행할 부트 영역 작업 ( 어셈블리 )
–> 소스 까보면… C 언어에서 main() 호출 코드 들어감 - RAM 물리/논리 페이징 작업 ( elf 파일 )
- 소프트웨어 적인 클럭 주파수 세팅
- 왓치독 작업 ( 클럭이 먼저 세팅 되어 있어야 가능했던 것으로 기억 )
- 버스쪽 셋업 ( I2C, GPIO ? )
- 인터럽트 세팅 ( 외부 디바이스 용도 ) — I2C 쪽 ?
- 시리얼 셋업 – GPIO 쪽
–> 클럭이랑 맞춰서 Baud 설정 - 카메라, 스피커, 랜, 디스플레이 장치별 인트럽트 및 기초 세팅 작업
- 내가 했던 것은 ARM 계열이라 멀티 태스크 위주라…
여기서 부터 태스크 세팅 작업 진행
- 총괄할 메인 태스크 부터 올리고.
- 태스크간 상태 전달할 메세지큐 셋업.
- 세마포어 및 드라이버 지원용 작업 진행.
- 태스크 할당 및 우선순위 지정
- 각 태스크에 할당할 스택에 맞는 어플리케이션 작업
ex1. 모바일의 경우 모뎀을 이용하기 때문에 PPP 위에 TCP 올리기
ex2. GPIO위에 시리얼 올리고 그위에 USB올리기
ex3. CAM, 디스플레이 VRAM 공통 영역 관리 및 태스크 작업
ex4. 플래쉬램 영역에 파일 시스템 셋업
ex5. 커멘드 파서 및 시리얼로 커멘드 실행 가능하게 구현 - VM 같은게 있다면… 그기와 연동되는 HAL 작업 진행
으악 틀딱이다
와...
저게 OS가 하는 일임. ㅇㅅㅇ 다 저기서 특별히 다른게 없음. 저기 위에 얼마나 철학적으로 다른 방향으로 올라갔느냐의 차이뿐 ㅇㅅㅇ
지금봐도 뭔말인지 다 이해되노