https://www.yes24.com/Product/goods/121533447?art_bl=18570685
임베디드 소프트웨어 베이직 with 라즈베리 파이 - 예스24
현업 시니어와 주니어가 대화로 풀어 쓴 임베디드 소프트웨어 베이직.이 책은 임베디드를 처음 접하는 독자들을 위한 책으로, 현업 시니어가 이론을 설명해주고 주니어가 실습을 하는 방식으로
www.yes24.com
임베디드 소프트웨어라는 말을 주변에서 흔히 쓰는 것 같아도 알고보면 그 뜻이 언제나 명확하지는 않았습니다. 하드웨어와 소프트웨어 사이의 구분이야 비교적 명확합니다만, 운영체제, 펌웨어, 특정 하드웨어만을 제어하는 드라이버(driver) 등과 이 임베디드 소프트웨어 사이의 경계가 언제나 딱부러지게 나오는 건 또 아니겠습니다. 사실 이 차이가 궁금했는데도 괜히 퉁박맞을까봐 누구한테 물어 보지는 못했는데, 이 책을 통해 아주 기본적인 사항부터 중고급까지 제대로 배우게 되었습니다. 책을 열기 전 그런 점까지는 차마 기대 못 하고 기술적인 부분만 차근하게 따라할 생각이었는데 저자께서는 의외의 면까지 배려하고 있었습니다. 마치 "너 사실은 이게 고민이었지?"라고나 꿰뚫어보듯.
현업 시니어라고 책에 나온 문구가 있어서 처음에는 무슨 뜻일까 했는데, 정말로 시니어 개발자이시기도 한 저자께서 하나하나 후배들을 다독이면서 가르쳐 주시는 분위기였습니다. 대기업 팀장이라고 하면 왠지 쌀쌀맞고 다가가기 무섭고 넘을 수 없는 장벽처럼 우뚝 선 권위 그 자체일 것만 같은데, 마치 설리번 선생님처럼 조곤조곤(말 뜻 그대로입니다) 알려 주시는 분위기라서 내용이 머리에 너무 잘 들어왔습니다. 이 책에도 나오지만 원서 번역의 문제점은 분야를 가리지 않습니다. 해당 언어(대부분 영어이지만)에만 능통하다고 다가 아니라 책의 주제가 무엇인지 아는 분이 번역을 해야 하는데, 아직도 이 점에서 만족스럽지 못한 책이 많죠. 저자께서도 그 점을 잘 알고 서두에 언급을 하십니다. 일본 책은 일본 책대로 그들 특유의 한자 신조어 남발 경향이 있어서 이미 가는 방향이 달라진지 오래인 우리 독서, 출판 문화와는 맞지 않습니다. 결국 정말로, 현업 시니어분들이 본업도 바쁘신데도 불구하고 나서 주실 필요가 (이처럼) 따로 있는 거죠. 추천사를 봐도 "저자분께서 앞으로(도) 좋은 책 많이 써 주셨으면 좋겠습니다."라는 김상영 님의 말씀이 있네요.
저자께서는 원래 전자과 졸업이라고 하십니다. 사실 소프트웨어를 다루더라도 막상 전자 부분은 잘 모르고, 심지어 이 책에 나오듯이 회로도까지 참조해야 할 상황이면 참 막막해집니다. 그때그때 어깨 너머로 공부하고, 필요한 부분만 땜빵식으로 익히는 것도 한계가 느껴졌는데, p25에 나오듯 심지어 (예시) 회로도까지 보는 법까지 나와서 너무도 편했습니다. 모든 컴퓨터 책이 이런 식이었다면 얼마나 좋았겠습니까!
요즘도 교육용으로 코딩용 언어, 플랫폼(새로 수요가 생겼으므로) 등이 많이 나옵니다. 라즈베리 파이는 그 음식하고 철자 하나만 차이날 뿐입니다. 싱글보드 컴퓨터라니 무슨 1970년대도 아니고 뭔가 싶지만 컴퓨터의 원리를 알기 위한 교육용 도구입니다. 물론 책에 나온 대로 플랫폼이기도 합니다. 저자께서 도구로 구태여 라즈베리파이를 선택한 이유는 p33에 나오듯 "문서화가 잘 되어 있어 교육이나 개발자 참조에 좋다"는 이유가 있습니다.
2012년에 나왔으므로 라즈베리파이 컴퓨터에는 HDMI 포트가 있습니다. 여기에 키보드, 마우스 등을 다 연결할 수 있고(실물 구경해 본 분들은 다 알 것 같네요), 다만 한글은 가능하면 쓰지 말라고 합니다. 사실 아직도 이런저런 소프트웨어를 쓰다 보면 다 깨지는 경우가, 경로명 등에 한글이 들어간 경우지요. 다큐 등에서 보면 방 하나를 가득 채운 기계가 요란한 소리를 내며 돌아가는 흑백 화면이 보이기도 하는데, 싱글보드지만 라즈베리파이는 제법 성능이 강력합니다. 마치 고등학교 교양 전산과목 교과서처럼 기초부터 차근차근 레지스터 연산부터 설명됩니다. 고교 교과서보다 더 쉬우면서도 더 깊이 있는 내용까지 다 다루지만 말입니다.
라즈베리파이는 기계, 언어, 플랫폼이기까지 하기 때문에 관련 패키지가 이미 마련되어서 사이트에서 일괄 다운받을 수 있습니다. 리눅스도 배려하므로 해당 환경에서는 apt나 apt-get을 사용하면 되겠습니다. 이렇게 간단한 모습인데도 네트워크 연결까지 다 되니 별개의 이동식 저장장치를 구태여 안 써도 됩니다. p79를 보면 MobaXterm을 설치하고 세팅하는 법이 나오는데 단계별로 따라해 보면 됩니다. 라즈베리파이는 교육용 도구이므로 전산의 다양한 분야를 이걸로 배울 수 있는데 그 중 하나가 바이트오더링입니다. 다 아는 내용이지만 이런 초소형 컴퓨터로 그 기능과 원리, 외관이 하나하나 일치하여 돌아가는 모습을 다 관찰하면서 사용하니 느낌이 정말 다릅니다.
CPU 클럭이란 것도, 물론 윈도2000 때부터 관련 소프트웨어가 있어서 GUI에서 직관적으로 관측할 수 있었습니다만 p105 이하에서 이 라즈베리파이를 이용하여 CPU의 모든 걸 일일이 배울 수 있습니다. 오버클럭도 대충 주먹구구로 하다가 이렇게 그 과정을 훤히 들여다보면서 배우는 건 확실히 다르네요. 주파수 개별 설정 방법도 나오는데 CPU 구조 공부도 이렇게 하니까 마치 의학 실습이 이런 분위기 아니겠나 싶기까지 합니다. 프롬프트로 sysbench를 설치할 수도 있는데 이 과정도 다 공부이니 왜 인스톨러로 안 하냐고 불평할 게 아닙니다.
USB는 우리가 일상에서 아무렇지도 않게 쓰지만 p130에 나오듯 원래는 (해당 장치의) 기능과 구조를 일컫는 말입니다. 이 역시도 파고들다 보면 공부할 게 많은데, 특히 임베디드 디바이스와 이 구조가 궁합이 잘 맞는다고 할 수 있습니다. 그래서인지 책에서도 이 부분이 상세합니다. p133에 보면 실습 형식으로 라즈베리파이 config 작성을 시키는데, 윈도 시작프로그램 따위가 말썽을 일으킬 때마다 구경했던 파일이 사실 이런 원리라는 점 체계적으로 배울 수 있습니다.
요즘은 낸드플래시가 또 대세입니다. 반도체 시장에서도 이게 얼마나 팔리느냐를 놓고 경기 호불황 여부를 판단하기도 합니다. p153 하단에 보면 많은 이들이 궁금해할 만한 질문, "한 바이트를 쓸 때에도 힌 섹터를 다 지워야 한다면 이게 비효율적이지 않은가?"에 대해, 시니어 개발자다운 정확하면서도 세심한 밸려와 고민이 담긴 해답이 있습니다. p177의 DMA 설명과 대조하며 읽으면 더욱 유익합니다. p201 이하에서 파티셔닝에 대한 설명도 뭔가 근본의 의문을 해결해 주는 듯 깊이가 있습니다.
교육용으로 나온 라즈베리파이라고 하나 이런 해설서, 한국말로 된 체계적인 교과서가 있어야 교육이 제대로 이뤄지지 않을까 하는 생각이 절로 들었습니다.
*예스24 리뷰어클럽을 통해 출판사에서 제공받은 도서를 읽고 솔직하게, 주관적으로 작성한 후기입니다.
https://blog.yes24.com/document/18570685