| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Debug
- esp32
- 디버깅
- c#
- Visual Studio Code
- Arduino
- GPIO
- yocto
- WPF
- UART
- Linux
- buildroot
- platformio
- C++
- Visual Studio
- 라즈베리파이
- 아두이노
- avr-gcc
- raspberrypi
- Debugging
- nucleo
- QEMU
- 리눅스
- bare metal
- Raspberry
- AVR
- vscode
- AArch64
- STM32
- atmel
- Today
- Total
목록전체 글 (81)
임베디드를 좋아하는 조금 특이한 개발자?
개발 환경 OS : Ubuntu 22.04 LTS (WSL2) 개발 보드 : beaglebone black 공식 홈페이지의 설치 방법을 따라 설치 하였습니다.https://crosstool-ng.github.io/docs/install/ Installing crosstool-NGBefore installing crosstool-NG, you may need to install additional packages on the host OS. Specific instructions for several supported operating systems and distributions are provided here. Note that not all the dependencies are currently de..
첨부파일개발 환경 개발 보드 : nucleo-f429zi board개발 프로그램- STM32 CubeMX : 6.12.0- STM32 CubeIDE : 1.16.0개요 임베디드 시스템에서 타이머는 매우 기본적인 기능중 하나로 실습시 반드시 해보는 기능중 하나입니다. 타이머를 사용하는 이유는 특정 테스크를 특정 시간마나 반복하여 동작하거나 특정 시간 이후 실행하기 위해 자주 사용됩니다. 또한, 시스템 전체를 멈추는 HAL_Delay함수(AVR의 경우 _delay_ms 함수)를 사용시 다른 기능도 중단되므로 해당 함수 대신 사용하는 기능이다. 타이머의 동작 방법은 사람이 손가락으로 시간을 세는 것과 같다고 할 수 있습니다. 사람이 손가락을 사용하여 10초를 센다고 하였을 때, 우리는 1초마다 손가락을 ..
해당 문제의 발생 원인은 gperf 버전이 업데이트 되면서 발생하는 문제입니다. 해당 문제를 해결하기 위해서는 3.0.4버전으로 다운그레이드를 할 필요가 있습니다. 먼저 다음의 명령어로 기존에 설치되었던 gperf 를 삭제합니다.sudo apt-get --purge remove gperf 이제 3.0.4버전의 gperf를 설치하도록 하겠습니다.wget http://ftp.gnu.org/gnu/gperf/gperf-3.0.4.tar.gzcd ./gperf-3.0.4.tar.gz./configuremakesudo make install 위 명령어를 사용하여 설치를 완료하였다면 /usr/local/bin 폴더에 gperf파일이 있는 것을 확인 할 수 있습니다.해당 파일을 저희가 터미널에서 사용하기 위해서 파..
알고리즘 문제를 풀 때, 많은 사람들이 accumulate()함수를 자주 사용할 것으로 생각합니다.하지만, 해당 함수를 사용할 때 overflow에 대한 문제가 발생하여 for문으로 직접 합을 구하는 경우도 있을 것입니다. accumulate()함수의 선언을 확인해보면 문제를 해결할 수 있습니다.template _Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init);[실제 accumlate() 함수의 선언은 이렇지 않습니다. 보기 편하도록 필요 없는 부분은 제거 하였습니다.] 여기서 중요하게 보아야 하는 것은 _Tp의 타입이 세번째 인수에 의해 결정 된다는 것입니다.그러므로, 세번째 인수의 타입을 기존 타입보다 더 넓은 범위를 ..
1. STM32의 UART 통신의 문제점 STM32의 가장 큰 문제점은 아두이노에 비해 UART를 사용하기 매우 힘들기에 배우기 힘들어 한다고 생각한다. 내가 경험한 바로 크게 2가지 정도 UART를 사용하는데 힘들어하는 점은 다음과 같다. 1.1. 수신하려는 데이터 길이가 고정 많은 사람들이 STM32를 다루기전에 아두이노를 먼저 사용한 경험이 있는 사람이 대부분일 것이다. 아두이노에서는 굳이 데이터의 길이를 알지 않아도 자동적으로 처리해주기에 개발하는데 매우 편리하다. 하지만, STM32의 경우 데이터를 송수신 하는 경우 데이터의 길이를 미리 알아야 송수신이 가능하다. 특히, 데이터의 길이가 가변적인 경우( ex. 명령어를 보내는 경우) 매우 난감하다. 1.2. 인터럽트가 도중 멈추는 경우 ..
#ifdef __cplusplusextern "C" {#endifint __io_putchar(int ch){ // UART3에 ch에 있는 문자 1개를 1ms내 전송 if(HAL_UART_Transmit(&huart3, (uint8_t*)&ch, 1 ,1) != HAL_OK) return 0; //출력 실패 시 0 리턴 return ch; //출력 성공 시 출력한 데이터 리턴}#ifdef __cplusplus}#endif 재정의한 __io_putchar() 함수에 extern"C"를 감싸주면 정상적으로 동작 한다.
