title | author | date |
---|---|---|
How to study AURIX? |
Wootaik Lee ([email protected]) |
2018-01-30 |
InfineonRacer를 프로그래밍 하기로 결정하고 학습을 시작한지 약 5개월 되었다(2018년 04월 14일 기준). AURIX에 대해서는 상품명만 알고 있었을 뿐, 사용해 본 경험은 전혀 없었다. 자료검색과 프로그래밍, 문서화를 병행하며 약 2개월에 걸쳐서 프로그램 초안을 만들었고, 현재까지는 입문자를 위한 설명서를 만들고 있다. 상대적으로 짧은 기간에 이 프로그램을 개발했다고 입문자들에게 자랑하고자 하는 것도 아니고, 그러므로 오류가 있어도 너그럽게 양해해 달라는 부탁도 아니다.
약 25년 동안 MCU 관련 프로그래밍을한 개발자로서, 새로운 MCU를 학습하며 이 프로젝트를 진행한 접근 방법을 소개하고, 이 프로젝트를 활용할 입문자들에게 몇가지 제안을 하고자 한다. 그래서 InfineonRacer를 참고한 입문자들이 좋은 관점을 경험해 보고, 좋은 습관들을 익혀, 좋은 MCU 프로그래머로 성장해 가기를 바라는 마음이다.
-
아두이노나 라즈베리파이에서는 쉽게 되는데 AURIX 에서는...
AURIX를 사용하려는 입문자들은 대부분 처음 MCU를 접하는 사람들 보다는 기존에 다른 MCU를 사용해 보았거나, 아두이노나 라즈베리파이 같은 플랫폼을 사용해 본 경험이 있는 사람들일 것이다. 아두이노를 사용해 보면 모든 것들이 쉽게 된다.
printf()
를 하면 시리얼터미널로 글자가 찍히고,analogRead(pin)
하면 해당 핀으로 연결된 analog 전압의 변환 값을 얻을 수 있다. 아두이노에서는 이처럼 사용하기 쉬운 라이브러리와 설명서를 제공하고 있다. AURIX에서는 이것과 비교할 수 없을 정도로 복잡한 과정을 거쳐야 한다. AURIX는 어렵다. 아니 정확히 말하면 어려운 것이 아니라 섬세하게 프로그래밍 해야 한다. 실제 제어 시스템에서는 고성능의 IO 장치를 필요로 하고, AURIX는 이 요구에 대응하기 위하여 현재와 같은 강력한, 그래서 복잡한 IO 장치를 가지게 된 것이다. 이 IO 장치들을 제대로 사용하기 위해서는 이에 걸 맞는 수준의 프로그래밍을 해야 한다. 아두이노는 초등학생들도 사용할 수 있는 비전공자를 위한 교육용 플랫폼이다. 아두이노로 만들어 지는 고성능, 고신뢰성 시스템은 없다. 취미생활로 MCU를 사용하는것인가 아니면 개발자가 되기 위해서 MCU를 공부하는 것인가 생각해 보아야 한다. -
검색을 해도 자료가 나오지 않는다
AURIX 관련 자료는 인터넷에 잘 돌아다니지 않는다. Atmel, PIC, ARM 등의 키워드로 검색하면 엄청나게 많은 정보가 쏟아지져 나온다. AURIX의 경우에는 Infineon 홈페이지와 관련 개발 툴회사와 제품들에 대한 정보만 검색이 될 뿐이다. '이것이 세상에서 쓰이는 마이크로컨트롤러일까?' 의심이 들 정도이다. AURIX라는 마이크로컨트롤러는 일반 개발자들을 대상으로 하는 것이라기 보다는 자동차와 산업용에 특화되어 있어 해당 분야의 전문가들을 대상으로 하고 있다. 그렇다 하더라도 개발자들을 위하여 어느 정도는 자료를 공개했으리라 생각하고 인피니언 홈페이지에 공개되어 있는 자료들을 열람하고 홈페이지를 통하여 접근권한을 신청하여 정보를 수집하였다. 정보의 접근성을 평가해 보기 위하여 의도적으로 '누구나 인피니언 홈페이지를 통하여 접근할 수 있는 방식'만 사용한 것이다. (일반인, 특히 학생들의 관점에서 AURIX 관련 자료를 구해보기 위하여, 인피니언 한국지사에 연락하여 정보를 요청하는 행위를 피하였다. 그리고 아울러 지능형 모형차 경진대회 게시판에 공개되어 있는 자료들도 살펴보았다.)
현재까지 수집하고 분석한 AURIX관련 정보에 대하여 평가를 한다면, 인피니언에서는 친절하지는 않지만 정확한 자료와 예제를 제공하고 있다. 광고성의 홍보물은 없지만 동시에 쓰레기 같은 잘못된 정보도 없었다. AURIX를 경험해 볼 수 있는 잘 구성된 Application Kit Board 와 프로그래밍과 디버깅을 할 수 있는 HiTech 도구, 그리고 비록 접근권한을 신청해서 받아야만 가능하지만 인터넷으로 공개되어 있는 BIFACES라는 개발 Framework, 라이브러리, 그리고 그 라이브러리를 사용하는 예제 코드들, 친절한 튜토리얼은 없지만 이렇게 정확하고 알차게 구성되어 있는 MCU 개발환경을 접해본 적이 없다.
검색을 해도 자료가 없다고 불평(?)하는 사람에게 오히려 이렇게 묻고 싶어졌다. "당신과 일치하는 사용예를 찾는 것인가?". 그런 것은 없다. 만약 그런 것이 있다면 정말 큰 행운이다. 우리에게는 AURIX와 관련된 충분한 자료가 주어져 있다. 그 자료의 활용 방법을 잘 모르는 것 아닐까?
-
이 분야 기초가 부족해서 잘 못하겠다.
AURIX를 사용해서 지능형 자동차 대회가 개최된 지 2년의 시간이 지났다. 대회 게시판을 확인해 본 결과 이미 iLLD에 대해서 소개해 주었고 SwF(주, BIFACES의 이전버젼 이름)도 간접적으로 소개되었었다. 대회 수상팀의 보고서를 읽어보고 코드들을 살펴보니 레지스터를 직접 접근하여서 프로그래밍을 하거나 아두이노 스타일로 프로그래밍 하는 등 다양한 방식으로 개발 했었음을 알 수 있었다. 의아했던 것은 주최측에서 안내해 주었던 iLLD와 SwF 을 사용해서 개발했던 팀이 없었다는 것이다. 어렵게, 출전했던 사람을 물색하여 문의해본 결과, 'iLLD를 소개는 받았지만 너무 크고 복잡해서 사용할 수 없었다'는 답변을 들었다. '아니 사용하기 편리하라고 만들어 놓은 디바이스 드라이버 라이브러리가 레지스터에 직접 프로그래밍하는 것보다 어렵게 느껴지다니.' iLLD를 상세하게 살펴보고 현재 관련분야 대학생들이 접하는 정보들을 생각해 보니 위와 같은 답변을 했던 학생의 입장을 이해할 수 있게되었다.
현재 마이크로컨트롤러 관련 분야는 학교에서 배우는 내용과 현장에서 사용하는 기법의 수준 차이가 크게 벌어져 있는 상황이다. 학교에서는 저수준의 레지스터 조작 수준의 활용 방법을 가르치거나, 아니면 이것을 완전히 외면하고 잘 포장되어 있는 라이브러리를 호출하여 MCU를 활용하는 교육을 진행하고 있다. 그러나 현장에서는 iLLD와 같이 고급 프로그래밍 기법으로 개발되어 있는 소프트웨어 컴포넌트들을 용도에 맞게 설정(configuration)하고 조합하여 활용하고 있다. 고급 프로그래밍 기법에 대한 이해가 없으면 이와 같은 컴포넌트 자체를 이해할 수 없다.
더군다나 지능형 자동차 분야에서 사용되는 각종 센서들은 기존의 단순한 인터페이스 방식을 사용하고 있지 않다. GPS나 가속도 등을 읽어들이는 센서들은 일반적으로 SPI나 IIC와 같은 Inter-processor 통신 방식을 사용하고 있고, TSL1401 과 같은 Line Scan Camera 는 자체의 프로토콜을 사용하여 인터페이스 해야만 한다. 이와 같은 센서를 사용하려면 심도 있는 저수준 하드웨어에 대한 이해와 동시에 고급 기법의 프로그래밍이 필요하게 된다.
어렵다. 학교에서 배운 지식만으로 지능형 자동차를 만드는 것은 불가능하다. 그러나 학교에서 배운 지식이 기초가 되고, 양질의 관련 자료를 차근차근 공부해서 접근하면 지능형 모형차는 만들 수 있는 것이다. 여러분이 지금 쌓고 있는 것이 내일의 기초이다.
-
프로그래밍을 하기 위해서 알아야 하는 것들이 너무 많다.
마이크로컨트롤러의 프로그램은 Cyber 공간상에서 동작하는 것이 아니라 물리계에서 동작해야하는 것이다. 그러므로 물리현상에 대한 이해와 마이크로컨트롤러와 인터페이스 하기 위한 각종 회로 지식들이 추가적으로 필요하다. 프로그래밍을 하는 사람에게도 이러한 지식을 요구하는 것이다. 이와 같은 것을 다 알고 프로그래밍 하기는 불가능하지만, 지금 단계에서 필요한 수준을 설정하고 학습하며 진행한다면 충분히 가능한 일이다. 전문가들도 이런 과정을 반복하면서 점진적으로 성장해 간 것이다.
-
혼자 하기에는 일의 양이 너무 많다.
알아야 할 것이 많다는 말은 해야할 일이 많다는 것과 일맥상통한다. 지능형 자동차를, 아니 모형차를 만드는 일도 수개월 안에 완성하기에는 해야할 일이 너무 많다. 정확히 말하면 혼자하기에 많다는 말이다. 우리는 간혹 전설과 같은 이야기들을 듣는다. 빌게이츠는 대학을 중퇴하고 차고에서 혼자 수개월 동안 MS-Dos 를 개발하여 마이크로소프트라는 회사를 설립했다고. 사실이겠지만, 우리는 빌게이츠 처럼 똑똑한 사람도 아니고, 대학을 중퇴할 용기도 없다. 혼자서 하려 하지 말고 팀원과 함께 하는 방법을 배워야 한다. 내가 만드는 코드가 내 친구가 사용할 것임을 명심하고, 내가 만드는 도면과 문서가 내 후배들의 참고 자료가 될 것임을 명심하자. 나는 빌게이츠 처럼 돈을 많이 벌지는 못하겠지만 함께하는 친구와 동료가 있어서 외롭지 않게 일을 할 수 있다.
-
잘 만들어진 물건은 사용자가 내부 원리를 알 필요가 없다.
자동차는 시동키를 꽃고 가속페달을 밟으면 가고 브레이크페달을 밟으면 멈춘다. 선풍기는 전원을 넣으면 내가 원하는 속도와 방향으로 운전할 수 있다. 이것을 이용하는 사람은 공학원리를 고민하고 있을까? 잘 만들어진 물건은 사용자에게 사용하는 방법 이상의 지식을 요구하지 않는다. 대부분의 사용자들은 이렇게 사용하면서 더이상 고민을 하지 않는다. 그러나 공학도인 우리들은 여기서 한가지 씩 더 고민을 해야만 한다. 자동차의 구성요소와 동작원리에 대해서 이해하고자 해야 하고, 이것을 발전 시키려면 어떻게 해야할까 하는 고민을 해야 한다.
'MCU를 가지고 놀아보고자' 하는 것에는 두가지 입장이 있다. MCU를 활용한 시스템을 만들어서 아이디어의 가능성을 검토하고 참신성을 추구하고자 하는 입장과 MCU의 소프트웨어를 한땀 한땀 정성들여 만들어 새롭지는 않지만 예상되는 동작을 문제 없이 정상적으로 동작하도록 만드는 입장이다. 전자의 입장이라면 아두이노나 비글본과 같은 플랫폼을 활용하기를 추천한다. MCU를 잘 활용하는 것보다 MCU에 아이디어를 쉽게 구현할 수 있는 것이 중요한 '사용자'이기 때문이다. 후자의 입장이라면, 즉 직업적으로 MCU의 프로그래밍을 하는 '개발자'가 되고자 한다면 AURIX, iLLD, BIFACES 가 좋은 예제가 될 수 있을 것이다. 마이크로컨트롤러 관련 개발 과정과 내부 원리를 자연스럽게 익힐 수 있는 기회가 될 것이다.
-
무엇을 하면 마이크로컨트롤러 전문가(Specialist)가 될 수 있을까?
산업의 분야가 발전해 가면서 점점 더 세분화 된다. 마이크로컨트롤러 분야도 마찬가지 이다. 20여년 전, 한명 혹은 작은 팀원들이 의기투합해서 진행한 프로젝트의 성공담이 이제는 전설일 뿐이다. 현재의 마이크로컨트롤러 프로그래밍은 엄청난 변화를 겪고 있으며 조만간 병렬처리 되는 CPU에서 리눅스 OS 기반으로 개발하는 것이 일반적인 환경이 될 수도 있다. 동시에 16비트 마이크로컨트롤러에 정수형 연산을 하는 프로그램이 공존하는 세상이 펼쳐질 것이다. 어렵다고 겁먹지 말자. 변화는 기회의 또 다른 이름일 뿐이다. 현재 국내 마이크로컨트롤러 인력 시장이 선진국처럼 세분화 되어 있지는 않다. 고용 단계에서는 그렇지만 내부적으로는 선진업체의 인력 시스템 처럼 점진적으로 세분화 되어가고 있다. 하드웨어와 마이크로컨트롤러에 대하여 저수준의 프로그램을 개발하는 일, 제어 대상과 시스템 알고리즘을 개발하는 일, 소프트웨어의 구조를 설계하고 통합하는 일, 또한 이런 일을 모두 효율적으로 할 수 있는 환경과 도구를 만드는 일 등 일반 IT 소프트웨어 개발 회사에서 하는 일이 마이크로컨트롤러 개발회사에서도 진행되어 가고 있다. 마이크로컨트롤러 개발자로서 일을 해보고 싶다면, 관심있는 분야의 덕후가 되어 보자. 이제 경험이 우리를 전문가로 성장시켜 줄 것이다.
-
공학을 하는가? 예술을 하는가?
공학이라는 것이 세상에 등장하기 이전부터 인류는 '만들기'를 했었고 잘 만드는 사람을 '장인'이라 부르며 특별한 직군으로 대접해 왔었다. 오늘날에도 멋진 물건을 만드는 사람을 높이 평가하며 역사적으로 가치가 있는 기술들을 무형문화재라 칭하며 보존하고자 노력하고 있다. 그러나 현대적인 제조업의 관점에서, 즉 공학적인 관점에서 살펴보면 이러한 수공예적 만들기는 지극히 낮은 생산성을 가진 불합리한 공정이다.
우리가 프로그래밍을 할 때에도 같은 오류를 범할 수 있다. 뛰어난 프로그래머가 만든, 정말 잘 구성되어 있고 효율적인 코드가 존재할 수는 있다. 그러나, 그 코드를 만드는 방법을 공학적으로 관리할 수 없어서 만드는 사람의 능력에 따라 천차만별의 성능을 갖게 된다면, 더이상 발전할 수 없으며 보편화시켜 사용할 수 없게 된다. 프로그래밍은 예술적 창작 행위가 아니라 치밀하게 관리되는 공학적 과정이어야 한다. 소프트웨어는 직관적인 아름다움을 갖는 예술품이 아니라 이유가 있는 행위의 결과물이어야 한다.
-
PC와 마이크로컨트롤러의 경계가 무너지고 있다.
최근 20여년간 Real-Time OS, Auto-code generation, AUTOSAR, Hardware/Software Co-Design 등등 마이크로컨트롤러 관련 새로운 기술들이 세상이 등장하게 되었다. 각각을 살펴보면 기술적으로 어렵고 새로운 것으로 보일 수 있지만, 큰 흐름으로 살펴보면 마이크로컨트롤러 하드웨어의 발전으로 인해서 이전에는 불가능하다고 생각했던 PC 혹은 워크스테이션급 컴퓨터에서 사용하는 방법을 이제는 마이크로컨트롤러에서도 사용할 수 있게 되었다는 것이다. 이제 마이크로컨트롤러에서도 OS를 사용하는 것이 일반화 되고, SysML이나 UML로 소프트웨어를 설계하고, 잘 구성된 AUTOSAR 플랫폼 위에 Model-based 기법 개발한 응용 소프트웨어 컴포넌트를 넣고 있는 것이다. 예전에는 마이크로컨트롤러에서는 불가능할 것이라 생각하던 기술들도 이제는 보편적인 기술로 받아들어 지고 있다. 발전의 속도가 너무 빨라서 관련 내용을 체계화 하고 교과서로 만들고 대학에서 교육을 할 수 있는 시간적인 여유 없이 우리의 주변을 지나가고 있다.
마이크로컨트롤러 PC, 통신 분야 등등 응용분야별로 특수성은 가지고 있지만 소프트웨어 개발 방법들은 시간 차이를 가지고 공통적인 분모를 가지고 발전해 가고 있다. 소프트웨어는 본질적으로 인간의 사고를 프로그래밍 언어로 표현한 결과물이다. 배타적인 생각을 하지 말고 새롭게 등장하는 이론을 적극적으로 배울 필요가 있다.
AURIX의 학습 방법을 제안하고자 다음의 두가지 질문을 건넨다.
AURIX를 왜 공부하냐에 따라서 이 두가지 질문에 대한 대답은 달라질 수 있지만 이 자료를 보는 사람들은 InfineonRacer를 통하여 AURIX의 전문가로, 향후 마이크로컨트롤러 전문 프로그래머로 성장하고자 하는 목적을 가지고 있는 것으로 간주하고 설명하고자 한다.
-
접근하기 쉬운 정보는 가치가 떨어지는 것인가?
인터넷이 활성화 되기 이전 시대에는 마이크로컨트롤러를 활용하기 위해서 어렵게(?) 데이터시트를 구하고 거듭해 읽으며 내용을 이해하려고 애써야만 했다. 대학의 각 연구실은 그 데이터시트를 확보하고 중요한 자료로 관리하는 것에 많은 노력을 들이기도 했었다. 각 마이크로컨트롤러 회사에서 데이터시트를 인터넷으로 공개하고, 심지어 이 데이터시트를 쉽게 찾을 수 있는 서비스 사이트가 등장하면서 부터 데이터시트는 어느덧 '흔한', 그래서 '가치를 인정 받지 못하는' 정보가 되었다. 아니다. 정보의 접근성과 정보의 가치는 반비례 관계에 있는 것이 아니다. 제조사에서 제공하는 데이타시트, 사용자 가이드와 매뉴얼은 제조사가 보장하는 가장 정확한 정보가 담겨있는 보물이다. 모든 개발자들은 이 문서들을 통하여 필요한 정보를 얻어야 한다. 이것들을 접어 놓고 인터넷만을 뒤지는 것은 전문가를 옆에 모셔두고 초등학생에게 자문을 구하는 어리석음을 범하는 일이다.
-
AURIX는 쓰기 어려운 칩인가?
회사의 숙련된 엔지니어들도 AURIX를 어려워 해서 엄청난 고가의 개발도구를 사용하고 있다. 자동차분야의 엔지니어들은 iLLD의 활용에 해당하는 부분을 MCAL(MicroController Abstraction Layer)이라는 계층으로 만들어 사용한다. 이 계층을 만들기 위하여 각 제조사에서 제공하는 소프트웨어와 설정도구를 사용하고 있다. 이것은 일반인들이 사용할 수 없는 고가의 개발도구이다. 그리고 응용 소프트웨어를 만들기 위하여 각종 설계툴을 사용하여 소프트웨어 컴포넌트를 개발하고 있다. 이 설계툴 또한 일반인이 사용할 수 없다.
그러면 AURIX는 성배와 같은 것이어서 일반인, 학생들은 사용할 수 없는 것일까? 아니다. 위와 같은 소프트웨어 컴포넌트와 개발도구들은 고성능, 고신뢰성을 얻기 위하여 전문적인 방법으로 개발된 것들이다. 고성능, 고신뢰성을 고려할 필요가 없는 입문자들을 위해서 인피니언에서 iLLD, BIFACES를 제공하고 있다. 이 BIFACES는 전문 개발자가 사용하는 Framework이다. AURIX가 사용하기 어려운 MCU인 것이 아니라, 전문가들이 사용하는 개발 방법을 접하고 있기 때문에 어렵게 느껴지는 것이다.
(참고) 일반인과 학생들을 위하여 ShieldBuddy TC275 라는 보드와 개발환경을 hitex라는 회사에서 내놓았다. 아두이노와 호환되는 핀을 가지고 있고, 아두이노 IDE를 사용할 수 있도록 만들어 놓았다. 취미생활로 AURIX를 사용해 보고자 한다면 이 환경을 사용할 수도 있다.
인피니언, HighTec 을 통하여 얻어진 자료들을 정리해 보면 다음과 같이 분류해 볼 수 있다. AURIX를 활용하기 위해서, MCU를 활용하기 위해서 봐야 하는 자료들이 실로 어마어마 하다. 그러나 겁낼 필요는 없다. 찬찬히 다 읽어보야 하는 자료가 있고 대략적으로 목차만 확인하고 있다가 필요할 때 사전처럼 찾아봐야 하는 정보들이 있다. InfineonRacer를 활용하기 위해서 꼭 읽어보아야 하는 자료가 있고, 변경하기 위해서 추후에 살펴보아야 하는 자료들이 있다. 급한것 부터, 중요한 것부터 찾아보며 일하는 습관을 들이자. 시간이 지날 수록 자료를 읽고 이해하는 속도가 점점 빨라짐을 느낄 수 있을 것이다.
-
개발도구 관련
분류 제품명 관련자료 기타 HighTec eclipse-quickstart-en.pdf, userguide.pdf Compiler tricore-gcc tricore-gcc.pdf Linker tricore-ld tricore-ld.pdf bsp and examples board support package Debugger UDE VisualPlatform UDE Manual.pdf -
Build Framework
분류 제품명 관련자료 기타 Framework BIFACES BIFACES User Manual IDE eclipse on-line help Doc tools Doxygen http://www.stack.nl/~dimitri/doxygen/ OS config RT-Druid http://erika.tuxfamily.org/drupal/ Build make Configuration XML Template BaseFramwork source code and examples -
MCU 관련
분류 제품명 관련자료 기타 MCU TC237 TC23X User Manual Evaluation Board ApplicationKit ApplicationKitManual-TC2X7 -
iLLD
분류 제품명 관련자료 기타 Device Driver iLLD \iLLD_1_0_1_4_0\Doc\TC23A\html\index.html Demos iLLD Demos source code
-
먼저 내게 필요한 것이 무엇인지 정확하게 인식하자.
마이크로컨트롤러 입문자라면 Getting Started, Quick Start 와 같은 문서들을 찬찬히 읽어보며 실습을 따라하고 그 의미가 무엇일지 생각해보고 이해하는 시간이 필요하다. 기존의 다른 마이크로컨트롤러를 초급수준으로 활용해본 경험이 있는 사람이라면 AURIX의 전문적인 개발환경을 익혀가면서 중급자로 성장하는 계기로 삼으면 된다. AURIX에 관심이 있기 보다 제어 소프트웨어를 잘 짜보고 싶은 사람이라면 소프트웨어의 구조와 스케쥴러의 활용에 관심을 가지면 좋을 것이다. 모델기반 제어시스템을 공부해 보고 싶은 사람이라면 matlab의 예제와 자동생성코드를 플랫폼 소프트웨어와 통합하는 과정을 분석해 보자. InfineonRacer 프로젝트 하나를 통하여 이 모든 것을 다 설명하고 알려줄 수 있다고 과장하고 싶은 것은 아니다. 다만 현재 활용하는 기술들에 대하여 살펴볼 수 있는 예제가 될 수는 있을 것이다.
-
우선, 사용예에 대하여 집중하자
앞서 이야기한 바와 같이 관련 제품에 대한 가장 정확한 설명은 제조사의 메뉴얼과 데이터시트이다. InfineonRacer를 구성하면서 참고했던 자료들의 연관성들에 대하여 '사용예'로 설명하고자 한다. 즉 센서및 액츄에이터를 AURIX와 인터페이스 하기 위해서는 어떤 자료들을 보아야 하고, iLLD를 어떻게 설정하는 것이 바람직하며, 제어 소프트웨어에서 사용하기 편하게 어떻게 설계하는지에 대하여 설명하고자 한다. 즉 제조사의 입장에서 설명하고자 하는 것이 아니라 사용자의 입장에서 관련 정보들을 분석하고 활용하는 과정을 보여주고자 한다. 이 접근 방법을 이해하고 따라해 보면, 큰 산처럼 느껴지던 AURIX가 하나하나 알아가는 재미있는 '놀이터'가 될 수도 있을 것이다. 그 '놀이터'에서의 경험이 우리를 좋은 개발자로 안내해 줄 기초 체력이 될 것이다.
이와 같은 관점으로 InfineonRacer를 구성할 때 필요한 IO 서브시스템의 활용 방법에 대하여 서브시스템 별로 설명하고자 한다. 인피니언에서 제공한 Demo예제를 적극적으로 활용할 것이다. 각 챕터는 다음과 같이 구성되어 있다.
- Demo 예제 설명
- 관련 서브시스템에 대한 하드웨어적인 특징 설명
- iLLD 설명
- 설정 관련
- IO 관련
- InfineonRacer 관련 추가적인 사항
코드의 향기 - 좋은 코드에서는 향기가 난다.
언제부터인가 내가 만나는 코드에서, 문서에서, 도면에서, 그것을 만든 사람의 향기를 느끼게 된다. 혹자들은 이 말을 듣고 웃을 것이고, 혹자들은 무릎을 치며 동의할 것이다. 내가 만든 코드와 문서와 도면에서도 다른 사람들도 여러가지 느낌을 받을 것 이다. 향기는 아니더라도 악취가 나는 소프트웨어를 만들지 말자는 다짐을 한다. 어떻게 하면 가능할까? 내가 향기를 느끼는 코드를 좀 더 들여다 보고, 그런 문서를 한번 더 읽어보고, 그런 도면을 인쇄해서 수시로 참고한다. 내가 만드는 지적인 결과물들은 바로 나 자신인 것이다. 이 프로젝트의 결과물을 보는 다른 사람들이 악취를 느끼며 Alt + F4
, 혹은 DEL
를 누르지 않고, 은은한 향기를 느끼며 음미할 수 있도록 만들고 싶다. 그리고 이 프로젝트를 살펴본 사람들과 함께 마이크로컨트롤러 프로그래밍 세계에서 조화로운 향기를 피워보고 싶다.