Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

42107
469
422674


임베디드 리눅스 BSP 공부를 시작하기 전의 마음 가짐 임베디드 리눅스 학습 방법

"임베디드 리눅스와 관련된 실무 능력을 키우기 위해서는 뭘 배워야 하나요?"라는 질문을 종종 받습니다. 특히 취준생 분들이 이런 질문을 많이 하시는 것 같습니다. 이 분들께 "어떤 어떤 책과 블로그를 먼저 보세요"라고 이미 말씀드렸는데, 먼저 다음과 같은 말씀을 드렸어야 했다라고 자책할 때가 많았습니다.   

    "전공 과목을 벼락치기 공부하듯, 임베디드 리눅스를 단기간에 마스터하겠다는 
     생각은 안 하시는 게 좋습니다." 

임베디드 리눅스 BSP 개발자로 +12년에 접어든 저도 지금 공부해야 할 지식이 바다와 같이 끝도 없다는 생각이 많이 듭니다. 그러니 3~6개월 만에 임베디드 리눅스를 요리하겠다고 결심했다면 "당장 그만 두세요"라고 말씀드리고 싶어요. 만약 여러분이 당장 그만 두지 않더라도 "조만간 스스로 그만 두게 될 확률이 매우 높다"라는 확신이 듭니다.

이런 말씀을 드리는 가장 큰 이유는 배워야 할 지식의 양과 컨텐츠가 방대하기 때문입니다. 다만 몇 가지 예외는 있습니다. 여러분이 이미 기존 RTOS의 동작 원리를 정말 세세히 잘 알고 있거나, ARM 프로세서의 익셉션의 원리와 명령어를 마스터한 ARM 프로세서의 초고수라면 3~6개월만에 끝낼 수도 있을 것 같네요.


Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자


덧글

  • neo 2021/12/03 11:27 # 삭제 답글

    RTOS에 대해 접근하기에 좋은 추천 도서는 없을런지요...
    너무나도 방대하고 막막한 내용들인지라... 주인장님께서 올리신글에 격하게 공감이 갑니다...
    그래도 첫걸음이라도 내딧어 보려고하니 임베디드 운영체제에 대한 개념은 가지고 있어야 될것 같아
    부끄럽지만 문의 드려봅니다...
    정성스럽게 작성해주신 소중한 글들... 감사합니다...
  • AustinKim 2021/12/07 06:52 #

    '임베디드 레시피'와 '임베디드 OS 개발 프로젝트' 책을 추천드립니다.
    임베디드 개발자에게 바이블과 같은 책이니 일독하시면 좋습니다.

    감사합니다.
  • neo 2021/12/08 13:42 # 삭제 답글

    답변 감사드립니다...
    "별로 머리도 좋지 않는데 노력 조차 하지 않으면 정말로 돌대가리가 될지도 모른다"라는 공포심에 바로 두 권 다 구입했습니다.

    감사합니다...
  • seoubi 2022/07/05 15:14 # 삭제 답글

    안녕하세요 전자에서 임베디드시스템SW쪽으로 진로를 잡은 학부생입니다. "리눅스 커널의 구조와 원리"책을 통해 알게 되어 방문하게 되었습니다. 이쪽 진로가 HW지식이 있으면 좋다고 하는데 어떤 과목을 수강해야될지 모르겠어서 조언을 얻고자 댓글을 남기게 됐습니다.

    1. 반도체 소자의 동작원리를 배우는 과목(반도체소자공학)을 듣는 것이 도움이 될까요? datasheet를 읽는데 도움이 되겠지만 얼마나 많은 도움이 될지 모르겠습니다. 어떻게 생각하시는지 의견 여쭤보고 싶습니다.
    2. 혹시 추천하시는 hw과목이 있을까요? 회로이론과 전자회로는 수강 할 계획입니다.
  • seoubi 2022/07/05 15:15 # 삭제

    fw, 디바이스 드라이버, 커널 개발을 생각하고 있습니다.
  • AustinKim 2022/07/06 16:53 #

    진로에 대해 고민이 많으신 것 같습니다. 질문에 대해 간단히 제 생각을 몇 가지 말씀드리면요;

    1. "임베디드 시스템 SW" 분야로 가시기로 결정하셨다면 "반도체소자공학" 과목까지 수강하실 필요는 없습니다. 대신 마이크로 프로세서나 운영체제와 같은 과목을 신청하시면 좋겠습니다.

    2. "임베디드 시스템 SW"를 개발하기 위해 하드웨어에 대한 지식이 있으면 물론 도움은 됩니다. "회로 이론"과 같은 과목을 듣는 것 보다, 시중에 나와 있는 '간단한 회로 이론' 정도만 배우시면 됩니다. 왜냐면 "임베디드 시스템 SW"를 개발하기 위해 회로도나 데이터 시트를 해석하는 정도면 충분하기 때문입니다.

    한 가지 하드웨어에 대한 공부 방법을 추천드리면요. 전설적인 임베디드 책인 '임베디드 레시피'에서 1)장을 제대로 이해하시고, 더 필요한 내용은 관련 책을 찾아 보셔도 좋습니다.

    http://recipes.egloos.com/
    1) Hardware 꼴라쥬 (Collage) - 회로도 읽기

    더 궁금한 점이 있으면 댓글로 알려주세요.
    즐거운 하루 되세요.
  • 믹구 2022/07/06 12:43 # 삭제 답글


    안녕하세요

    임베디드 지망생을 보고 그냥 지나칠수가 없어 글 남깁니다
    저는 학부 2년짜리 반도체 IDEC 교육받고 임베디드쪽으로 대학원 석사졸업하고 리눅스 개발자로 취업하여 올해 5년차 입니다 제가 생각하기론 반도체까지는 너무 깊숙하게 들어간 듯 싶네요
    임베디드도 지원하는 부문에 따라 H/W와 관련이 없으실수도 있지만 하드웨어 직접 제어하는 low-level도 고려하신다면 H/W도 배워두는게 좋죠
    전자공이라면 전자회로, PCB, 펌웨어 3종 잘해서 제품 바로 뽑아낼 수 있는 수준이면 어디가서든 대우 받습니다
    하드웨어는 솔직히 학부강의는 도움은 안됬고 실제 업무에서 필요한 것들 여기서 1부터 다시 배웠습니다 https://cafe.naver.com/modulecircuit (타 카페 소개해서 죄송하지만 이 곳 포함해서 터닝포인트가 된 곳 중 하나라 이 학생을 위해 염치불구하고 소개드립니다.. 가서 공지나 주인장 써놓은 글들 읽어보고 자소서 강의 잡힌거 있으면 무조건 필참하고 수업 신청해서 들으십쇼, 실제 사용하는 소자 datasheet 보는 법 당연히 배웁니다)

    추천하는 강의는 자료구조(커널에서 주구장창 씀 이중포인터라던가..), 컴퓨터구조("이제는 Arm의 시대" 보기 전 에피타이저) 임베디드 강의는 당연히 들을테고.. 근데 강의에서 AVR이나 ARM 학습킷트에 있는 led나 lcd 같은거 깨작깨작 이미 예제 있는거 조금 바꾸는 수준이나 아두이노로 IoT 한답시고 예제 긁어와서 깨작깨작하는 수준으론 크게 도움은 안됩니다..
    요즘은 CubeMX나 WriingPI나 아두이노 라이브러리로 다 래핑이 되어있어 MCU 데이터시트 기반으로 실제 레지스터 가지고 H/W 제어하는 부분은 숨겨져 있습니다 혹자는 이제는 시대가 변해서 있는 라이브러리 안쓰면 바보다 할수도 있는데 안의 구조를 전혀 모르고 쓰는거랑 알고 쓰는건 다르죠 책 참고해서 MCU 데이터시트 보면서 레지스터 조작해서 기능 구현하는 식으로 배워두면 써먹는 곳은 반드시 있습니다
    ARM non-os 펌웨어는 알려드린 카페 강의들으면서 ARM Cortex-M 책 보면 되고 리눅스 쪽으로 가시겠다 하시면 본인이 직접 라즈베리파이 사셔서 저자분 책 보면서 따라하면서 이해하시는게 가장 좋습니다.
    실제 개발할때 볼 장치별 커널 subsystem 및 디바이스 드라이버 자체도 책으로 써주시면 좋겠지만 일단 리눅스 커널의 구조와 원리 2권 마스터 하시면 자기가 드라이버 관련 소스 직접 찾아보면서 코드 이해하고 개발할 수 있을 겁니다
  • 믹구 2022/07/06 12:51 # 삭제

    그리고 네트워크도 공부하시면 좋습니다 요즘 제품에 이더넷, 무선모듈 안들어가는데가 없네요
  • 믹구 2022/07/06 13:03 # 삭제

    마지막으로 자기가 공부하고 실습한 내용은 반드시 정리를 해서 남기세요 블로그에 글을 써도 되고 구글 docs에 정리해도 되고 이게 차곡차곡 쌓이면 다 자기재산이 되고 나중에 필요할 때 바로 찾아볼수 있습니다 어쩌면 저자분처럼 책을 쓰실수도 있겠지요 하하
  • AustinKim 2022/07/06 16:54 #

    바쁘신데 긴 댓글로 유익한 정보를 남겨주셔서 감사합니다.
    저도 알려주신 내용 잘 참고하겠습니다.

    즐거운 하루 되세요.
  • seoubi 2022/07/06 18:21 # 삭제

    두분께 정말 감사드립니다.
    저는 전자공학과 학부생이고 현재 2학년입니다. 앞으로 어떤 과목을 들어야되나 며칠동안 고민이 많았습니다.
    여러 사람들에게 여쭤보았지만 다들 transistor level까지는 필요 없다고 하시는 것 같습니다. 전자회로까지만 들을 생각입니다.
    사실 firmware, OS를 개발 하는데 이것도 별로 필요가 없어보이지만, 졸업학점때문에(운영체제만 알고 전자과를 졸업한다는 것이...) 들으려고 합니다.
    저자님께서 집필하신 "리눅스 커널의 구조와 원리", 그리고 여러사람들에게 추천해주시는 "임베디드OS 개발 프로젝트"를 공부하면서 추후 소식을 들려드리도록 하겠습니다.
    점점 더 어떤 것에 집중해야될지 확신이 드는 것 같습니다.
    감사드립니다.
  • seoubi 2022/07/06 19:43 # 삭제

    믹구님 감사합니다. 해당 카페에서 차근차근 교육듣는걸로 해야겠네요. 감사합니다~~~
  • 믹구 2022/07/06 22:14 # 삭제

    이 블로그 없었으면 회사 짤렸을지도 모르겠었습니다 ㅎㅎ; 이 블로그가 제 삶을 바꿔준 터닝포인트입니다 정말 감사드립니다! 앞으로도 좋은 내용 많이 집필 부탁드리며 항상 건승하십시요
  • AustinKim 2022/07/07 22:56 #

    블로그가 도움이 됐다고 하시니 뿌듯합니다.
    꾸준히 유익한 글을 올릴 예정이니 참고하세요.

    감사합니다.
댓글 입력 영역