본문 바로가기

펌웨어27

IAR embedded workbench와 가격, Crack 이야기 돈 많은 회사에 근무하는 게 아니라면 개발환경은 항상 문제가 된다. 3D CAD나 포토샵 등 유료프로그램은 많이 비싸기도 하지만 단속도 많고 해서 구매하는 경우가 많다.근데 가격도 애매하고 단속도 애매한 프로그램은 구매를 해야 하더라도 크랙을 쓰는 경우가 많다. 펌웨어 개발자라면 다들 알만한 IAR과 keil이 있다.  요즘은 gcc 크로스컴파일러가 잘 나와서 무료버전을 쓰는 사람이 많지만 위의 두 컴파일러는 나름 고가인만큼 다양한 기능을 지원한다. pragma 선언을 연속으로 하게 해 준다던가, 다양한 CPU지원이라던가 가격이야기를 자꾸 반복하고 있는데 사실 keil과 iar은 보통 400만원이 넘는 구매가격을 가지고 있어서프리랜서들은 크랙을 사용하곤 한다.  나도 대놓고 크랙을 씁니다. 쓰세요라고는 .. 2024. 11. 16.
센서 데이터 평균과 중앙값 개발제품에 센서는 빠지지 않는 요소 중 하나다. 단순 gpio로 이루어진 스위치나 온습도 센서, 거리센서 등 다양한 센서가 있다. 개발자는 센서값에 따라 계획한 동작을 처리하면 된다. 다만.. 센서의 성능과 노이즈에 따라 입력된, 수집된 값을 하나만 보고 즉각 동작하는 건 굉장히 위험하다. 비싸고 노이즈 없는 센서라면 괜찮지만 우리(?)가 마주하는 센서는 회사에 이익에 의해 도입된 저렴한 센서이기 때문이다. 그래서 하드웨어팀은 우리에게 소프트웨어로 뒤처리를 맡긴다. 저렴한 센서가 뭐가 문제냐하면 값이 튄다. 정말 튄다.. 예를 들면 온도센서인 경우 온도가 현재온도에서 +-5도씩 나오는 경우도 있다. 이런 경우는 몇 개의 데이터를 수집한 뒤, 평균으로 처리한다. 그러면 마구 피크치는 데이터가 아닌 안정적인.. 2024. 11. 5.
[STM32+ADC+DMA] 정리 #1 ADC는 항상 나에게 어려운 부분이었다. 디지털 처리는 0,1에서 계산으로 시작하지만 아날로그 신호는 기준전압부터 해서 주파수, 레졸루션등 알아야 할 것이 많았다.최근 진행한 프로젝트에서 STM32로 ADC를 연속적으로 처리해야 해서 DMA로 처리해야 한다는 걸 알았고 여러 가지 시행착오를 겪은 일은 정리해 보기로 했다. ADC란? 쉽게 말하면 입력핀으로 입력되는 신호(예 : 전압, Wave 파형)를 0 또는 1로 전환하는 게 아닌 8비트 ~16비트의 값으로 전환하는 것을 말한다. 8비트 기준으로 볼 때 0은 0볼드, 255값은 3볼드의 값으로 바꾸는 것이다. 물론 255일 때의 값은 3V가 아니라 기준전압에 의해 바뀐다. 지금은 3V라고 알고 있자.  배터리 전압을 ADC로 받으면 남은 배터리 용량이 .. 2024. 8. 17.
엑셀 파일 저장하기 (펌웨어) LOG history 구분 1번 내용 2번 내용 3번 내용 4번 내용 저번에 했던 ATSAM4S 프로젝트에서 수신 받는 데이터를 파일로 저장해 달라는 기능이 필요했다. 보통 TXT 파일이나 바이너리 타입으로 저장하지만 여기서 요청사항은 조금 달랐다. 파일을 엑셀로 열어서 보고 싶습니다.  ?? 뭐라고 ?? 엑셀로 파일을 연다고? 그러면 해당 파일은 엑셀파일이어야 한다고?엑셀을 열어서 지원하는 파일 리스트를 찾아봤다. xls 파일이나 xlsx 파일이 가장 유력한데 관련된 오픈소스를 찾아봤다. ( https://github.com/QtExcel/QSimpleXlsxWriter ) 위 오픈소스 말고도 윈도우 C++ 등 여러 가지가 나왔지만 가장 큰 문제는 OS가 돌아가는 환.. 2024. 6. 30.
EFR32BG21 BLE SPP 개발 (3부 인터럽트, BLE) 또 한동안 다른 프로젝트를 하다 보니, 포스팅하는 것을 잊어버렸다. EFR32 GPIO 인터럽트는 조금 특이하다. 보통 EXT 인터럽트 1,2 번 해서 핀별로 인터럽트 핸들러를 지정하거나 하는데, 이번 칩은 핀번호 짝수, 홀수핀으로 인터럽트 핸들러는 지정한다. ?? AN0012: General Purpose Input Output (silabs.com) 내가 했던 프로젝트 제품은 인터럽트를 2개를 받는데, 둘 다 짝수 번이었다. 그래서 EVEN 인터럽트 핸들러로만 동작한다. (PC02, PC04...). 다행히 2개의 핀 이 동시다발적으로 실행되지 않아 문제가 되지 않았지만, 다른 시스템에서는 이점을 조심히 봐야 할 것이다. BLE를 이용하는 제품들 중 Nordic의 NUS 기능이 많이 사용되고 있다. .. 2023. 7. 3.
EFR32BG21 BLE SPP 개발 (2부, GPIO, UART 등) 펌웨어로 무언가를 개발하려면 제일 먼저 하는 건, LED 켜고 끄기다. 사실 더 이전에 하는 일은 전원이 정상 들어오는지? 뻥 터지지 않는지? 오실레이터가 정상적으로 발진하는지, JTAG과 CPU가 정상적으로 통신하는지... 등이 있다. 그래서 가장 마지막에 테스트하는 GPIO로 LED가 제어가 된다면 개발 관련해서는 50% 이상은 한 것이나 마찬가지이다. (개발 관련은..) - GPIO - 출력 설정을 하려면 GPIO_PinModeSet 함수를 이용하면 된다. 포트와 PIN 번호를 가지고 풀업을 하지 말지 그리고 초기 출력값을 무엇으로 할지 결정하면 된다. ​ 또 CMU_ClockEnable 함수로 GPIO 클럭 활성화도 같이 해주면 된다. 위는 PORTD의 4번 핀에 있는 LED를 풀업으로 초기값 '.. 2023. 7. 3.