2020.01.02

오늘의 개발

Matlab/Simulink으로 짜여진 내비게이션 원본 데이터를 처리하는 부분을 임베디드 시스템에 올리기 위해서 C언어로 작성하는 작업

작업한 내용

내비게이션 CAN 메시지 레이아웃 작업
내비게이션 데이터를 처리하는 Matlab코드의 큰 틀을 C언어로 옮기는 작업

  • SEG, CUR, SLP 처리하는 부분은 시간 관계상 내일이나 토요일부터 다시 진행할 예정

공부한 내용

다양한 변수 선언 방식에 대해서 공부함 (union, typedef 등)
함수에서 구조체를 반환하는 방법에 대해서 공부함

공부해야하는 내용

함수에서 2차원 배열을 반환하는 방법
선언한 2차원 배열의 원소 접근을 쉽게 하는 방법
2차원 배열의 원소를 크기에 따라 정렬하는 방법

느낀 점

오늘 한 일들은 C언어에 대한 감각을 살리는 작업이었다. 짜여진 코딩을 C언어로 옮기면서 C언어 포멧에 대해서 다시 한 번 생각해보고, 자주 쓰는 기능들이 어떤 형식을 가지고 있는지 확인하는 시간이었다.

Matlab에서 제공해주는 함수를 엄청나게 많이 써서 코딩을 했는데, 이런 함수들이 C언어에서는 구현되어있지 않은게 너무 많아서 직접 다 구현을 해야할 것 같다… 이게 제일 큰 난관이다!

특히 배열의 여러 원소를 한번에 처리하는 부분을 Matlab에서는 굉장히 간단하게 할 수 있는데, C에서는 하나하나 해줘야하는 것 같아서 고민이다. 물론 Matlab 함수도 들어가보면 결국 하나씩 다 접근하긴 할테지만 그걸 내가 직접 짜야한다니…

이번 기회에 C 개발 실력도 늘리고 공통적으로 쓸 수 있는 코드를 만들어서 가지고 있으면 나중에 쓸 때에는 바로 가져다 쓰면 되니까 괜찮을 것 같긴 하다.

그리고 생각보다 static으로 선언해줘야하는 배열의 숫자가 많아서 메모리 이슈가 생길 것 같은 불길한 예감이 든다.. 마르코프 체인을 RAM에 올릴 때 RAM 부족 때문에 프로세스가 종료되는 일이 일어날 것 같은 불길한 기분! 이 부분에 대해서 인지하고 있자.