안녕하세요 저는 자동차업계에서 MCU SW 개발 업무를 하고 있습니다.
학교 다니던 시절 임베디드 쪽에는 전혀 관심이 없었는데 회사에서 MCU SW 업무를 맡게되면서
많은 어려움을 겪었습니다.
무엇을 하나 새로 배울 때마다 근데 이게 왜 이렇게 되지? 어떻게 이렇게 되지? 궁금함이 꼬리에 꼬리를 물었고 그런 부분들을 하나하나 찾아가며 궁금증을 해결하였습니다. 그런식으로 혼자 배우다보니 지금은 오히려 다른 사람들보다 훨씬 제 직무에 대해서 잘 알고 있다고 자부합니다.
신입사원 때 고생하던 과거의 저 자신에게 알려준다는 마음으로 강의합니다.
Courses
Reviews
- CANoe (For CAN Communication) Explained by a Practitioner
- CANoe (For CAN Communication) Explained by a Practitioner
- Automotive SW - Conquering UDS Diagnostic Communications
- [AUTOSAR] Complete AUTOSAR basic concepts for new employees
- CANoe (For CAN Communication) Explained by a Practitioner
Posts
Q&A
부트로더도 업데이트를 하나요?
이 부분도 실무적으로 중요한 부분인데프로젝트마다 사정이 달라서 강의에 담지 못한 내용인데요.보통은 부트로더도 업데이트 할 수 있도록 환경을 구성하긴합니다.대표적인 방법은 부트로더를 2개로 분리해서 개발하는겁니다.하나는 부트로더를 다운로드 받기 위한 부트로더.또 다른 하나는 강의에서 다뤘던 제어sw 다운로드를 위한 부트르더.이렇게 구성하면 제어sw 다운로드 하듯이 부트로더를 리프로그래밍해서 업데이트가 가능합니다
- 1
- 2
- 17
Q&A
AUTOSAR compliance
안녕하세요. 질문 주신 부분은 저 또한 일을 하면서 항상 궁금했던 부분인데요. 결론만 먼저 말씀드리면 죄송하지만 솔직히 저도 잘 모르겠습니다 ㅠㅠ실제로 일을 하다보면 모든 것을 swc 러너블로 만들어서 사용하기에는 알맞지 않은 경우가 제법 많습니다. (답변 쓰면서 떠오르는 전형적인 예시 : bsw서비스 api는 rte port를 통해서 호출하는게 규칙인데. 그냥 일반 함수처럼 곧바로 api 직접호출)그래서 실제로 오토사가 제시하는 정석적인 방법을 사용하지않고 개발하는 경우가 제법 많이 있습니다. 그러면 저도 이렇게 해도되는건가? 하는 의문을 갖게되는데 그래도 sw동작 효율을 따지면 오토사 룰을 어기는게 낫다고 판단되면 그렇게 많이 해왔습니다. 그리고 이렇게 개발했을때 oem에서 그 정도 레벨까지 따져서 묻고, 확인하는 경우는 제 경험상 없었기 때문에 별 문제는 없었습니다. 결국 고객입장에서 오토사는 최소한의 품질보증(?)을 위한 수단일뿐 오토사 그 자체가 최종목표가 아니기 때문에, 결론적으로는 제품 동작만 잘된다면 오토사 룰을 어기더라도 큰 문제는 없지않을까 싶습니다. 애초에 sw 내부를 그 정도까지 oem에서 일일이 체크하는 경우를 못봤습니다.그렇지만 전세계의 모든 케이스를 제가 다 알고있는건 아니기에 100% 문제없다고 장담드릴수는 없겠습니다..
- 0
- 2
- 26
Q&A
디버거와 디버깅
안녕하세요.. 질문의 의도를 제가 정확하게 이해를 못했습니다.IDE 에서 브레이크포인트 찍거나, 변수값 확인하거나,변수값 변경하거나, SW를 MCU에 다운로드 하거나 하는 그런 기능이 디버깅 기능이고.이런 기능을 사용 하려면 결국 사용자의 PC와 MCU 간에 서로 소통을 해야되니까중간에 디버거라는 하드웨어가 필요한 것입니다.
- 0
- 1
- 21
Q&A
adc
안녕하세요. 어떤 것과 헷갈리신건지 모르겠지만일반적으로 MCU 가 제공하는 기능중에 ADC 라고 하면아날로그 to 디지털의 약자로 발생된 전압(아날로그 신호)를 측정해서 측정 값으로 바꿔주는 기능을 의미합니다.혹시 말씀하신 것은 DAC가 아닌지요?
- 0
- 1
- 19
Q&A
BSW 개발자의 역할
그리고 두번째 질문도질문 자체가 좀 애매한데요.부트로더, UDS 기반의 서비스 구현을 오토사 기반의 SW로 개발할 수도 있고Non Autosar SW로 개발 할 수도 있습니다.어떤게 더 유리한 방법인지를 따져서 정할 문제이고 정해져 있는 규칙은 없습니다. 이건 부트로더,진단통신 SW 뿐만 아니라 어떤 SW 이든 마찬가지인데어떤 SW를 개발하든 꼭 오토사 기반으로 개발할 필요는 없습니다.재사용성 ,개발효율 이런걸 따져서 유리한 방법을 고르면 됩니다,, 실제로 부트로더 sw만 별도로 판매하는 업체들도 있는데그 업체들도 오토사기반으로 개발된 부트로더를 판매하기도하고, 오토사 기반이 아닌 부트로더를 판매하기도 합니다.
- 0
- 3
- 68
Q&A
BSW 개발자의 역할
안녕하세요. 답이 늦어서 죄송합니다.질문 주신 내용은 답변하기가 상당히 애매한데요.. 우선 첫번째 질문에 대한 답변입니다.질문 주신 내용은 R&R 에 관한 것이라 회사마다,팀마다,프로젝트마다 정하기 나름이라명확하게 구분 지어서 답을 드릴 수가 없습니다.제가 업무 할 때도 항상 R&R을 어떻게 나눌건지 항상 이슈가 되는 부분입니다.일단 오토사의 이론적인 컨셉만을 기준으로 얘기하면BSW 영역은 Configuration만 하고 별도로 개발자가 핸드 코딩을 하지 않는게 기본적인 컨셉입니다.근데 실제로 일을 해보면BSW 개발자도 별도로 SWC와 러너블을 만들어서 나름의 로직을 구현하는 경우들이 있고.또 BSW 에서 Configuration 한 내용에 따라 SWC 러너블은 아니지만 그랑 비슷하게 속이 비어져있는 Callback 함수가 code gen되는 경우가 있는데그 callback 내부에 코드 구현을 어떻게 하냐에 따라서 BSW의 동작이 달라집니다.그래서 이런 부분은 BSW 개발자가 코딩을 하기도 합니다.그리고 SWC 러너블이 실행되려면 일단 OS가 돌아간 이후부터 돌아가는데OS가 켜지기 전에 수행되는 여러가지 고장진단 로직 이런것들을 BSW 개발자가 구현하기도 합니다.. 뭐라고 정리해서 답을 드리가가 어렵네요..
- 0
- 3
- 68
Q&A
120옴 저항 관련 문의
답이 늦어 죄송합니다.솔직히 말씀드리면 캔 종단저항에 대해서 제가 모든 내용을 완벽하게 파악하지 못 했습니다. 회사에서 업무하면서 통신 에러나면 종단저항 연결했는지 확인해보라고 배운 정도(?) 입니다. ㅠㅠ일단 제가 파악한 바로는 종단저항 사용 목적이 신호왜곡 방지 목적인데, 종단저항이 없다고해서 무조건 에러가 나는건 아닌거 같습니다. 그래서 강의에서도 제가 양끝단에 120옴 저항 다는궐 권장하고 있다고 표현했던겁니다. 일단 저도 완벽하게 이해는 안되지만 캔통신 장비(예를 들어 canoe) 를 사용할 때 종단 저항이 없어도 에러가 안나는 경우가 있고, 제어기 쪽에 하나만 달아도 에러가 안나는 경우가 있는거 같습니다. 캐노의 경우 장비에 따로 종단저항이 내장되어있지않기 때문에 질문1번에 대해 답을 하자면, 저항이 하나만 있는 상태가됩니다.. ( 왠지 정확한 이유는 모르겠지만 그래도 통신이 되더라구요..) 2번질문. 실차에는 이미 통신을 할 수 있게 버스에 저항을 달아놨을겁니다. 그래서 canoe에 저항 안달아도 됩니다.
- 0
- 2
- 58
Q&A
B라는 제어기가 CAN 버스에 CAN 신호를 송신하고 있다면 A제어기는 B제어기의 작업이 끝날 때까지 CAN 신호를 송신 못하나요? 작업이 완료될 때까지 기다려야 하나요?
기다리는 주체가 캔컨트롤러라면 질문하신 내용이 맞습니다. 하나의 버스에 여러 메세지를 동시에 보낼 수 없으니 캔 컨트롤러가 메세지 보내려고 했는데 다른 제어기가 이미 메세지 송신 중이라면 해당 메세지 송신 완료될때까지 기다렸다가 송신을 시도합니다.
- 0
- 2
- 33
Q&A
FTB(Fault type Btye) 관련 질문!
아래 답변은 AI 자동답변인데 맞는 얘기입니다.Fault type byte는 말그대로 에러를 적당한(?) 성격으로 분류해서 가독성을 제공합니다. 예를들어 배터리고전압,산소센서고전압. 이그니션고전압 이런 고장들이 있다면 "고전압고장" 이라는 분류로 묶어서 fault type byte를 정하는 식입니다. 이렇게 사용하면 FTB만 봐도 대강 어떤성격의 고장인지 분류할 수 있어 편합니다
- 0
- 2
- 70
Q&A
여러개 제어기가 동일한 메시지를 수신할 때 동시에 수신하나요?
안녕하세요 메세지를 수신한다.라는 문장을 어떻게 해석하냐에 따라 다를거 같은데요.일단 메세지 수신과정을 3단계로 분리해보죠.1.메세지가 전선을 타고 전달되어 수신측 제어기의 mcu pin에 전달2 캔 컨트롤러가 메세지를 수신하여 특정 레지스터(메모리)에 수신된 메세지를 저장3. sw는 해당 메모리에 접근하여 저장된 값을 읽어감 메세지가 전달되려면 어쨋든 전선을 통해 신호가 전달되야하고. 신호가 전달되려면 매우 빠른 속도이긴해도 어쨋든 송신측으로 부터 수신제어기가 얼마나 멀리떨어져있냐에 따라서 전달되는데에 시간차가 있긴할겁니다.근데 0.000001초 도 차이가 안날거라 사실상 거의 동시일겁니다. 그리고 그렇게 신호가 전달되고나서 캔컨트롤러가 메세지값을 파싱해서 메모리에 저장하는것도 소요시간이 거의 똑같을겁니다.그래서 1번,2번 상황까지는 b.c.d제어기 모두 거의 동시에 완료될겁니다.그리고 3번의 경우는 메세지 읽어가는 sw를 어떻게 구현했는지에 따라 타이밍이 달라질거라 누가 더 빨리받을지는 답변이 불가하겠네요
- 0
- 2
- 46