ㅎㅎ 하루댓글수가 10개가 넘어 더이상 댓글로 답변이 안되서 글을씁니다 ^^
1. 소프트웨어에 대한 이해
컴퓨터 시스템에서 가장 기초적인것은 항상 0과 1로 이루어진 이진법 및 메모리, 프로세서 구조, 논리회로 등 딱딱한 주제로 시작하는데, 우선 딱딱한 주제보다는 좀더 쉽게 접근할 수 있는 소프트웨어로의 접근을 권합니다.
이전에는 임베디드 및 하드웨어 하면 무조건 Assembly 도는 C 언어로만 접근이 가능하였으나, Visual Studio 2008 버젼부터 Robotics C#을 지원하기 때문에, C#으로도 많은것을 해 볼수 있는 방법이 있습니다.
그러나 아직까지는 현실적으로 C#으로 접근할수 있는 방법이 보편화 되지 않았기 때문에, 프로그래밍이라는것에 대한 이해, 변수, 메모리 및 통신/DB 등을 활용하고 이해하는 목적으로 C#을 이용하는 것이 쉬운 접근이 될 것입니다.
프로그래밍에 어느정도 이해가 되었으면, C++과 C를 병행하시고, C++을 접하면서 처음에는 MFC, API 순서로 접근하여, 이벤트 및 메시지 후킹 단계에 이르시면 어셈블리를 병행 공부하시어 좀 더 직접적으로 시스템에 접근하실 수 있습니다. 자연스럽게 OS 체계 및 파일구조, 메모리구조 등은 익숙해 질것이구요 ^^
2. 하드웨어에 대한 이해
우선 전기/전자 기초 및 회로이론으로 접근하기 보다는, C언어가 되어있다는 전제하에 Micom 실습 및 개발 모듈 등을 이용하여 간단한 LED/FND/LCD 등을 제어해보길 권장합니다. 우선 간단히 직접 눈으로 보이는 결과를 보고, MCU별로 레지스터 및 메모리, 인터럽트, 포트제어, USART 등을 익히시면서 그때그때 필요한 전기/전자 지식 및 회로이론에 대한 공부를 하시기 바랍니다. 자연히 저항/다이오드/컨덴서 및 트렌지스터에 대한 기능을 익히실테고, 더 나아가 RC 시정수, 주파수, 노이즈에 대한 내용까지 다루게 되시면서 회로설계 및 PCB아트워크설계 까지 공부하실 수 있습니다.
단순한 8bit Micom보다 좀더 복잡한 시스템을 위해서는 ARM 또는 DSP등을 이용해 보실 수 있는데, 이 때, RTOS(Real-Time Operating System)을 포팅하여 네비게이션 또는 MP3 및 Divx플레이어 등 원하는 시스템을 만들어볼 수 있습니다.
제가 말씀드린방법들이 역행이라 좀 이상할 수도 있으나, 당장 이해도 되지않는 딱딱한 주제부터 시작하여 금방 흥미를 잃게 되는것 보다, 쉽게 결과가 보이고 흥미를 가지기 쉬운부분부터 공부해 가면서, 그때그때 필요에 의해, 이해할 수 있는 범위의 공부를 하신다면 그 효율은 가장 좋을것이라 생각됩니다.
아울러 이 방법은 어디까지나 제 개인적인 관점에서 본 효율적인 방법일 뿐 절대적인것은 아니므로 여러 사람들 또는 선배, 교수님들의 의견을 들어보고 판단은 개인이 하시길 당부드립니다 ^^ 그럼 열공하세요 ^^