본문 바로가기

C 언어 프로젝트 - 하기 전에 주의해야 할 점 프로그램의 크기가 커지다 보면 파일들을 나누게 되고, 당연히 헤더 파일들이 필요해진다. 위 사진과 같이 헤더 파일을 include하면 그 헤더를 통째로 가져오게 된다. 위에서 add_song이라는 함수는 실제 main문에는 없지만 include한 library.c에 있기에 오류 없이 넘어갈 수 있다. 이후에 이 main문에 있는 add_song과 library.c에 있는 add_song을 연결시켜주는 건 linker가 해주는데 일단은 넘어가자. 헤더 파일에 적힐(공유할) 내용들은 매크로, type정의 / 함수 / 변수 들이다. 가장 까다로운 것이 변수인데, 헤더 파일에 a라는 변수를 선언하고, 이를 include하고 있는 다수의 소스들이 이 변수를 변경하면 혼란이 발생한다. 그렇다고 해서 다시 정의하자니..
mbed os - 간단한 프로젝트 mbed -cli를 설치하기 위해서는?? 메뉴얼을 따라하면 된다. 그 와중에서 생기는 문제들에 대해서는 전에 포스트를 하였는데, 기복적으로 지금 포스트를 하는 상황에서 나의 개발환경은 다음과 같다. 윈도우 10mbed 1.8.3GNU Embedded Toolchain for Arm 2018-q4-major파이썬 3.6.6TARGET=DISCO_L475VG_IOT01A 따라서 나의 예제를 그대로 누군가 따라하고 싶다고 하면, 일단 mbed-cli가 설치되어 있고, 컴파일러가 설치되어 있어야 하며, 것이지만 컴파일을 하는 데에 문제가 없어야 한다. 그런데 어떤 예제가 있어야 컴파일에 문제가 있는지 알 수 있을 것이다. 간단하게 보드 안에 내장된 led를 키고 끄는 작업을 하는 예제를 돌려볼 것이다. 작업을 ..
('채식주의자'를 읽고) 부드럽고, 쫄깃한 그 질감 때문일까. 아니면 갖은 향신료와 양념으로 버무려진 자극적인 맛 때문일까. 사람들은 '고기'를 좋아한다. 무언가 기념하고 싶은 특별한 일이 있거나, 신체가 허약해졌다던가 하는 일들이 있을 때면, 우리는 '고기'를 먹는다. 우리가 먹은 '고기'는 소화되어 다시 우리가 된다. 그래서 어떤 면에서 우리는 '고깃덩어리'이다. 한때는 자신의 의지로 살아 움직였을 '고기'들이 다른 개체의 몸에 귀속되어 버렸다. (본 서평에서 '고기'라 함은 채식주의의 반대로 칭하였습니다. 채식주의도 어러 종류가 있고 주인공이 어떤 특정한 채식주의라고 단정지을 수가 없어서 이에 반하는 부류를 '고기를 먹는다.' 라고 하였습니다.) 주인공은 꿈을 꾸게 된다. 그 이후 그녀에게 식사를 준비는 무고한 생명을 빼앗..
('저도 과학은 어렵습니다만'을 읽고) 어렸을 때에는 몰랐었다. "과학자가 되고 싶어요~!"라고 말하면서 떠올린 이미지는 삼각 플라스크와 비커가 가득한 실험실에서 부스스한 머리와 동그란 안경을 쓴 사람이었다. 고등학교를 거치면서 과학은 물,화,생,지가 되었고, 어떤 과목이 점수를 받기 쉬운가에 따라서 그 과목에 대한 이미지도 바뀌어 나갔다. 지금도 완전히 성장했다고는 말할 수 없고, 심지어 대학을 졸업한 것도 아니지만, 일단 나는 공학 계열로 진학을 하였고, 나에게 과학은 어떤 분야가 취업이 잘 되는지에 따라서 또다시 새로운 이미지를 구축하였다. 순수 과학은 어렵고 고단한 길이야. 그렇다고 누가 알아주지는 않지만, 누군가는 해야 하지. 나는 그럴 위인이 되질 못해 저기 저 똑똑한 사람들이 열심히 노력해서 신기한 결과를 보여주면 나는 그저 아는..
SLAM 공부했다 - (2) 코드로 넘어가기 전에 이전 내용을 복습하는 차원에서 matrix를 fill-in하는 실습을 다시 한 번 해보자. 문제를 풀면서 이런 생각이 들 수가 있다. "그럼 계속해서 움직이고, Landmark들이 계속 늘어나는 상황이면 행렬이 엄청나게 커질 텐데 프로세서가 버틸 수 있을까??" 그래서 이번에는 이에 대한 해결책을 제시한다. Online-SLAM!!! 상황에 따라 다르지만, 사실상 계속해서 motion/ measurement를 시행하면서 이 모든 data가 필요한 것은 아니다.로봇에 달린 프로세서에게 부담을 주기도 싫고, 사실상 내가 필요한 것은 가장 최신의 정보들과만 관련이 있다!! 라고 한다면 이 Online SLAM이 적합하다. Landmark들은 언제 또 지날지 모르니까 버릴 수 없고, 가장 ..
RTOS 시스템 mbed os - thread 정리 우선 개념부터 잡고 가려고 한다. 나도 착각하고 있던 부분인데, RTOS가 (Real-time)이 들어간다고 해서 막 실시간으로 뿅뿅 되고 하는 그런 개념이 아니다. RTOS는 내가 원하는 시간 내에서 실행을 시키게 하는 것이 목적이다. 당장 뭔가를 자르는 공장이라면, 사람 손가락이 들어갔을 때, 손가락이 톱에 닿기 전에 멈추게 하는 것이 목적일 것이다. 그런데, 내가 여유롭게 안마 의자에 앉아있는 상황에서, 반드시 안마의자를 작동시킴과 동시에 안마를 시작해야 하는 것은 아니다. 조금 늦게 작동하더라도 사용자에게 아주 큰 불이익이 있는 것은 아니다.(오히려, 스무스하게 작동되게 한다면 더 큰 편안함을 느낄 것이다.) 그런데 이 두 상황 모두 임베디드 시스템이고, RTOS를 쓸 것이다. 잠시 정리를 하자면..
("파이썬 핵심 개발자들과의 인터뷰"를 읽고) 파이썬? 프로그래밍 언어이다. "파이썬 핵심 개발자"라니, 뭔가 잘못 질문하면 붙잡혀서 이해할 수 없는 말들을 듣고 있어야만 할 것 같다 :0. 그런데, 책을 읽고 난 지금의 시점에서 나는 책의 표지에 다시 한 번 눈길이 가지 않을 수 없었다. 우리가 영어를 배우는 이유가 무엇일까? 라는 질문이 주어졌을 때, 다양한 문화의 사람들과 직,간접적으로 의사소통할 수 있다, 원하는 정보를 재빠르게 취득할 수 있다 등 수많은 이유가 있을 것이다. 이 중에서도 내가 강조하고 싶은 것은, '같은 언어'를 사용하는 사람들끼리는 그들 사이의 물리적 거리, 살아온 배경, 민족이나 성별에 관계없이 이야기할 수 있다는 것이다. 물론 영어를 배우는 것과 파이썬을 배우는 것에는 차이가 있겠지만, '언어'라는 측면에서 이 둘은 이..
mbed os cli 개발 환경 구축 (python3) mbed 워크샵을 다녀 왔다. 이런 시뮬레이션도 제공을 해 주고, 회원 가입을 한다면 아래와 같은 웹 컴파일러도 제공을 해 준다. 그런데, 실제로 이를 사용해 보니, 네트워크 상태에 따라서 시간도 많이 걸렸고, 당연하지만 인터넷이 연결되지 않는 환경에서는 사용할 수 없다는 단점이 있었다. 그래서 개인 노트북에 개발환경을 구축해 보았다. 개발자 페이지에 있는 설치 프로그램을 실행시키면 사실 문제가 없을 것이다.(사실 나는 이렇게 하지 않아서 장담할 수는 없지만...) 그렇지만, 조금 귀찮더라도 직접 하나하나 설치를 하면서 컴파일까지 가는 과정을 수행해 보았다. 이에 그 기록을 남긴다. 나의 개발 환경 : windows10 && python3.6.6 설치해야 할 것 : python && pip (앞서 보이듯..