임베디드.일렉트로닉스 ( 670 ) SES . 해결 . #error "libc++ does not support using GCC with C++03. Please enable C++11" SES 에서 C++ 코드 추가하여 빌드시 아래 파란박스 처럼 error 나오는 경우 프로젝트 옵션에서 아래 붉은색 박스 처럼 설정하여 해결. 즉, C++ Language Standard 기본 설정은 gnu+98 로 되어있다. 이것을 C++11 로 변경 한다. 기타 C++20 까지 지원되나봄. 이번 설정 하면서 처음 알았음. 이제 임베디드 코딩도 C++ 이 대세가 될듯함. 첫 등록 : 2023.07.27 최종 수정 : 단축 주소 : https://igotit.tistory.com/4749 2023. 7. 27. J-LINK . 디버거 J-LINK - SEGGER 사의 JTAG/SWD 디버거 기기 브랜드 명. J-LINK 20핀 커넥터 JTAG 핀맵 J-LINK 20핀 커넥터 SWD 핀맵 - 20핀 중에 실제 기능 할당된 핀은 1,7,9,11,15,19, GND 총 7핀. - 실제 사용시 SWO와 5V-Supply 는 거의 사용하지 않기에 총 5핀 결선이면 충분하다. - 5핀 : VTref, SWDIO, SWCLK, RESET , GND - 아래 회로는 5핀 일자 커넥터 활용시 사용되는 핀맵 예. 커넥터 1번핀 VTref This is the target reference voltage. It is used to check if the target has power, to create the logic-level reference fo.. 2023. 7. 26. nRF52 . 코드에서 핀 리셋 용 GPIO 핀 연결 설정 . CONFIG_GPIO_AS_PINRESET SES 프로젝트 에서 핀리셋 GPIO 핀 연결 설정 프로젝트 Option 에서 Preprocessor Definitions 부분, CONFIG_GPIO_AS_PINRESET 이 기록되어있으면 GPIO 핀 을 핀 리셋 용으로 연결 시킨다는 설정이다. 기본 P0.18 핀 이 리셋 용도로 사용된다. 핀리셋용도로 GPIO 핀을 연결하지 않으려면 위 창에서 CONFIG_GPIO_AS_PINRESET 을 삭제한다. 설정 변경 이후 필수 처리 사항. CONFIG_GPIO_AS_PINRESET 설정 변경한 경우 타켓칩의 플래시 메모리를 모두 삭제(erase all)하고 펌웨어 기록해야 설정 변경한 것이 적용된다. SES IDE 에서는 erase all 기능이 제공되지 않으므로 nRF Connect Programmer .. 2023. 7. 26. nRF52 . 리셋 사유 코드에서 확인 방법 nRF52 리셋 사유 확인 코드 main() { APP_ERROR_CHECK(NRF_LOG_INIT(NULL)); NRF_LOG_DEFAULT_BACKENDS_INIT(); uint32_t ui32_reset_reason = NRF_POWER->RESETREAS; NRF_LOG_INFO("Reset Reason = 0x%x\n", ui32_reset_reason); NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; // a field is cleared by writing 1. .. // softdevice 활성화 전에 상기 실행해야함. while() { ... } } 상기 코드에서 NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; 부분이 통상.. 2023. 7. 26. nRF52 . reset Reset Reason - nRF52 는 총12개의 리셋 요인 있고, 레지스터 RESETREAS 에서 어떤 요인에 의하여 리셋되었는지 확인 가능. - 레지스터에는 9개의 리셋요인만 있고, 9개 중 어느 것도 아닌 경우에는 파워온 / 파워실패 /브라운아웃 리셋인 경우이다. from : https://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.7.pdf 페이지 78 코드에서 리셋 사유 확인 방법 별도정리. nRF52 . 리셋 사유 코드에서 확인 방법 nRF52 리셋 사유 확인 코드 main() { APP_ERROR_CHECK(NRF_LOG_INIT(NULL)); NRF_LOG_DEFAULT_BACKENDS_INIT(); uint32_t ui32_reset_reason =.. 2023. 7. 26. SES . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. Segger Emdedded Studio (SES) 에서 프로젝트 복사 방법 SES 에서 이미 만들어져 있는 프로젝트 복사하여 다른 이름 새프로젝트 만들기 상황예 프로젝트 폴더구성 템플릿 3 ( 타겟 칩 nRF52840 으로 하고, nRF5_SDK 기반 프로젝트 폴더 구성) 형식으로 구성되어있는 상태. 아래 그림에서 WORK_NRF5 폴더내부에 nRF5_SDK 폴더 및 내가 만든 SDK 류들인 CySDK_nRF5 도 있고, 동일 레벨에 프로젝트 1개 단위로 폴더들이 생성되어 있는 상태 위 프로젝트 중에 붉은 박스 (폴더명 : D0F4_BLENUSC)에 있는 1개의 프로젝트를 아래 그림의 붉은 박스 (폴더명 : WORK_NRF5_CyUF ) 내부에 프로젝트명 : CyU3F1_BleNusCSIngle 라는 .. 2023. 7. 24. nRF52 . 플래시 메모리 쓰기, 지우기 SoftDevice 활용시 플래시 쓰기 , 지우기 펌웨어에서 SoftDevice 활용하는 경우에는 플래시 메모리 쓰기, 지우기 위하여 직접 NVMC 이용하지 못하며, SoftdDevice 에서 제공하는 아래 함수 이용하여 쓰기 지우기 해야함. 또한 이 함수들은 비동기함수(= non-blocking 함수) 여서 함수 호출시 실행 성공 여부 무관하게 즉시 리턴되며, 플래시 쓰기 , 지우기 성공여부는 이벤트로 제공된다. 지우기, 쓰기 함수 호출이후 발생하는 이벤트 NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started... 2023. 7. 24. STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리. STM32. nRF52. ESP32. EFM8. EFM32. PSoC 총정리 제조사 칩 주요특징 실리콘랩 8bit MCU EFM8 시리즈 32bit EFM32 시리즈 EFM8 싸다. STM STM32 . 최고 항상 만족. Cypress pSoC pSoC6 은 기대해볼만. NORDIC nRF52 블투 무선솔루션. espressif ESP32 WiFi,BT,Dual CPU MCU 중요도 1순위 : STM32 2순위 : nRF52 실리콘 랩과 Cypress 것은 "개인"적으로는 별루 안중요한 곳에 사용되었음. 반면 STM32 는 고신뢰도 확고한 동작에서 만족감, 성취도 최대. nRF52 는 무선통신기능이 핵심임. STM사가 무선솔루션에서는 아직은 약함(개인적 주관적 평가). 노르딕사는 무선솔루션에 목숨건 업체.. 2023. 7. 22. FT813 . Embedded Video Engine . 터치 , 디스플레이 FT813 Display, Audio and Touch Graphics Controller ICs 데이터 시트 : http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT81x.pdf 제조사 제품 페이지 : https://www.ftdichip.com/old2020/Products/ICs/FT81X.html FT813 Features Maximum screen resolution increased from 512 x 512 pixels to 800x600 pixels Colour depth increased from 18-bit to 24-bit (FT812 and FT813) Extra large ROM fonts added Orientation .. 2023. 7. 21. 칩 . FT240XQ . USB to 8bit FIFO . 1MBytes/sec FT240XQ - USB to 8bit FIFO. 1MByte/sec. 외형 특징. Entire USB protocol handled on the chip. No USB specific firmware programming required. Fully integrated 2048 byte MTP Memory for storing device descriptors and CBUS I/O configuration. Fully integrated clock generation with no external crystal required plus optional clock output selection enabling a glue-less interface to external MCU or FPGA. Data .. 2023. 7. 21. STM32CubeIDE . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. 참고 : 본 포스팅의 다른 프로젝트 복사 하여 새 프로젝트 만드는 방법은 STM32CubeIDE 외에도 이클립스 기반한 다른 IDE (예 : Simplicity Studio ) 들에서도 동일하게 적용됨. STM32CubeIDE . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. 프로젝트 소스 폴더 위치에 따라 2가지 상황이 있다. 상황1. - 새로만들 프로젝트 소스 폴더 와 복사할 프로젝트 소스 폴더가 동일한 경우 STM32CubeIDE 에서 프로젝트 복사 붙여넣기 하면서 프로젝트 이름을 새로 지정해주고, STM32CubeMX 파일인 .ioc 파일명 수정하여 프로젝트명과 동일하게 수정한다. 복사할 프로젝트 마우스 우클릭하여 뜬 메뉴(아래 화면) 위 화면에서 Copy 하고 Pate 하면 아래처럼 프로젝트.. 2023. 7. 16. STM32CubeIDE . 지속 가능 가치 누적 작업 폴더 구성 개요 . 지속 가능한 가치 누적 작업 폴더 구성 코딩 뿐만이 아니라 거의 모든 생성류의 프로젝트 결과물들은 내가 작업하여 생성한 여러가지 것들의 결합으로 만들어진다. 여러 프로젝트들을 진행하다보면 필연 내가 작업한 것들도 방대하게 많아진다. 관리 체계가 부실하면 내가 만든 것도 어디에 쳐박혀 있는지 찾지도 못하는 사태 발생하고 했던 작업 또 하고 할때마다 모든 것들을 새로 하는 지독히도 비효율적인 작업 방식이다. 최소한 프로젝트 작업 폴더 구성만이라도 관리되고 나의 작업 결과물들이 일관된 형식으로 정리되면, 현재 내가 수행하는 이 지긋지긋한 개노가다의 결과물들이 쓰레기통에 버려지지 않고 지속 가능한 가치 누적 저장 반복활용 체계 달성된다. 아래 폴더 구성은 STM32CubeIDE 를 예로 하여 프로젝트 .. 2023. 7. 15. STM32 USB DFU . STM32CubeProgrammer 이용 가능 개요 STM32 펌웨어 업데이트 하는 수단 중의 하나인 USB DFU 위한 PC 측 소프트웨어 는 DfuSe 외에도 STM32CubeProgrammer 에서도 가능하다. STM32CubeProgrammer 에서 USB DFU 방법 사전준비 1. 칩에 기록할 펌웨어 파일 - 펌웨어 파일 확장자 : .hex, .elf 2. 타겟보드에서 STM32 를 DFU 모드로 부팅된 상태. - 핀 BOOT0 에 로직로우 인가한 상태에서 핀 리셋하면 USB DFU 모드로 부팅됨 ( 핀 BOOT0 에 로직 하이 인가한 상태에서 핀 리셋하면 노말 모드로 부팅됨 ) . STM32L4+ 계열의 부트로더 상세 STM32CubeProgrammer 에서 USB 선택 - 아래 화면에서 붉은 박스 부분을 USB 로 선택( 기본 ST-LI.. 2023. 7. 15. STM32CubeIDE . Debug . SWV 활성화 . 데이터 그래프로 보기 Serial Wire Viewer (SWV) 활성화 STM32CubeIDE 메뉴 : Run - Debug Configurations ... 클릭하여 뜬 아래 창에서, 탭 Debugger 의 Serial Wire Viewer 에 enable 체크하고 Core Clock 에는 프로젝트에서 설정한 HCLK 값을 MHz 단위로 기록한다. SWV 데이터 트레이스 타임라인 그래프 디버그 모드에서 메뉴 : Window - Show View - SWV - SWV 데이터 트레이스 타임라인 그래프 클릭하면 아래 화면 의 파란 박스 처럼 창이 추가된다. 이 창에는 코드내의 전역 변수의 값을 플로팅 해주기 때문에 매우 편리하게 코드 작동 상황을 확인할 수 있다. 플로팅할 전역변수를 설정하기 위해서는 아래 그림의 붉은 박스 클.. 2023. 7. 14. STM32CubeIDE . 오류 해결 . Debug . No source available for "main() at 0x8000262" 오류 증상 STM32CubeIDE 에서 프로젝트 메뉴 : Run - Debug 클릭하면 아래 화면 처럼 보이고 디버깅 불가 상태 해결책 메뉴 : Run - Debug Configurations... 클릭하여 뜬 창(아래 그림)에서 버튼 Searach Project... 클릭하여 경로 Debug/ 에 있는 것을 선택한다. 포럼 관련글. - 아래 답글 중에 프로젝트 옵티마제이션 설정으로 해결했다는 내용도 있는데, 옵티마이제이션 수정 할 필요없이 위의 설정만으로도 해결됨. Debug: "No source available for main()" I am trying to debug my code, but it just ain't working the way it's working in e.g. the STM32.. 2023. 7. 14. STM32CubeIDE . 프로젝트 생성 방법 STM32CubeIDE 에서 프로젝트 생성 방법 사전 준비 1. PC 에 STM32CubeIDE 설치된 상태 2. ST LINK V2 를 PC 에 연결하고 하기 타겟보드에 연결. 3. 타겟칩 . (본 예에서는 STM32L4R5VI 사용. 타켓칩 품번이 무엇이든 전체적인 방법론은 동일) 이 장착된 타겟 보드. - 본 예에서는 아래 사진의 보드 . 24MHz 외부 크리스탈 장착되어있고 32.768kHz 는 장착 가능한 패드는 마련되어있으나 부품 장착은 하지 않았음. 전원 공급은 마이크로 USB 커넥터로 이뤄지고 3.3 V 레귤레이터 출력 전압이 MCU 로 공급됨. * 기타 : 프로젝트에서 만든 펌웨어 칩에 기록하지 않고 프로젝트 생성만 하는 경우에는 타겟보드와 ST-LINK V2 는 없어도 됨. ST-LIN.. 2023. 7. 13. STM32 . USB 클럭 설정 외부크리스탈 혹은 내장 오실레이터 . Custom HID STM32 의 USB 활용시 클럭 설정 타겟칩 STM32L4R5 계열 (품번예 : STM32L4R5VI) 지원 페리페랄 중 USB 를 enable 하여 활용 하려는 경우 클럭 설정방식 2가지 (외부 크리스탈 혹은 내장 오실레이터) 가능하다. 통상 USB 사용하는 경우 정밀 외부 크리스탈 필수인 경우가 많은데, STM32L4R5 계열 칩은 외부 크리스탈 필수 요구되지는 않는다. 본 포스팅에서는 STM32CubeMX (STM32CubeIDE 내장된 것을 활용하는 예이나, 단독으로 STM32CubeMX 실행하여 설정하는 경우에도 동일함.) 에서 USB 클럭 설정하는 2가지 방식 모두 보인다. 1. 외부 크리스탈 활용하는 경우의 USB 클럭 설정. 24MHz 크리스탈 을 STM32 에 연결 한 경우의 설정. 아.. 2023. 7. 12. GR5515 . 블루투스 5.1 SoC GR5515 . 블루투스 5.1 SoC The Goodix GR551x family is a single-mode, low-power Bluetooth 5.1 System-on-Chip (SoC). It can be configured as a Broadcaster, an Observer, a Central, a Peripheral, and supports the combination of all the above roles, making it an ideal choice for Internet of Things (IoT) and smart wearable devices. Based on ARM® Cortex®-M4F CPU core, the GR551x integrates Bluetooth 5.1 Pr.. 2023. 7. 10. 이전 1 2 3 4 5 6 7 8 ··· 38 다음