전체 글 445

[교육후기] OpenCV와 TensorFlow Lite를 활용한 라즈베리 파이 지능형 비전 서비스 개발 - 3일 차(마지막 날)

안녕하세요.  이번에는 교육 마지막 날로 TF Lite 사용을 좀 더 활용하고 웹서비스와 연동하는 내용들을 진행되었습니다. 그리고 마지막 궁금한 사항들에 대해 질문하고 테스트한 소스들을 정리하는 시간으로 마무리했습니다. 1. node.js 사용해 보기 1.1 node.js 간략 설명   - V8엔진으로 빌드된 이벤트 기반 자바스크립트 런타임 플랫폼(JS를 기계어로 변환)  - js 엔진을 서버 쪽에도 추가해서 양쪽에서 js를 사용할 수 있도록 한 것이다.  - npm: Node.js용 패키지 매니저  - libuv: 비동기라이브러리, Node.js는 싱글 스레드이지만, libuv 라이브러리를 통해 스레드 처리가능, 콜백기반 모델로 동작할 수 있도록 설계  - 응답성이 좋고, 여러 라이브러리 많음, 개발자..

STM32 시리즈 ADC와 DAC 이론 학습 - Nucleo-G071RB

안녕하세요.  Uart 실습을 끝냈고, 이번에는 ADC, DAC에 대해서 간단히 알아보겠습니다. 1. ADC와 DAC의 개요  전자기기에서 신호를 다룰 때, 아날로그(Analog) 신호와 디지털(Digital) 신호 간의 변환이 필요합니다. ADC(Analog to Digital Converter)와 DAC(Digital to Analog Converter)는 이러한 변환을 수행하는 핵심 장치입니다.   ADC: 아날로그 신호를 디지털 신호로 변환하는 장치 (마이크, 온도센서) DAC: 디지털 신호를 아날로그 신호로 변환하는 장치 (오디오 플레이어, 신호발생기)  이러한 변환 기술은 오디오 처리, 센서 데이터 변환, 영상 신호 처리, 통신 시스템 등 다양한 응용 분야에서 필수적입니다.   2. ADC(A..

Embedded/STM32 2025.02.27

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 5 - 디버깅과 ftrace 예습

안녕하세요.  이번 장에서는 디버깅하는 방법 예습차원에서 중요성, ftrace 내용을 알려주고 있습니다.내용 잘 학습해 보아요. 1. 디버깅의 중요성 1) 임베디드 및 BSP 개발 도중 만나는 대표적인 문제  - 부팅 도중 커널 크래시 발생 - 인터럽트 핸들러를 설정했는데 인터럽트 핸들러가 호출되지 않음 - 시스템 응답 속도가 매우 느려짐 - 파일 복사가 안됨 - 다른 개발자가 작성한 커널 코드를 만날 가능성이 높음   (디바이스 드라이버는 커널함수로 구성되어 있으며 각 서브 시스템을 담당한 개발자가 작성한 코드이기 때문입니다.)  그렇기 때문에 정상적인 동작할 때 몇 가지 내용 파악이 필요   - 함수가 실행될 때 변경되는 자료구조 - 함수가 실행되는 빈도와 실행 시간 - 실행 중인 코드를 어떤 프로세..

IT/Linux Kernel 2025.02.26

[교육후기] OpenCV와 TensorFlow Lite를 활용한 라즈베리 파이 지능형 비전 서비스 개발 - 2일 차

안녕하세요.  1일 차 내용에 이어서 진행하지만, 교재가 얇게 제작되어 추가적인 부분은 강사분의 pdf 교재로 진행했습니다.  Raspberry Pi 특성도 있고 과정에 IoT 내용도 있어 몇 가지 하드웨어 제어해 보았습니다.  1. Raspberry Pi 하드웨어 제어 실습  간단하게 Raspberry Pi에 있는 IO Pin을 이용해서 Button과 LED제어 테스트를 합니다.  Header Pin에 점퍼선을 그냥 연결해도 되지만, 연결성을 좋게 하기 위해서 액세서리 모듈과 브레드보드를 사용했습니다. LED는 GPIO2, Button은 GPIO4에 연결합니다.   라즈베리파이 LED와 Button 연동 파이썬 소스 확인  Button을 누르면 High(1) 신호를 보내고, 그것을 확인해서 High(1..

STM32 시리즈 UART 실습 학습 - Nucleo-G071RB

1. Nucleo-G071RB 보드의 UART 연결(평가보드 UART와 PC 연결 형태) 1) Nucleo-G071RB 보드 구성  외부 핀을 연결해서 테스트할 수 있지만, 평가보드(Eval Board)에는 ST-LINK와 함께 시리얼통신을 할 수 있는 가상 COM PORT를 지원합니다.      보드에 전원을 인가하고 장치 관리자의 포트를 확인하면 STLink Virtual COM PORT가 추가되어 있습니다. STM32 CUBE IDE 프로그램을 설치할 때 보통 같이 설치가 되나 그렇지 않다면 검색을 해서 별도로 설치해 주어야 합니다.    2) Nucleo-G071RB UART 회로 부분  STM32G071의 UART2_RX, TX와 STM32F103의 STLK_RX, TX가 연결되어 시리얼 통신을..

Embedded/STM32 2025.02.23

[교육후기] OpenCV와 Tensorflow Lite를 활용한 라즈베리 파이 지능형 비전 서비스 개발 - 1일 차

안녕하세요.    예전과 달리 AI 관련 뉴스가 많고, 이런저런 강의를 보고 있는 중에 3일 과정인 "OpenCV와 Tensorflow Lite를 활용한 라즈베리파이 지능형 비전 서비스 개발"이라는 교육이 있어서 수강해 보았습니다.  전체내용은 양도 많기도 해서 간략하게 확인하는 겸 이런 과정으로 진행되는구나 참조로 보면 좋을 듯합니다.  1. 출석 확인  집체교육으로 진행되었고 7시간으로 10시 ~ 6시간 교육이 진행되며, 스마트폰을 통해 입실, 퇴실을 확인하였습니다.   2. 라즈베리파이 준비 2.1 하드웨어 준비   LCD, RaspberryPi 4, 센서 키트와 소형 모니터, 키보드, 마우스를 나눠주고 연결하는 방법부터 시작합니다.  교재내용에 맞춰 설치하는 것을 진행하고, raspberry.or..

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 4 - 전처리 코드 생성과 objdump 사용

안녕하세요.   라즈베리 파이 커널을 설치하고 나머지 뒷부분을 마무리하도록 하겠습니다.  리눅스 커널을 빌드하는 과정에서 전처리코드를 생성하는 방법이 나옵니다.커널에는 많은 양에 매크로가 소스분석에 걸림돌이 됩니다. 그래서 소스코드를 분석할 때 전처리 코드를 함께 보는 것을 추천하며 추출하는 방법 두 가지를 알려 줍니다.  1. 전처리 코드 생성 1) 전체 전처리 파일 추출  이전 글에서 처럼 root 권한을 얻어서 다음 내용을 진행합니다.  리눅스 커널 소스 디렉터리 안에 Makefile이 있습니다.  대략 420번 줄 KBUILD_CLAGS에 "-save-temps=obj \"를 추가해 주고 build 스크립트를 실행해 주면 전체 소스 파일에 전처리코드가 담긴 *.i, *.s 파일이 생성됩니다. 약 ..

IT/Linux Kernel 2025.02.20

생각이 글이 되기까지, 10대들을 위한 글쓰기 수업, 독서후기

1. 책 선택 이유  이전 책에서 블로그 글쓰기에 대해서 강조한 것이 있어서, 글을 조금 잘 쓰고 싶다는 생각이 들어서 찾아보았습니다. 글쓰기 책 중에 유명한 것은 글자가 작고 어렵게 느졌습니다. 10대들을 글쓰기 수업이라는 부제목이 있어 조금 쉽게 설명하고 있을 거라고 생각했습니다.  2. 간략한 내용 소개  생각의 확장, 생각이 자라는 글쓰기글을 쓰면서 생각하고, 글을 다시 쓰면서 생각이 자란다 우리에게 글쓰기가 왜 필요할까? 생각을 명확히 파악하려면 어떻게 해야 할까? 생각보다 답은 간단하다. 일단 글로 써라. 글쓰기라는 도구를 이용해 무질서한 머릿속에서 내 생각을 뽑아내는 것이다. 누군가는 생각이 먼저 정리되지 않으면 글을 쓸 수 없다고 말할지 모른다. 이 책의 저자는 그런 사람들에게 놀라운 메시..

Book Report 2025.02.19

STM32 시리즈 UART 이론 학습 - Nucleo-G071RB (STM32F 차이점)

안녕하세요.   이번에는 UART 이론 내용을 다뤄 보겠습니다. 그런데 기존의 레지스터와 조금 변경된 내용이 있어 같이 내용을 추가해 보았습니다. STM32 시리즈마다 다를 수 있으므로, 평가보드나 사용하고 있는 MCU의 DataSheet는 꼭 확인해 보시기 바랍니다.   1. UART (Universal Asynchronous Receiver/Transmitter)란? 1) 설 명  UART는 직렬 통신(Serial Communication) 방식 중 하나로, 데이터를 비동기 방식(Asynchronous)으로 송수신하는 하드웨어 모듈입니다. 즉, 데이터를 1비트씩 순차적으로 보내는 방식이며, 클럭 신호 없이 송신기와 수신기가 같은 전송 속도를 유지해야 합니다.  2) UART의 특징  - 비동기 방식 ..

Embedded/STM32 2025.02.18

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 3 - Raspberry Pi4 설정 및 리눅스 커널 빌드와 설치

안녕하세요.   이전 시간에 Kernel 4.19 버전을 설치하기 위해서 몇 가지 사항을 확인했습니다.  이번에는 책에 나온 몇 가지를 추가 설정과 커널 빌디와 설치까지 해보겠습니다. 작업은 SSH Terminal로 접속해서 진행했습니다.   1. 추가 설정 (1) 언어 설정 Chrome과 한글문제를 해결하기 위해서 설치와 설정 몇 가지를 합니다.$ sudo raspi-config "4. Localisation Option->I1 Change Locale"에서 en_GB.UTF-8, en_US.UTF-8, ko_kr.UTF8(선택되어 있음)을 스페이스 바를 눌러 선택하고 확인 누르면 설정이 완료됩니다.    Localisation 철자가 틀렸다고 생각하시는 분이 있지 않나요? Localization 아닌..

IT/Linux Kernel 2025.02.16

STM32 시리즈 타이머(Timer) 실습하기 - Nucleo-G071RB

안녕하세요.  이전 글에서 타이머 이론을 학습했다면, 이제 Nucleo 보드에서 확인해 보겠습니다. 가지고 있는 STM32 cortex-M 시리즈에서도 타이머 포트 혹은 핀 등을 변경해서도 가능할 것이라 생각됩니다.   1. RTC 회로 확인   내부에 32KHz RTC 크리스털이 있지만, 1초를 측정 오차를 조금이라도 줄이기 위해서 외부 32.768KHz 크리스털이 장착된 것을 알 수 있습니다. (LSE)    2. 프로젝트 생성  STM32 IDE를 실행시키고 "File->New->STM32 Project"를 선택해서 프로젝트를 실행합니다. 테스트 보드라면 상단 "Board Selector"를 선택하고 "Commercial Part Number"에 가지고 있는 제품의 이름을 입력해서 제품을 선택하고 ..

Embedded/STM32 2025.02.15

디버깅을 통해 배우는 리눅스 커널의 구조와 원리, 도서 공부하기 2 - Raspberry 4 설치(kernel 4.19)

안녕하세요.   설치하는 것까지 자세히 적으려고 한 것은 아닌데 최대한 책과 동일한 커널 버전의 라즈베리파이 버전으로 맞추려고 했습니다.  그러나 몇 가지 문제가 생겨 해결한 방법도 같이 공유하려고 합니다.   1. 라즈베리파이 OS (라즈비안) 설치  Raspberry Pi Imager로 설치하면 되는 되는 것 아니냐 할 수 있지만 Imager로 바로 설치할 경우 최신 버전의 라즈베리파이 OS이 설치되고 커널 버전도 높아 책과 차이가 발생할 것입니다. imager의 32bit Legacy 버전도 bullseye입니다. Raspberry Pi Imager 다운로드https://www.raspberrypi.com/software/    이것저것 해본 내용을 적어 봅니다.   운영체제 선택에서 우리가 받은 ..

IT/Linux Kernel 2025.02.14

STM32 시리즈 타이머(Timer) 이론 학습

안녕하세요.   먼저 아래 내용은 STM32 모든 시리즈가 아니라 일부 Cortex-M 시리즈에 관한 내용임을 참고해주셨으면 합니다. 그리고 고사양 MCU일 경우 다를 수 있으며, 학습용에 사용되는 F103, F429, G071 등과 유사한 제품 내용이라고 보시면 됩니다.  1. MCU Timer(타이머)  - MCU, CPU 내부에는 시간을 측정을 하기 위한 타이머가 있습니다. 일종의 시계 개념 - 전자시계의 초 단위 시간, 아람 시간 설정 등은 타이머 기능을 사용합니다. 1) 크리스털 (Crystal Oscillator)  : 압전소자로 만들어져 일정한 주기의 펄스 신호를 생성하며 MCU에서 정확한 시간을 측정하는 주요 소자입니다.   부품 형태(Dip, SMD)는 차이는 있지만, 보통 회로도에 표기..

Embedded/STM32 2025.02.13

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 학습 1 - 시작 준비

안녕하세요.  시간이 조금 지났지만, 디바이스 드라이버 개발에 깊이를 더 하려고 하니 리눅스 커널에 대해서 이해가 필요하다는 것을 알게 되었습니다. 그래서 책을 보며 학습하는 내용을 정리해 보기로 했습니다.   1. Linux Kernel 학습 위한 책 선정 이유  리눅스 커널을 학습할 수 있는 많은 책들이 있는데 그중에 추천받은 책으로 진행하기로 했습니다. "디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1" 책으로 1, 2권으로 나눠져 있습니다.  또 하나는 선택한 이유 중에 하나는 테스트하는 보드가 라즈베리파이라는 것입니다. 다른 책들도 가능하지만 실습환경 맞춰 따라 하기가 쉽지 않다는 것입니다. 현재 출간된 버전도 라즈베리 파이 3으로 작성되어 실습이 안 되는 부분이 있다고 하지만, Pi 4로 ..

IT/Linux Kernel 2025.02.12

STM32 시리즈 GPIO(General Purpose Input/Output) 포트 학습 정리

안녕하세요.  STM32 MCU의 GPIO 내용을 간단하게 정리해보려고 합니다. STM32 MCU 시리즈를 보면 32핀, 64핀 144핀을 가지고 있는 제품을 보았을 것이고 세부적으로 상품번호에 따라 메모리 용량 기능 등에 차이가 있습니다.   여기서, 물리적인 핀에 관한 것을 우선 보면 핀이 많으면 많을수록 여러 가지 입출력 제어가 가능한 장점이 있습니다. 그러나 불필요하게 핀이 많은 제품을 선정해서 원가 높일 필요가 없습니다.    다시 돌아와서, 모든 핀을 입출력으로 사용할 수 있는 것은 아니고, 기본적으로 전원 연결하는 핀, GND핀 등 고정적으로 사용되는 핀 말고, MCU 핀냅에서 PA ~ PE 등 P로 시작하는 핀을 보았을 것입니다.     핀맵에서 P로 시작한다면 보통 GPIO 기능을 가진 ..

Embedded/STM32 2025.02.11

독서의 기록, 독서후기, 40대 대기업 부장의 내 인생을 바꾸는 작은 기적

1. 책 선택 이유  시간이 조금 생기다 보니 책 읽기에 조금 더 집중할 수 있어 보고 있는데 좀 더 효율적으로 하고 있는 사람들은 어떻게 하고 있나, 그리고 생산적으로 어떻게 바꿀 수 있을까 생각이 들어 읽어 보았습니다.  2. 간략한 내용 소개  독서가 여전히 취미로만 머물러 있다면,이제는 ‘기록’할 때이다! 5개월 만에 도서 인플루언서가 된 저자가 전하는꿈을 이루는 가장 지적인 활동 ‘독서의 기록’  여기, 전 세계를 누비던 대기업 여성 부장이 있다. 대외적으로 당당해 보이는 그녀에게도 워킹맘의 삶은 고달팠고, 퇴직에 대한 두려움은 피해 갈 수 없었다. 번아웃이 왔다. 삶의 변화가 절실하게 필요했던 때, 그녀는 과감히 다음 스텝을 밟기로 했다. 휴직을 하고 ‘도서 블로그’를 계속하는 일이었다. 주위..

Book Report 2025.02.09

[팝송으로 영어공부(187)] Nothing’s Gonna Change My Love for You – Glenn Medeiros

1. 노래 제목 : Nothing’s Gonna Change My Love for You2. 가 수 : Glenn Medeiros3. 노래 듣기 (Youtube)    4. 핵심표현   * lead the way : 길을 안내하다, 이끌다  The tour guide led the way through the narrow streets of the old city.  가이드는 오래된 도시의 좁은 거리들을 안내했다.  His innovative ideas led the way for a new generation of scientists.  그의 혁신적인 아이디어가 새로운 세대의 과학자들을 이끌었다. * be there for : ~를 위해 곁에 있어 주다, 도와주다  No matter what happe..