안녕하세요 저는 자동차업계에서 MCU SW 개발 업무를 하고 있습니다.
학교 다니던 시절 임베디드 쪽에는 전혀 관심이 없었는데 회사에서 MCU SW 업무를 맡게되면서
많은 어려움을 겪었습니다.
무엇을 하나 새로 배울 때마다 근데 이게 왜 이렇게 되지? 어떻게 이렇게 되지? 궁금함이 꼬리에 꼬리를 물었고 그런 부분들을 하나하나 찾아가며 궁금증을 해결하였습니다. 그런식으로 혼자 배우다보니 지금은 오히려 다른 사람들보다 훨씬 제 직무에 대해서 잘 알고 있다고 자부합니다.
신입사원 때 고생하던 과거의 저 자신에게 알려준다는 마음으로 강의합니다.
강의
수강평
- CAN 통신 - 자동차 신입이 알아야 할 모든 것
- 신입사원에게 들려주는 - MCU SW 직무 기초 개념완성
- 신입사원에게 들려주는 - MCU SW 직무 기초 개념완성
- 신입사원에게 들려주는 - MCU SW 직무 기초 개념완성
게시글
질문&답변
Control DTC Setting
2번 질문은 저도 생각해보지않은 이슈인데 좀 알아봐야겠습니다.. 솔직히 모르겠네요..
- 1
- 2
- 83
질문&답변
Control DTC Setting
안녕하세요 질문 주신 내용은 제가 대강의 예시를 든 것이고 구체적이고 정확한 예시가 아니긴 한데요. 제가 표현을 애매하게 한 거 같습니다. 예시의 상황에서는 "엔진 제어기가 캔 메세지를 보내지 않는다"라는 dtc가 뜰텐데요. 근데 dtc 기록은 제어기마다 각자 하는거니까 이 기록이 자율 주행제어기에 기록될 것입니다. 제가 "자율 주행제어기에서 고장이 발생했었다"라고 얘기한건 자율 주행제어기가 고장 났다는 의미가 아니라, 엔진제어기 통신 관련 dtc가 자율주행제어기에 기록돼있다는 의미로 설명한거였습니다. 근데 아래와 같이 말씀하셨는데 이것도 충분히 가능한 시나리오입니다. "자율주행 제어기에서 엔진 제어기로부터 신호를 받지 못해서, 이에 따라 본인의 동작을 하지 못한 부분에 대한 DTC로써 자율주행 제어기에서 고장이 발생했다"이 부분은 자율주행제어기 sw 개발자가 고장감지하는 로직을 어떻게 구현했냐에 따라 달라질겁니다
- 1
- 2
- 83
질문&답변
MCU의 온도 관련 데이터 저장 영역?
안녕하세요.1. 온도 측정 기능 자체를 표준화하는 오토사 bsw 모듈은 없기 때문에 이 부분은 유저가 적절히 구현을 해야될 거 같습니다. 이때 제어기에서 온도 센싱을 어떻게 하는지에 따라 사용되는 bsw 모듈이 달라질 것입니다.온도에 따른 저항의 크기변화를 활용하는 온도센서를 사용한다면 오토사 adc모듈을 활용하여 전압측정을 해서 온도를 측정할것이고. 온도를 측정해서 Spi통신, uart통신, can통신 등으로 센싱값을 mcu에게 전송해주는 환경이라면 bsw의 spi모듈,uart모듈,can모듈 등을 사용하게 될겁니다. 2.초기 온도값의 의미를 이해하지 못했습니다. Mcu가 wakeup 했을때 지정된 초기값이라고 하셨는데, 초기에 측정된 값을 의미하는 건가요? 이 값이 어디에 활용되는지 용도를 모르겠는데 제어기를 껐다가켜도 계속 유지되야하는 값이라면 오토사의 nvm 모듈 활용하여 nvm에 저장해둘 것이고 그게 아니라면 측정된 온도값을 그냥 특정 변수에 담아두면 되지않을까요?
- 0
- 1
- 45
질문&답변
NM & Default Session 관련 질문
맞습니다. 이 부분을 제가 설명을 빠뜨렸는데 실제로 진단기가 중간중간에 계속 3E 메세지를 보냅니다. 맞습니다. 사실 3E를 계속 보내고있었을테니 세션이 계속 유지가 됐을 것이고 그렇다면 굳이 끝에서 다시 extended session으로 바꿀 필요는 없습니다. 확실히하는 차원에서 넣은 것이기도 하고, 다운로드 진행한 제어기의 경우 마지막에 ecu reset을 하니까 세션이 혼자 디폴트세션일텐데 이 상태에서 펑셔널로 커뮤니케이션 컨트롤, dtc control 메세지 등을 날리면 네거티브답장이 올테니 그것을 막는 차원(?)이 아닐까하고 추측해봅니다.
- 1
- 2
- 65
질문&답변
NM & Default Session 관련 질문
안녕하세요~ 1.이해하신 내용이 맞습니다. 2.각 제어기가 켜지는 조건은 제어기마다 제 각각이라 천편일률적으로 얘기하긴 어려운데요. 몇가지 예시를 들면 제어기를 off 했을때, 해당 제어기에서 mcu를 off하지만 대신에 통신 트랜시버, 혹은 PMIC라고 불리는 mcu에게 전원을 공급하는 장치를 standby mode라는 모드로 유지합니다. Standy 모드에서는 전력을 매우 적게 사용하면서 외부의 신호만 감지하게 됩니다. 외부 신호의 예시는 특정 캔메세지, 혹은 사용자가 누르는 버튼으로부터 전달받는 전기적 신호 등이 있습니다. 이런 신호를 전달 받으면 standby 모드에서 깨어나면서 다시 mcu를 on해서 제어기가 켜지게 됩니다.
- 1
- 2
- 65
질문&답변
레지스터의 메모리 크기에 꼭 맞춰 포인터 자료형을 선택해야할까요?
네 이해하신 내용이 맞습니다.한 줄로 답변하려니 성의 없어보이는데.. 이해하신 내용이 맞아서 더 부연 설명할 게 없네요..^^;;
- 0
- 1
- 35
질문&답변
SW reprogramming 과정에서 질문
안녕하세요.1번 질문) 해당 부분(SW 다운로드 검증절차)는 표준에서 정확한 방법을 정의 한 건 아니라서OEM에서 사양으로 정할 부분입니다.그리고 OEM에서 사양이 정해지면, 부트로더를 그 사양에 맞게 구현하는 것입니다.그래서, 1번 질문에서 검증 결과 값을 메세지 파라미터로 보내는게 사양이라면,애초에 부트로더 SW 구현하는 사람이 그에 맞게 SW를 구현해야 하므로,Hex파일에 있는 모든 값을 인풋으로 판단하게 부트로더를 구현해야 할 것입니다.2번 질문)이것도 정답이 딱 정해져 있는게 아니라서 천편일률 적으로 답하기가 어렵습니다.2byte는 설명의 편의상 제가 예시를 든 것이고.. 4byte, 32byte를 쓰는 경우도 있구요.보안성을 강화하기 위해서 검증결과값 계산할때 암호키를 사용해서 암호화 하는 방식을 사용하기도 합니다.이 부분은 사양마다 워낙 다른 부분이라 일괄적으로 답을 드릴 수가 없고.. 대강의 과정만 제가 이해하기 쉽게 예시로 든 것입니다. ※ 1번 질문을 제가 제대로 이해하고 답변 드리는건지 모르겠네요.. 답변이 됐을까요??
- 1
- 1
- 43
질문&답변
강의 자료 다운로드
아 죄송합니다. 강의자료 업로드를 깜빡했습니다. 오늘안에 업로드하겠습니다
- 0
- 2
- 38
질문&답변
SWC에서 Port의 존재 이유?
Swc를 하나의 c 파일이라고 생각해보면, c언어 sw 개발할 때 서로 다른 c 파일 간에 데이터를 주고 받거나 서로 함수를 호출하는 등 파일 간에 소통을 하는 경우가 많은데요. 이때 전역변수를 활용하거나 혹은 함수 호출해서 코드구현하면 되는데..오토사에서는 굳이 포트라는걸 사용하는걸 규칙으로 정했는데.왜 만들었냐고 하시면 그 의도를 제가 100% 완벽하게 설명하긴 힘들지만swc 간의 연결 관계를 체계적으로 관리하기를 원해서 그런게 아닌가싶습니다.예를 들어 A Swc와 B Swc 간에 전역변수를 선언해서 extern 으로 데이터를 주고받게 코드 구현을 할 수 있는데 구현이 어려운건 아니지만, 두 swc간에 이런식으로 서로 주고받는 정보들이 많이 있다면, 이런 부분들을 체계적으로 관리하기가 어려울거 같습니다. Hw의 경우 hw 소자들간의 연결관계를 회로도를 열어서 확인해보면 바로 알 수 있듯이, sw도 그런식으로(?) 관리되기 원하는게 아닌가 싶습니다.
- 0
- 1
- 40
질문&답변
Bootloader SW 관련 질문
안녕하세요.1번 질문) 두 개의 sw를 각각 빌드해서제어sw의 hex파일 , 부트로더의 hex파일두 개를 만든 후말씀하신 것처럼 다운로드를 각각 수행해서 2번 다운로드 할 수도 있구요.아니면 hex파일 두 개를 하나로 합쳐주는 툴이 있어서 그런 툴을 사용해서 hex파일을 하나로 합친 후에 그 hex파일을 한번에 다운로드 하는 방법도 있습니다.참고로 부트로더와 제어sw 의 hex파일 주소 영역이 서로 중복되지 않아야할텐데, 이거는 자동으로 되는게 아니라.컴파일러의 링커스크립트 파일 셋팅을 통해서 빌드 결과물이 담길 메모리 위치를 지정할 수 있습니다. 그래서 부트로더sw 빌드 할때의 링커스크립트.제어sw 빌드할 때의 링커스크립트를 개발자가 적절하게 셋팅을 잘 해줘야합니다 디버거로 다운로드 할 때는 디버거가 플래시 컨트롤러를 컨트롤해서 다운로드합니다. Mcu에 sw를 전혀 다운로드 하지 않은, 말 그대로 공장에서 갓 출시 된 상태라면 erase 없이 곧바로 write 할 수 있을거 같기도 한데요. 그런데 디버거로 sw 다운로드를 딱 1번만 하는게 아니고 수시로 하기 때문에 확실히 하기 위해서 디버거가 다운로드하기전에는 erase 부터 수행하고 flash write 를 합니다.
- 1
- 1
- 48