eziya76의 등록된 링크

 eziya76로 등록된 네이버 블로그 포스트 수는 568건입니다.

[BBB] Yocto#Kernel 설정에 fragment.cfg 적용하기 [내부링크]

Reference: https://youtu.be/uErrAUtxgt4?si=fiQ8Ae713WuMWqye ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. https://github.com/Munawar-git/YoctoTutorials/tree/master https://github.com/Munawar-git/meta-tab-layer [목표] Kernel 설정에서 SysFs 파일시스템에서 gpio 지원 기능을 enable 한다. Yocto 에서 Kernel 설정을 변경하는 방법은 앞선 defconfig 를 레서피에 추가하는 방식도 있지만 diffconfig 명령을 사용하여 fragment.cfg 파일을 적용하는 방법도 있습니다. 두 방법의 차이를 GPT 에 확인하면 아래와 같습니다. 기본 kernel 설정을 유지한 채 일부 변경이라면 fragment.cfg 파일을 적용하는 방식이 편리하고 다양한 곳에 변경이 있다면 defconfig 를 사용하면 되는 것 같습

[BBB] Yocto#커널 모듈 hello-mod 예제 [내부링크]

Reference: https://youtu.be/aLL3cUDoz10?si=ZnoylzMYkpYIU6Sw ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. https://github.com/Munawar-git/YoctoTutorials/tree/master https://github.com/Munawar-git/meta-tab-layer [목표] 기본적인 커널 모듈 레서피의 구조를 확인한다. 모듈 제어와 관련된 명령어들의 동작을 확인한다. 1. poky 하위에 있는 hello-mod 예제를 meta-mylayer/recipes-kernel 에 복사한다. $ cp -r ../../poky/meta-skeleton/recipes-kernel/hello-mod/ ./ 2. hello-mod 의 구조는 아래와 같다. hello-mod/ files COPYING hello.c Makefile hello-mod_0.1.bb 3. .hello-mod_0.1.b

[BBB] Yocto#Character Device Driver 예제 [내부링크]

Reference: https://youtu.be/gdHBmgsux1E?si=bEjthZhO_Zyfi72D ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. https://github.com/Munawar-git/YoctoTutorials/tree/master https://github.com/Munawar-git/meta-tab-layer [목표] 기본적인 Character Device Driver 를 위한 yocto 레서피를 확인한다. Character Device 장치에 read / write 를 수행한다. 1. character device 를 위한 tab-module 레서피의 구조는 아래와 같이 구성한다. tab-module/ files COPYING Makefile tab-module.c tab-module.bb 2. tab-module.bb 레서피는 아래와 같다. 대부분의 내용은 앞선 hello-mod 예제와 동일하다. SUMMARY =

[BBB] Yocto#Character Device Driver 커널 추가 예제 [내부링크]

Reference: https://youtu.be/0BaNjmVsXNY?si=58X3k0RxW3q7ppDI ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. https://github.com/Munawar-git/YoctoTutorials/tree/master https://github.com/Munawar-git/meta-tab-layer [목표] Custom Driver 를 커널 이미지에 포함하여 빌드하는 방법을 이해한다. 앞선 예제에서는 Runtime 에 로드할 수 있는 모듈 형태로 Driver 를 yocto 를 이용하여 만드는 방법을 확인하였다면, 이번 예제는 Custom Driver 를 커널 이미지에 추가하는 빌드하는 방법을 설명하고 있습니다. 과정이 긴 편이라서 강사의 유투브 강의를 보시고 따라해 보시기를 권장합니다. 1. 커널 작업폴더를 정리한다. $ bitbake -c cleansstate virtual/kernel 2. 커널 작업폴더로 이동하기 위해

[DY-SV5W] MP3 Player [내부링크]

GitHub - eziya/DY-SV5W: DY-SV5W arduino test project DY-SV5W arduino test project. Contribute to eziya/DY-SV5W development by creating an account on GitHub. github.com DY-SV5W MP3 재생 모듈을 사용해보았습니다. 핀을 이용한 제어도 가능하고 UART 통신을 통한 제어도 가능합니다. 기본적인 동작은 잘 되는거 같은데 Loop 모드 재생은 메뉴얼에 작성된 명령으로 제어가 잘 되지는 않네요. 테스트를 위해 작성한 아두이노 코드는 아래와 같습니다. 원래 계획은 메뉴얼의 Loop Mode 를 이용해서 다음 곡으로 자동 재생을 시키는 것인데 정상적으로 동작하지 않아서 상태 확인 후 재생 정지 시 다음 곡을 재생하도록 수정하였습니다. !!! 혹시 walk around 하는 방법을 아시는 분은 댓글 부탁 드립니다. // Define constants const

[BBB] Yocto 로 빌드한 이미지를 eMMC 에 넣기 [내부링크]

Reference: Flashing BBB eMMC with Yocto Image? - General Discussion - BeagleBoard Flashing BBB eMMC with Yocto Image? This image you flashed with balena Etcher, is it an img, wic, etc file? aka, what was the file name? Regards, forum.beagleboard.org 1. yocto 의 /tmp/deply/images/beaglebone-yocto 폴더에서 빌드한 이미지 파일을 Etcher 등을 이용하여 우선 writing 한다. 2. 쓰기 작업이 끝나면 다시 SD카드를 넣어주면 boot, root 파티션이 /media/$USER 폴더 하위에 mount 된 것을 확인할 수 있다. 3. 해당 이미지에 다시 wic 파일을 복사해 넣으려고 하는데 파일의 크기에 비해 rootfs 파티션의 크기가 작기 때문에 ro

[BBB] meta-ti 레이어를 사용하여 Beaglebone Black 이미지 빌드하기 [내부링크]

이번 글에서는 BBB 이미지를 빌드 시에 meta-yocto-bsp 를 사용하지 않고 meta-ti 레이어를 사용하는 방법에 대해서 기술해 보고자 합니다. 기본적으로 yocto 는 특정 하드웨어에 대해서 meta-yocto-bsp 라는 레이어에 관련된 메타 정보들을 가지고 있고 BBB 도 yocto bsp 에서 지원하는 하드웨어 입니다. 하지만 아래와 같이 지원하는 기능에 일부 빠진 것들이 있기 때문에 meta-ti 를 사용하여 이미지를 빌드하는 것이 특화 기능 사용이나 성능면에서 유리할 수 있는것 같습니다. (아래 GPT 내용은 저렇게 쓰여있지만 실제는 이미 Yocto BSP 에 반영이 되어 있을 수도 있을거 같습니다.) 아래 과정에서는 meta-ti 를 사용하기 위한 순서를 기술합니다. 1. meta-ti 레이어를 다운로드 하고 yocto branch 와 동일한 dunfell branch 로 checkout 한다. $ cd ~/Workspace/yocto $ git clone -

[BBB] meta-raspberrypi 레이어를 사용하여 RPI3 이미지 빌드하기 [내부링크]

이번 글에서는 yocto 를 이용하여 Raspberry Pi 3 를 위한 이미지 빌드 순서를 정리하고자 합니다. 1. yocto 가 설치된 폴더로 이동 후 meta-raspberrypi 와 meta-openembedded 를 다운로드 한다. branch 는 yocto brach 에 맞게 dunfell 로 설정한다. 다른 branch 를 사용하는 경우에는 사용하는 branch 로 통일한다. $ cd ~/Workspace/yocto $ git clone --branch dunfell git://git.yoctoproject.org/meta-raspberrypi $ git clone --branch dunfell git://git.yoctoproject.org/meta-openembedded 2. oe-init-build-env 스크립트를 이용하여 build-rpi 라는 빌드 폴더를 생성하고 아래와 같이 meta-oe, meta-python, meta-multimedia, meta-net

[BBB] Yocto#PROVIDES [내부링크]

Reference: https://youtu.be/qT3IuaRfjCg?si=6B-oZIckTygubyd_ ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] PROVIDES 의 목적과 용도를 확인한다. PROVIDES 는 빌드 타임에 제공할 수 있는 dependency 를 명시합니다. 앞선 예제에서 DEPENDS 를 이용해서 add 패키지에 대한 빌드 타임 의존성을 지정했는데 이때 패키지 이름이 아닌 alias 와 유사한 개념으로 제공하는 의존성을 명시할 수 있습니다. 1. 앞선 depends-example 폴더, 레서피 파일과 소스 파일들을 그대로 사용한다

[BBB] Yocto#PRFERRED_PROVIDER [내부링크]

Reference: https://youtu.be/JGOtX6ZAwak?si=AwkT5_jsiFtVlbrS ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] PREFERRED_PROVIDER 의 목적과 용도를 확인한다. PREFERRED_PROVIDER 는 복수 개의 PROVIDER 가 동일한 alias 를 가지고 있을 때 그 중 특정 패키지의 의존성을 우선하는 것을 명시할 수 있습니다. PREFERRED_PROVIDER 를 지정하지 않는 경우 우선 발견하는 레서피를 사용하여 빌드하기 때문의 의도하지 않은 오류를 막을 수 있습니다. 1. 기존 depends-

[BBB] Yocto#PRFERRED_VERSION [내부링크]

Reference: https://youtu.be/jI2f3lCD4WE?si=UccMmNM1FU9bXXLz ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] PREFERRED_VERSION 의 목적과 용도를 확인한다. PREFERRED_VERSION 은 동일한 이름을 가지는 레서피가 복수개의 버전일 때 복수개의 버전 중 특정 버전을 지정하여 빌드할 수 있다. 만일 PREFERRED_VERSION 이 지정되지 않는 경우에는 최신 버전을 사용한다. 1. 기존 perferred-version-example 폴더를 아래와 같이 구성한다. preferred-versi

[BBB] Yocto#OERUNMAKE [내부링크]

Reference: https://youtu.be/_7nQHSvqtbI?si=74hUkY9b0l8yuB0O ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials https://github.com/Munawar-git/meta-tab-layer [목표] oe_runmake 의 목적과 용도를 확인한다. GPT 에서 확인한 oerunmake 의 용도는 간단하게 이야기하면 Makefile 을 이용하여 레서피 내 do_compile 과 do_install 같은 단계를 간단하게 표현하여 표준화된 형태로 레서피를 만들 수 있도록 도와주는 도구입니다. 1. oerunmake-example 폴더를 아래와 같이 구성한다. adv-calculator 레서피와 레서피에서 빌드하는 파일들을 files 폴더 하위에 배치한다. oerunmake-example/ adv-calculator.bb files adv-calculato

[BBB] Yocto#EXTRA_OEMAKE [내부링크]

Reference: https://youtu.be/it1aYiWmTHQ?si=zj20c8refFq1MR2g ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials https://github.com/Munawar-git/meta-tab-layer [목표] EXTRA_OEMAKE 의 목적과 용도를 확인한다. EXTRA_OEMAKE 는 앞서 사용한 makefile 에서 사용하는 환경 변수를 전달하는 용도로 사용할 수 있습니다. 아래 예제에서는 DESTDIR, BINDIR, TARGET, LIBS 변수를 EXTRA_OEMAKE 를 이용해서 makefile 로 전달합니다. 1. oerunmake-example2 폴더를 아래와 같이 구성한다. adv-calculator_1.1 레서피와 레서피에서 빌드하는 파일들을 files 폴더 하위에 배치한다. 앞선 예제의 adv-math-lib.c 파일을 쪼개서 각각의 add-li

[BBB] Yocto#bbappend & BBMASK [내부링크]

Reference: https://youtu.be/IxXSABanxEQ?si=ObUvgmLvHwk8dEdB ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials https://github.com/Munawar-git/meta-tab-layer [목표] bbappend 파일의 목적과 용도를 확인한다. bbappend 는 기존에 이미 작성된 bb 레서피 파일에 추가 또는 변경 작업을 하는 경우에 사용될 수 있다. 아래 예제에서는 bbb-example.bb 레서피에 추가 설정을 하기 위해 bbb-example.bbappend 파일을 생성하였다. BBMASK 의 용도를 확인한다. BBMASK 는 bitbake 가 masking 할 레서피나 레이어를 지정할 수 있다. 아래 예제에서는 새롭게 추가한 bbb-example.bbappend 레서피를 적용하거나 적용하지 않는데 사용하였다. 1. 기존에 생성되어 있는 bbb

[BBB] Yocto#FILESEXTRAPATHS [내부링크]

Reference: https://youtu.be/thOvmzsVbrA?si=eA31KUTsApSqVjDT ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials https://github.com/Munawar-git/meta-tab-layer [목표] FILESEXTRAPATHS 의 목적과 용도를 확인한다. FILESEXTRAPATHS는 Yocto 레시피 내에서 참조되는 추가 파일들의 경로를 지정하는 데 사용됩니다. 이 변수는 주로 bbappend 파일을 사용할 때 중요합니다. bbappend 파일은 기존의 .bb 레시피를 확장하거나 수정하는 데 사용되며, 종종 다른 위치에 저장될 수 있습니다. 기본적으로 Yocto 빌드 시스템은 레시피에 명시된 SRC_URI 변수를 통해 파일을 찾습니다. 이 변수는 로컬 파일 또는 원격 소스의 위치를 지정할 수 있습니다. 단, bbappend 파일을 사용하는 경우, 이

[BBB] Yocto#clean, cleansstate, cleanall [내부링크]

Reference: https://youtu.be/lfORqtu8pJg?si=5IZbBAYOdYKaMvAq ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials https://github.com/Munawar-git/meta-tab-layer [목표] bitbake 의 clean 명령어들인 clean, cleansstate, cleanall 동작의 차이에 대해서 이해한다. Yocto에 의해 관리되는 폴더는 크게 세 가지로 구분할 수 있습니다: 1. Download 폴더: 빌드를 위해 다운로드 받은 소스 파일이 위치하는 폴더입니다. 이 폴더에는 소스 코드, 패치 파일 등이 저장됩니다. 2. 임시작업폴더 (tmp/work): Yocto는 레시피의 빌드 작업을 수행할 때 이 임시 디렉토리를 사용합니다. 여기에는 소스 파일들이 복사되고, 컴파일 및 빌드 작업이 수행됩니다. Youtue 에서 강사는 이 디렉토리를

[BBB] Yocto#"systemd" Init manager [내부링크]

Reference: https://youtu.be/5iFZZK4l6mM?si=ESUnsXZfxObcB7Qp ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. YoctoTutorials/24_SystemD_Init_Manager/24_SystemD_init_manager.md at master · Munawar-git/YoctoTutorials (github.com) https://github.com/Munawar-git/meta-tab-layer [목표] Linux 의 초기화를 담당하는 Init Manager 에 대해서 이해한다. 대표적인 Init Manager 에는 Busybox Init, SysVInit, systemd 가 있습니다. Busybox 는 가벼운 시스템 개발 시에 적합하며 현재 다수의 리눅스 distro 는 systemd 를 사용합니다. 기능면에서 다른 Init manager 와 차별성을 갖고 있는 점은 아래와 같습니다. `systemd`는 현대적인

[BBB] Yocto#"systemd" 서비스 레서피 [내부링크]

Reference: https://youtu.be/nSeaZ1khchA?si=IWx4MjwiaeiJBZ6B ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. YoctoTutorials/25_SystemD_Service_Recipe/25_SystemD_Service_Recipe.md at master · Munawar-git/YoctoTutorials (github.com) https://github.com/Munawar-git/meta-tab-layer [목표] systemd 서비스를 추가하는 레서피를 생성한다. 먼저 systemd 서비스를 추가하기 전에 systemd 명령어들은 아래와 같이 사용이 가능합니다. 1. 서비스 시작 systemctl start [서비스명] 2. 서비스 중지 systemctl stop [서비스명] 3. 서비스 재시작 systemctl restart [서비스명] 4. 서비스 활성화 systemctl enable [서비스명] 5. 서비스 비

[BBB] Yocto#Kernel 설정하기 [내부링크]

Reference: https://youtu.be/Q0dWV9jWwkM?si=z6w_tZOftZgz2sPW ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. https://github.com/Munawar-git/YoctoTutorials/tree/master https://github.com/Munawar-git/meta-tab-layer [목표] Kernel 설정에서 SysFs 파일시스템에서 gpio 지원 기능을 enable 한다. 기본적으로 리눅스는 대부분의 장치를 파일 형태로 제어할 수 있다. 이 기능을 통해서 GPIO 제어 동작을 수행할 수 있는데 기본 Kernel 설정에서 SysFs 를 통한 제어 기능은 비활성화 되어 있다. 아래 예제에서는 Kernel 을 설정하여 SysFs 를 통해 GPIO 제어를 enable 하는 방법을 확인한다. Kernel 에서 GPIO Support 기능을 활성화 하지 않은 상태에서는 아래와 같이 /sys/class 폴더에 gp

[STM32MP157-DK1] Yocto#Custom Image + Enable WiFi [내부링크]

Reference: https://www.digikey.com/en/maker/projects/intro-to-embedded-linux-part-7-enable-wifi-networking-with-yocto/2e490a896a424a12b796ae60fef52937 Intro to Embedded Linux Part 7 - Enable WiFi Networking with Yocto In this tutorial, we demonstrate how to enable WiFi drivers and networking for the STM32MP157D-DK1 using the Yocto Project www.digikey.com ※ Digikey 에서 강의한 자료를 따라하면서 정리해 본 자료입니다. 아래는 제가 나중에 기억하기 위해서 정리하는 내용이며 링크를 따라가시면 매우 자세히 정리되어 있습니다. 이번 강의의 목표는 USB 동글 wifi 모듈이 동작하도록 커널을 수정하여 cus

[BBB] Yocto#IMAGE_INSTALL 로 패키지 추가하기 [내부링크]

Reference: https://youtu.be/naszh2WoHAM?si=rAaOYfKD9qclvq8O ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [ 목표 ] local.conf 파일에 IMAGE_INSTALL 설정을 추가하여 core-image-full-cmdline 이미지에 python3 와 git 를 추가한다. 1. bitbake-layers show-recipes 명령을 이용해서 pytho3 와 git 이 포함되어 있는 레이어를 확인한다. 둘다 meta 레이어에 포함되어 있는 것을 확인할 수 있다. $ cd ~/Workspace/yocto/ $ so

[BBB] Yocto#레서피 기본 변수 사용하기 [내부링크]

Reference: https://youtu.be/g3Xfckd-mE8?si=Vd8KrLjdkNg-VJEb ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [ 목표 ] yocto 레서피에서 사용하는 변수들에 대해서 알아본다. 1. 아래와 같이 meta-mylayer/recipes-example 디렉토리를 구성한다. recipes-example/ example example1 example1.c example1.bb example2 example2.c example2_0.1_r1.bb 2. example1.c 와 example2.c 파일은 아래와 같이

[BBB] Yocto#변수 할당 Operator [내부링크]

Reference: https://youtu.be/kCl6D5WwBXQ?si=fJlx6I9U_Cdj4bgL ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [ 목표 ] 변수 할당 오퍼레이터들의 동작 차이에 대해서 확인한다. 아래와 같이 example.bb 파일을 하나 만들어주고 아래 예제들을 테스트 한다. SUMMARY = "bitbake-layers recipe" DESCRIPTION = "Recipe created by bitbake-layers" LICENSE = "MIT" A ??= "val" A =+ "var" 테스트 시 변수 값 확인은 아래와 같이 -e

[BBB] Yocto#HelloWorld 레서피 [내부링크]

Reference: https://youtu.be/YSITCPhk_qU?si=rEauG350GSFPIZel ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [ 목표 ] meta-mylayer 에 helloworld 레서피를 추가한 후 build 하여 /usr/bin 폴더에 위치시킨다. 1. oe-init-build-env 스크립트 이용하여 build-bbb 환경을 설정한다. $ cd ~/Workspace/yocto $ source poky/oe-init-build-env build-bbb 2. meta-mylayer/recipes-example 하위에 hellowo

[BBB] Yocto#Build Task 정리 [내부링크]

Reference: https://youtu.be/a6dB7Z2HlNM?si=7k9JgPaisW3TrAGG ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com Yocto build task 들에 대해서 gpt 에 확인하면 아래와 같은 다양한 task 들이 존재한다. 강의에서는 주로 설정이 필요한 do_fetch 부터 do_install 까지의 동작을 설명하고 있다. 1. do_fetch: 이 작업은 소프트웨어를 빌드하는 데 필요한 소스 코드 및 기타 파일을 가져옵니다. 일반적으로 버전 관리 시스템(예: Git)에서 코드를 다운로드하거나 패치를 적용하고 소스가 빌드를 위

[BBB] Yocto#RDEPENDS [내부링크]

Reference: https://youtu.be/x4CgMt7VqNo?si=WFW81rDmpizXag9q ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] RDEPENDS 의 목적과 용도를 확인한다. 1. GPT 에 확인을 해보면 DEPENDS 와 RDEPENDS 가 사용되는 것을 확인할 수 있다. 이번 강의에서는 RDEPENDS 를 먼저 확인한다. 핵심이 되는 내용은 build time dependency 인지 runtime dependency 인지에 따라 구분된다는 점이다. RDEPENDS 는 runtime 즉, 구동 시에 필요한 package 의 의존

[BBB] Yocto#RPROVIDES [내부링크]

Reference: https://youtu.be/H4aRXJq5yK4?si=dLRCWidS0T9HV-q8 ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] RPROVIDES 의 목적과 용도를 확인한다. 1. RPROVIDES 는 runtime 에 기능을 제공하는 패키지를 명시하는 용도로 사용된다. 앞서 RDEPENDS 가 필요로 하는 패키지를 명시하였다면 RPROVIDES 는 이와 쌍으로 기능을 제공하는 패키지를 명시할 수 있다. 2. 앞선 rdepends-example 과 동일한 형태로 rprovides-example 디렉토리와 레서피 파일을 아래와 같이

[BBB] Yocto#RCONFLICTS [내부링크]

Reference: https://youtu.be/PT51np3hxzs?si=duSoJE8t_63af_c1 ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] RCONFLICTS 의 목적과 용도를 확인한다. RCONFLICTS 는 함께 이미지에 포함되면 conflict 가 발생할 수 있는 문제를 명시하여 차단하는 역할을 수행합니다. 특정한 패키지들이 설치되지 않아야 할 때 RCONFLICTS 를 명시하여 빌드 시 오류를 발생시켜 문제를 차단할 수 있습니다. 1.예제를 위하여 아래와 같이 3가지의 레서피를 구성한다. rconflicts-example1 의 레서피

[BBB] Yocto#DEPENDS [내부링크]

Reference: https://youtu.be/mF-VpN6Rc88?si=qt8BThKIqZSmxBzJ ※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다. GitHub - Munawar-git/YoctoTutorials GitHub - Munawar-git/YoctoTutorials Contribute to Munawar-git/YoctoTutorials development by creating an account on GitHub. github.com [목표] DEPENDS 의 목적과 용도를 확인한다. DEPENDS 는 빌드 타임의 dependency 를 명시합니다. RDEPENDS 가 runtime 의 dependency 를 명시하는 반면 DEPENDS 는 빌드 타임의 dependency 를 명시하므로 DEPENDS 는 정적 라이브러리와 같이 빌드 시점에 선행되어서 빌드 되어야 하는 패키지를 지정하는데 사용할 수 있습니다. 1. 아래와 같이 recipes-e

[Bootlin] Linux Kernel and Driver#커널 빌드 [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/linux-kernel/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size linux-kernel-slides.pdf 2023-05-18 09:10 8.2M linux-kernel-online-agenda.pdf 2023-05-18 09:10 1.0M linux-kernel-online-agenda-fr.pdf 2023-05-18 09:10 1.0M linux-kernel-labs.tar.xz 2023-05-18 09:10 2.5M linux-kernel-labs.pdf 2023-05-18 09:10 5.4M linux-kernel-agenda.pdf 2... bootlin.com 기본적으로 아래

[Bootlin] Linux Kernel and Driver#모듈 만들기 [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/linux-kernel/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size linux-kernel-slides.pdf 2023-05-18 09:10 8.2M linux-kernel-online-agenda.pdf 2023-05-18 09:10 1.0M linux-kernel-online-agenda-fr.pdf 2023-05-18 09:10 1.0M linux-kernel-labs.tar.xz 2023-05-18 09:10 2.5M linux-kernel-labs.pdf 2023-05-18 09:10 5.4M linux-kernel-agenda.pdf 2... bootlin.com 매우 간단한 형

[Bootlin] Linux Kernel and Driver#I2C Nunchuk 드라이버 예제 [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/linux-kernel/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size linux-kernel-slides.pdf 2023-05-18 09:10 8.2M linux-kernel-online-agenda.pdf 2023-05-18 09:10 1.0M linux-kernel-online-agenda-fr.pdf 2023-05-18 09:10 1.0M linux-kernel-labs.tar.xz 2023-05-18 09:10 2.5M linux-kernel-labs.pdf 2023-05-18 09:10 5.4M linux-kernel-agenda.pdf 2... bootlin.com i2c 장치를

[ESP32] ESP32-S3 USB-JTAG & USB-UART [내부링크]

ES32-S3 는 아래와 같이 USB 를 통해 JTAG 과 UART 통신이 모두 가능하다. 다만 드라이버 문제로 OpenOCD 를 이용한 JTAG 연결이 불가한 경우에는 아래와 같이 zadiag 라는 유틸리티를 사용하여 해결이 가능하다. zadig 를 실행하고 List All Devices 메뉴를 선택하면 아래와 같이 USB JTAG/serial debug unit (interface 0) 와 USB JTAG/serial debug unit (interface 2) 장치가 표시된다. Interface 0 는 USB-UART 통신을 위해서 USB Serial (CDC) 로 드라이버를 선택한다. Interface 2 는 USB-JTAG 으로 사용하기 위해서 WinUSB 로 드라이버를 선택한다. 드라이버 설치를 완료하고 재부팅을 수행하면 아래와 같이 범용 직렬 버스 장치에는 USB JTAG/serial debug unit 이 표시되고, 포트에는 통신 포트(COM18) 이 표시된다. Fla

[Maker] Adafruit feather 응용 Music Player [내부링크]

GitHub - eziya/ESP32_V2_MUSIC_MAKER_FEATHER: ESP32_V2_MUSIC_MAKER_FEATHER ESP32_V2_MUSIC_MAKER_FEATHER. Contribute to eziya/ESP32_V2_MUSIC_MAKER_FEATHER development by creating an account on GitHub. github.com 한동안 개인적으로 무엇인가 만들어보는 작업들을 못하고 있다가 Adafruit 에서 재미있는 물건을 발견해서 한번 작업을 해 보았습니다. Adafruit Quad Side-By-Side FeatherWing Kit with Headers This is the FeatherWing Quad Side-by-Side - a prototyping add-on and more for all Feather boards. This is similar to our FeatherWing Proto except there are fo

[STM32MP157-DK1] Yocto#core-image-minimal build [내부링크]

Reference: https://www.digikey.com/en/maker/projects/intro-to-embedded-linux-part-2-yocto-project/2c08a1ad09d74f20b9844e566d332da4 Intro to Embedded Linux Part 2 - Yocto Project Getting started with the Yocto Project to create a custom Linux distribution for an STM32MP1 single board computer. www.digikey.com ※ Digikey 에서 강의한 자료를 따라하면서 정리해 본 자료입니다. 아래는 제가 나중에 기억하기 위해서 정리하는 내용이며 링크를 따라가시면 매우 자세히 정리되어 있습니다. 빌드에 필요한 패키지 설치 $ sudo apt update $ sudo apt upgrade $ sudo apt install -y bc build-essential

[STM32MP157-DK1] Yocto#Custom Image [내부링크]

Reference: https://www.digikey.com/en/maker/projects/intro-to-embedded-linux-part-4-create-custom-layer-and-image-in-yocto/aac0ab17e0c64ae482675abea00b328d Intro to Embedded Linux Part 4 - Create Custom Layer and Image in Yocto In this tutorial, we demonstrate how to use the Yocto Project to create a custom layer and use it to generate a custom Linux image. www.digikey.com ※ Digikey 에서 강의한 자료를 따라하면서 정리해 본 자료입니다. 아래는 제가 나중에 기억하기 위해서 정리하는 내용이며 링크를 따라가시면 매우 자세히 정리되어 있습니다. 이번 예제의 목표는 core-image-mini

[STM32MP157-DK1] Yocto#Custom Image + Enabling I2C [내부링크]

Reference: https://www.digikey.com/en/maker/projects/intro-to-embedded-linux-part-5-how-to-enable-i2c-in-the-yocto-project/6843bbf9a83c4c96888fccada1e7aedf Intro to Embedded Linux Part 5 - How to Enable I2C in the Yocto Project In this tutorial, we demonstrate how to modify a device tree source (.dts) file to enable an I2C port. We then create a patch file and apply it to the kernel during the bitbake build phase in the Yocto Project. www.digikey.com ※ Digikey 에서 강의한 자료를 따라하면서 정리해 본 자료입니다. 아래는 제

[STM32MP157-DK1] Yocto#Custom Image + I2C Application [내부링크]

Reference: Intro to Embedded Linux Part 6 - Add Custom Application to Yocto Build In this tutorial, we demonstrate how to create a custom Linux application and recipe to build the compiled program into a custom image. www.digikey.com ※ Digikey 에서 강의한 자료를 따라하면서 정리해 본 자료입니다. 아래는 제가 나중에 기억하기 위해서 정리하는 내용이며 링크를 따라가시면 매우 자세히 정리되어 있습니다. 이번 강좌의 목표는 custom application 을 하나 만들어서 custom-image 에 추가하는 것입니디다. 1. meta-custom 레이어 하위에 recipes-apps/temp/files/src 폴더를 생성합니다. $ cd ~/Projects/yocto/meta-custom $ mkd

[Node-Red] Data Logging [내부링크]

Reference: https://youtu.be/E2aBIqssQLM 이번 글에서 앞서 테스트 하였던 modbus 데이터를 GUI 에 표시하는 것과 동시에 csv 파일로 logging 하는 방법을 정리해 보고자 합니다. Reference 동영상에서 매우 잘 설명을 해 놓았기 때문에 우선 동영상을 참고하시는 것을 추천 드립니다. 기본적인 구성은 기존에 작성하였던 parse_modbus_data 함수와 GUI 노드들에 아래와 같이 logging 관련 노드들을 추가로 구성합니다. 첫번째, check enable logging 은 logging 을 하도록 설정되어 있는지 아닌지를 판단합니다. 두번째, msg.payload.data 에 담겨있는 데이터를 다루기 쉽도록 msg.payload 로 옮겨줍니다. 세번째, logging 용 파일명을 현재 시간을 이용하여 만들어 줍니다. 네번째, file Lister 를 이용해서 현재 이미 해당 파일이 만들어져 있는지 확인합니다. 다섯번째, 파일 존재

[Node-Red] Gate 노드 [내부링크]

Reference: https://youtu.be/I6ejwwKTsZc 게이트 노드는 데이터 flow 를 잠시 멈추게 하거나 다시 진행하게 하거나 하는 기능을 수행할 수 있는 노드입니다. ' 실제 게이트 노드가 없다면 function 노드에서 flow 변수를 확인해서 유사하게 기능을 만들 수 있을 것 같기는 하지만 실제 gate 노드가 있다면 보다 명시적으로 제어 flow 를 구성할 수 있는 장점이 있다고 보여집니다. [{"id":"dedad58f3e6cc9c6","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["15aae525ddb96209","d2a65ce9c011a87c","77b4cc3dc2b6d7b1

[Node-Red] Dashboard Form [내부링크]

Reference: https://youtu.be/eu1vw1YPzsk 다음 예제는 Youtube 에서 찾게된 예제인데 유용하다고 생각되어서 정리해 보았습니다. 저는 간략하게 정리하였기 때문에 동영상을 한번 보시는 것을 추천 드립니다. 기능은 아래와 같습니다. Input Names Form 에 이름을 입력 후 Submit 버튼을 클릭하면 flow 의 names 변수에 이름이 저장됩니다. names 변수는 배열 형태로 복수의 이름을 저장할 수 있습니다. Show Flow.Names 버튼을 클릭하면 아래에 저장된 이름이 표시됩니다. Remove Name Form 에 이름을 입력 후 Submit 버튼을 클릭하면 flow names 변수에 일치하는 이름이 있는 경우 해당 이름이 삭제됩니다. [{"id":"8d91a3f6f3565309","type":"group","z":"a57543e1798c6606","style":{"stroke":"#999999","stroke-opacity":"1",

[BBB] Toolchain Build [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com cros

[BBB] U-Boot Build [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com Work

[BBB] Linux Kernel Build [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com 커널 빌

[BBB] Busybox Build [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com busy

[BBB] GPIO 제어 [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com /dev

[BBB] LED 제어 [내부링크]

모든 내용은 아래 링크의 bootlin 자료를 따라 학습하는 과정에서 개인적 기록으로 남기는 자료이며 모든 권리는 원작자에게 있습니다. Reference https://bootlin.com/doc/training/embedded-linux-bbb/ Bootlin – Embedded Linux and kernel engineering Name Last modified Size embedded-linux-bbb-slides.pdf 2023-05-09 13:06 17M embedded-linux-bbb-labs.tar.xz 2023-05-09 13:07 22M embedded-linux-bbb-labs.pdf 2023-05-09 13:06 6.6M embedded-linux-bbb-agenda.pdf 2023-05-09 13:07 1.1M README.txt 2023-05-09 13:00 274 Search for: Search Next training... bootlin.com 커널에서

[BBB] Build Root [내부링크]

https://github.com/buildroot/buildroot buildroot 에 필요한 패키지를 설치한다. $ sudo apt install build-essential git autoconf bison flex texinfo help2man gawk \ libtool-bin libncurses5-dev unzip git 에서 최신 buildroot 를 다운로드 한다. $ git clone git://git.buildroot.net/buildroot 기본적인 kconfig 방식으로 설정한다. 테스트를 위해서 mariadb, nginx, dropbear 패키지를 설치한다. c++ support 는 mariadb 패키지 설치를 위해서 설정이 필요하다. make 로 빌드를 수행한다. $ make distclean $ make beaglebone_defconfig $ make menuconfig # BR2_TOOLCHAIN_BUILDROOT_CXX=y # BR2_CCACHE=y

[Node-RED] modbus master(client) [내부링크]

이번 글에서는 지난번 modbus slave 에 이어서 master 동작을 설명하고자 합니다. 예제는 아래와 같이 구성합니다. 예제는 read write 가 모두 가능한 holding register 와 coil 을 사용하겠습니다. 첨부파일 modbus.txt 파일 다운로드 좌측 상단 노드부터 설명을 드리면, 첫번째 read holding register 라는 이름은 holding register 를 읽기 위한 inject 입니다. 두번째 inject 는 holding 레지스터에 400 이라는 값을 write 하기 위해 payload 값을 400 으로 설정합니다. 세번째 inject 는 coil 의 값을 읽어오기 위한 inject 입니다. 네번째 inject 는 coil 에 true 값을 write 하기 위하여 payload 에 1 을 전달합니다. 첫번째 read registers function 노드는 아래와 같이 payload 를 구성하여 전달합니다. function 코드는 3을

[Node-RED] Dashboard GUI [내부링크]

지난번 modbus 에 이어서 modbus 로 불러온 데이터를 GUI 에 표시하는 방법에 대해서 정리해 보고자 합니다. 사실 제가 node red 를 공부해 봐야겠다고 생각한 이유도 이 dashboard 기능 때문입니다. 매우 미려한 GUI 는 아니지만 그래도 준수한 GUI 를 매우 손쉽게 만들어 낼 수 있기 때문입니다. 아래 예제의 좌측 Group1 은 지정된 address 부터 4개의 값을 가져와서 표현하는 예제입니다. 보통 센서들의 데이터를 가져온다면 text box 에 현재 상태값을 보여주거나 gauge 를 이용해서 level 을 보여주거나 chart 를 이용해서 시간의 흐름에 따른 트렌드를 보여주는 경우가 많을 것 같아서 아래와 같이 예제를 구성하였습니다. 우측 Group2 는 제어를 위한 예제입니다. switch 를 이용해서 on/off 를 한다거나 콤보박스나 slider 를 이용해서 특정한 레벨까지 제어하는 경우가 많이 있을 것 같습니다. 예제는 아래 파일을 참고하시면

[Node-RED] join 노드 사용법 [내부링크]

join 노드는 분리된 메시지를 합치는데 사용할 수 있는 노드입니다. [{"id":"8e238616470ccf4f","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["3100d76a2e3f18d4","20a536fbcd19ba7e","a3b73dd3cc56701c","6b6437e3adcc9278","06bce1e167ce4f80","6926d1cd04763586","0b0332953de8e76f","06ab3502be85916e","5423f8bef081a0ed","5082b119b015a536"],"x":54,"y":1919,"w":812,"h":202},{"id":"3100d76a2e3f18d4","ty

[Node-RED] sort 노드 사용법 [내부링크]

sort 노드는 데이터를 sorting 하는데 사용하는 노드입니다. [{"id":"fd04def63e308641","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["c2a88ea0c05222b7","0e480a6e1c370012","5bc0b50bfcd81098","e0c76b112f5c13aa","a464c25b5f859491","32d3c24b546d346a","6cf754651d1c3c57","7c747b136b9b7451","fab2c845e631045e"],"x":64,"y":2159,"w":732,"h":202},{"id":"c2a88ea0c05222b7","type":"inject","z":"ba

[Node-RED] status 노드 사용법 [내부링크]

status 노드는 status 가 변경되는 것을 감지할 때 감지된 노드의 정보를 확인할 수 있는 노드입니다. [{"id":"14472ef2771707f9","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["4140bddbb0068055","d535df2bed8ba360","dd674854787c6a2c","143ffc3e3bb22636","5ebd7ef368366205","851d32c34031206c"],"x":64,"y":2419,"w":642,"h":202},{"id":"4140bddbb0068055","type":"status","z":"ba42afc1309d2bfd","g":"14472ef27717

[Node-RED] delay 노드 사용법 [내부링크]

delay 노드는 말 그대로 지정된 시간만큼 flow 의 delay 를 발생 시켜주는 노드입니다. [{"id":"f27dca005ecce2e4","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["fade337850917ab7","061a4b073b583867","481d89c79e185ef2","ab4ea099fc939bb4","d82a44a70fd8b2ba","d4c316735df5a35d"],"x":54,"y":3706.368421052632,"w":752,"h":202},{"id":"fade337850917ab7","type":"comment","z":"ba42afc1309d2bfd","g":"f27dc

[Node-RED] trigger 노드 사용법 [내부링크]

trigger 노드는 반복적인 trigger 동작과 1회성 trigger 동작을 수행할 수 있습니다. [{"id":"9b1395f4052b8769","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["96f8b8938ecc2651","ccc838f207e1e587","51dcfec6b8e01b41","3d15ad6758370d9b","08f730ed0c92191c","56f69f45f4dd1dc5","757b5a29b24f7939"],"x":54,"y":3936.894736842106,"w":732,"h":262},{"id":"96f8b8938ecc2651","type":"inject","z":"ba42afc1

[Node-RED] batch 노드 사용법 [내부링크]

batch 노드는 msg.part 의 index 에 지정된 숫자 간격으로 인덱스를 할당해 주는 기능을 수행하여 join 노드와 함께 사용할 수 있습니다. [{"id":"8cfa2488a3eefd22","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["33eb3faa4767bc03","20a110f2339edab7","e2331f586ac196e6","173c5c0a7ef79a02","49bed51b3c3a9ece","a5317daa54d381ba","6f24613f81a3ef96"],"x":44,"y":4239,"w":972,"h":142},{"id":"33eb3faa4767bc03","type":"comme

[Node-RED] link 노드 사용법 [내부링크]

link 노드는 flow 상에서 노드 간 길게 연결하면서 선들이 복잡해 지는 경우에 유용하게 사용할 수 있습니다. [{"id":"e09094d283301dfb","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["682fce91b29bc6f1","c80eeb26c57099c5","5e969e30e7444254","dc7e094bd8871237","d794ae40ffb8634e"],"x":54,"y":4608.473684210526,"w":402,"h":202},{"id":"682fce91b29bc6f1","type":"inject","z":"ba42afc1309d2bfd","g":"e09094d283301dfb

[Node-RED] modbus slave(server) [내부링크]

node red 를 공부해보고자 했던 이유는 간단하게 modbus master 를 만들 수 있는 도구가 필요하였기 때문입니다. node red 는 modbus master 와 slave 기능을 모두 지원하는데 master 기능을 테스트 하기 위해서 이미 slave 가 준비되어 있다면 좋겠지만 아직 slave 도 개발 중이라면 아래와 같이 modbus flex server 를 이용해서 테스트용 slave 를 만들어 볼 수 도 있습니다. JSON 코드가 큰 관계로 네이버 블로그의 5000자 제한에 걸려서 예제는 파일로 첨부합니다. (5000자 제한 좀 없애주세요!) 첨부파일 modbus_slave.zip 파일 다운로드 좌측 상단 버튼 부터 우측 하단 순서로 노드 설정을 설명하겠습니다. 첫번째 inject 노드는 holding register 를 초기화 하기 위한 inject 입니다. 실행 시 초기화 수행이 필요하므로 inject once after 옵션을 사용합니다. 두번째 inject

[STM32L4] Audio Player#QSPI + USB Mass Storage [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32L4_MOOC: STM32L4 MOOC Project Test STM32L4 MOOC Project Test. Contribute to eziya/STM32L4_MOOC development by creating an account on GitHub. github.com Reference: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/stm32l4-hands-on-workshop.html STM32L4 workshop MOOC - STMicroelectronics Boost application performance with our ultra-low-power STM32L4 MCUs optimized to reduce power consumption and i

[STM32L4] Audio Player#FreeRTOS + FatFS [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32L4_MOOC: STM32L4 MOOC Project Test STM32L4 MOOC Project Test. Contribute to eziya/STM32L4_MOOC development by creating an account on GitHub. github.com Reference: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/stm32l4-hands-on-workshop.html 지난번 Mass Storage 기능에 이어서 이번 글에서는 FreeRTOS + FatFS 파트를 정리하고자 합니다. 지난 글은 아래 링크를 참조 부탁 드립니다. [STM32L4] Audio Player#QSPI + USB Mass Storage ※ 내용에 오류가 있을 수 있습

[STM32L4] Audio Player#SAI(I2S) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32L4_MOOC: STM32L4 MOOC Project Test STM32L4 MOOC Project Test. Contribute to eziya/STM32L4_MOOC development by creating an account on GitHub. github.com Reference: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/stm32l4-hands-on-workshop.html [STM32L4] Audio Player#QSPI + USB Mass Storage ※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference: https://... blog.naver.com [STM32L4] Audio Pla

[STM32L4] Audio Player#Joystick + LCD [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32L4_MOOC: STM32L4 MOOC Project Test STM32L4 MOOC Project Test. Contribute to eziya/STM32L4_MOOC development by creating an account on GitHub. github.com Reference: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/stm32l4-hands-on-workshop.html [STM32L4] Audio Player#QSPI + USB Mass Storage ※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference: https://... blog.naver.com [STM32L4] Audio Pla

[Node-RED] Inject & Debug [내부링크]

몇 개의 글에 걸쳐 아래와 같이 Node-RED 를 활용하는 방법에 대해서 정리해 보고자 합니다. 1) Node-RED 의 기본 노드들을 사용하는 방법 2) Modbus 데이터를 취득하는 방법 3) 취득한 Modbus 데이터를 Web GUI 를 통해 제공하는 방법 Node-RED 의 편리한 점은 예제를 손쉽게 Import 해 볼 수 있다는 점입니다. 인터넷에 공개되어 있는 여러 사람들의 예제는 JSON 형태로 되어 있고 문자열을 그대로 복사하여 Import 메뉴를 이용해서 자신의 Flow 에 Import 해서 구성을 확인할 수 있습니다. 제 예제도 그대로 전체 문자를 복사한 뒤, [{"id":"eb9d28e67b60e253","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-positi

[Node-RED] node.status 함수를 사용한 상태표시 [내부링크]

function 노드는 node.log(), node.warn(), node.error() 함수를 사용하여 메시지를 통해서 상태를 제공할 수 있지만 직관적으로 node 블럭에 상태를 표시하여 오류 발생을 확인할 수도 있습니다. [{"id":"2a6d07ca5c1a021d","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["ae6d03fd78082d90","d77470ae3365a6ce","dca1eb5d94e4a316","dfefc6108178acd0","6255d9b666d156a1","69fe69ca44873b14"],"x":714,"y":439,"w":572,"h":222},{"id":"ae6d03fd7

[Node-RED] change 노드 사용법 [내부링크]

change 노드는 편리한 기능을 제공하고 특히 function 시에 global 한 변수값을 필요로 할 때 유용한 노드입니다. [{"id":"559b34b3dcd3e5af","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["3964e577ed48c12c","b24b67e6d49b2815","bbcb91b50e3bde84","1e2ac9be508f7a0b","15541abc6f1640a6","4d6e35621d8a492d","0d9993502978be35","a172c73283dd4213"],"x":54,"y":699,"w":592,"h":262},{"id":"3964e577ed48c12c","type":"i

[Node-RED] switch 노드 사용법 [내부링크]

switch 노드는 조건에 따른 output 출력의 path 를 결정할 수 있도록 합니다. 실제 다양한 언어들의 switch 문과 유사한 기능을 수행할 수 있습니다. [{"id":"e73526fe649ce5ae","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["da033f7968b8c196","9fa7e6b7b3dd6783","afcc95755b6a10f4","782ede38fa424d12","cf779173812d423a","eec36997052e74a7","e210e9a266a21221","d5f0b55d7a4dc8db"],"x":54,"y":1039,"w":572,"h":222},{"id":"da033

[Node-RED] template 노드 사용법 [내부링크]

tempate 노드는 전달 받은 msg.payload 를 template 포맷에 맞춰 출력하는 기능을 제공하는 노드입니다. 본래 목적은 template 에 맞게 다시 메시지를 만들어서 전달하는 기능이지만 template 가 아닌 메시지 버퍼로 사용할 수도 있습니다. [{"id":"d52655a6d875993f","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["68feb0b35687e665","30f81651137ea14e","fca57a2439855262","4036778fac7e9ffc","7d9504a4e0535b1d","ddbf55ce2ab628ff","d63975eabed4b8e5"],"x":714,

[Node-RED] complete 노드 사용법 [내부링크]

complete 노드는 특정 노드의 동작 완료를 대기하는 용도로 사용할 수 있습니다. [{"id":"fee8f1dd267df183","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["376a031e198a2ddc","7b1b6a7245e1ee00","7494a25be69fb037","d6e76573675f2b6c","8b30b113d05ffc0e","344570a6c5b4fa9a","14c8225bdcf8c8aa","5a7941d70821d19c"],"x":74,"y":1319,"w":592,"h":202},{"id":"376a031e198a2ddc","type":"inject","z":"ba42afc1309

[Node-RED] split 노드 사용법 [내부링크]

split 노드는 이름 그대로 무엇인가 나눌 때 사용하는 노드입니다. 나눌 수 있는 대표적인 것들은 문자열, 배열, JSON 객체 같은 것들입니다. [{"id":"b251cd70236222bb","type":"group","z":"ba42afc1309d2bfd","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["6793f9645b536128","994278810fccdec5","65df1b64163e6b30","ca59d1370e6a692b","4134895e2a6b7ea6","c447dfd7889eb515","97e5a64e05cd57b9","fa8c479a64650835","9c04e3c5a6a7505a","d30f0aad43a5fe57","8c95c4a4f05ca9bd"

[STM32] X-CUBE-SBSFU# Call Graph 분석 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32F4_SBSFU at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32F4_SBSFU at main · eziya/STM32_SECURITY_LAB github.com 첨부파일 SBSFU_CallGraph.drawio 파일 다운로드 9월에 작성하였던 X-CUBE-SBSFU 의 주요 함수들의 흐름을 정리해 놓은 파일입니다. 대략적으로 정리해 놓았고 실제 모든 흐름이 정리되어 있지 않고 제 생각에 중요한 함수들이라고 생각되는 것들만 표현해 넣었습니다.

[STM32 HAL] I2S wav 파일 출력 테스트 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference: (1) Mutex Embedded - YouTube https://youtu.be/QPmFvSFyIbs eziya/STM32F4_HAL_EXAMPLES Mastering STM32 Testing Examples. Contribute to eziya/STM32F4_HAL_EXAMPLES development by creating an account on GitHub. github.com ** 자료 해석에 오류가 있을 수 있습니다 ** 오랜만에 다시 글을 쓰는 것 같습니다. 개인적으로 여러가지 문제들이 생기다 보니 블로그에 자료를 남기는 것이 어려워서 한동안 정리하는 습관을 멀리한 것 같습니다. 오랜만에 STM32F4-DISCO 보드를 꺼내 보았는데 만지작 거리다가 안해본 것이 떠올랐습니다. I2S 관련해서 한번 해봐야지 하고 있었는데 음악은 즐겨하면서도 직업상 오디오와 관련된

[STM32 HAL] LwIP + ENC28J60 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference: https://youtu.be/DqaKZrx_E28 GitHub - eziya/STM32_HAL_LWIP_ENC28J60: STM32 + LWIP + ENC28J60 STM32 + LWIP + ENC28J60. Contribute to eziya/STM32_HAL_LWIP_ENC28J60 development by creating an account on GitHub. github.com 지난 주에는 제가 해 보았던 MII/RMII PHY 가 아닌 SPI 방식의 ENC28J60 ethernet controller IC 를 lwIP 에 Integration 시키는 작업을 해 보았습니다. 시작은 SNS 를 통해서 문의가 들어와서 저도 사용해 보지 않은 IC 이기 때문에 호기심에 작업을 시작해 보았는데 덕분에 ethernet 컨트롤러를 지원하지 않는 모델에서도 SPI 방식으로 네트

[STM32 HAL] STM32H7 LwIP CubeMx 코드 생성 문제점 확인 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32H7_HAL_EXAMPLES: STM32H7 HAL Examples STM32H7 HAL Examples. Contribute to eziya/STM32H7_HAL_EXAMPLES development by creating an account on GitHub. github.com 근래에 STM32H7 LwIP 관련 질문이 있었지만 제가 STM32H7 관련한 제품을 다루지 않기에 보드를 갖고 있지 않아 테스트를 해볼 수가 없었습니다. 이번에 주문을 한 NUCLEO-H723ZG 보드가 들어와서 왜 CubeMx 로 생성한 프로젝트가 정상적으로 동작하지 않는지 테스트를 해 볼 수 가 있었습니다. 결론부터 말씀드리면 아래와 같은 문제들이 있었습니다. 1) LwIP 에서 사용하는 heap 영역에 대한 MPU 관련 설정은 직접해야 한다. 2) memp_memory_RX_

[STM32] MOOC Security#Secure Boot#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_BL at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_BL at main · eziya/STM32_SECURITY_LAB github.com STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_APP at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/st

[STM32] MOOC Security#Secure Boot#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_BL at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_BL at main · eziya/STM32_SECURITY_LAB github.com STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SB_APP at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/st

[STM32] X-CUBE-SBSFU # 포팅 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32F4_SBSFU at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32F4_SBSFU at main · eziya/STM32_SECURITY_LAB github.com 첨부파일 X-CUBE-SBSFU_포팅.pdf 파일 다운로드 한동안 분석해 보았던 X-CUBE-SBSFU 시큐어부트 & 업데이트 패키지의 포팅 관련 자료를 정리해 보았습니다. 개인적으로는 STM32L4 와 STM32F4 두 종류의 SBSFU 를 테스트를 해보았는데 제가 가장 많이 사용하는

[STM32] MOOC Security#X-CUBE-CRYPTOLIB#ECDSA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_ECDSA at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_ECDSA at main · eziya/STM32_SE... github.com 이번 글에서는 ECDSA 알고리즘을 활용하여 signing 하고 verificaiton 을 수행하는 방법을 테스트해보고자 합니다. ECDSA 알고리즘은 다음과 같은 절차로 수행됩니다. private key 로 hash 를 암호화 하였기 때문에 public k

[STM32] MOOC Security#X-CUBE-CRYPTOLIB#SHA256 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_SHA256 at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_SHA256 at main · eziya/STM32_S... github.com 이번글은 CryptoLib 의 hash 함수를 이용한 테스트를 진행해보고자 합니다. 앞선 글들에서 이미 여러차례 프로젝트 세팅 관련한 내용은 언급을 하였기 때문에 이 글에서는 코드 위주로만 정리하고자 합니다. [예제] CMOX hash 함수를 사용하여 si

[STM32] MOOC Security#X-CUBE-CRYPTOLIB#RSA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_RSA at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_RSA at main · eziya/STM32_SECU... github.com 이번글은 CryptoLib 의 RSA 함수를 이용한 테스트를 진행해보고자 합니다. 앞선 글들에서 이미 여러차례 프로젝트 세팅 관련한 내용은 언급을 하였기 때문에 이 글에서는 코드 위주로만 정리하고자 합니다. [예제] CMOX RSA 함수를 사용하여 예상값과 동일

[STM32] MOOC Security#Application Integrity#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_INTEGRITY at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_INTEGRITY at main · eziya/STM32_SECU... github.com 앞선 글들에서는 security 의 기본 개념 및 STM32 에서 security 를 지원하는 기능들에 대한 테스트를 진행하였다면 이번 글에서는 앞서 학습한 기능들을 사용해서 application 의 integrity 를 보장하는 예제를 만들어 보도록 하겠습니다

[STM32] MOOC Security#Application Integrity#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_INTEGRITY at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_INTEGRITY at main · eziya/STM32_SECU... github.com 앞선 글에서는 Application Integrity 를 구현하는 방법에 대해서 정리해 보았고, 이번 글에서는 구현한 FW 이용해서 테스트를 진행해 보고자 합니다. STM32] MOOC Security#Application Integrity#1 ※ 내용에 오류가

[STM32] MOOC Security#Application Authentication [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_AUTHENTICATION at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_APP_AUTHENTICATION at main · eziya/STM32... github.com 이번 글에서는 앞서 정리한 application integrity 에 추가로 authentication 을 위한 signature 를 추가하거 검증하는 방법에 대해서 정리하고자 합니다. 예제는 ST MOOC security in practice 의 1-

[STM32] MOOC Security#OTFDEC, TAMPER, TRNG [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_TRNG at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_TRNG at main · eziya/STM32_SECURITY_LAB github.com 이번 글에서는 OTFDEC, TAMPER, TRNG 를 묶어서 정리해 보고자 합니다. OTFDEC 는 테스트해볼 수 있는 개발보드가 없고, Tamper 는 RTC 에서 충분히 해본 기능이기 때문에 다시 테스트해 볼 필요가 없어서 예제를 만들지 않고 TRNG 가 정말로 중복이나 패턴없이

[STM32] MOOC Security#AES, CRYPT block [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_AES at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_AES at main · eziya/STM32_SECURITY_LAB github.com 일부 모델 중에는 HW 레벨에서 AES 를 지원함 DMA 인터페이스 제공 AES 암호화 복화화를 지원하며 ECB, CBC, CTR 등의 chaining 모드 지원 STM32F423xx Reference 메뉴얼을 확인해보면 128/256비트 key length 를 지원하며 ECB 모드에서

[STM32] MOOC Security#PKA block [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_PKA at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_PKA at main · eziya/STM32_SECURITY_LAB github.com RSA, DH, ECC 와 같은 비대칭 암호화 알고리즘에 사용되는 공개키 암호화 기능을 H/W 차원에서 지원 RSA 암복호화, 서명 생성 및 검증, ECDH key agreement 등에 활용 가능 STM32WB55 와 STM32L5 에서 기능 제공 PKA 블럭은 약 3.5KB 수준의 P

[STM32] MOOC Security#X-CUBE-CRYPTOLIB#AES-CBC-128 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_AES at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_AES at main · eziya/STM32_SECU... github.com 이번 글에서는 X-CBUE-CRYTOLIB 라이브러리 사용법에 대해서 테스트 해보고자 합니다. 앞선 STM32 Security 예제들은 AES, PKA 와 같이 하드웨어를 사용한다면 X-CUBE-CRYTOLIB 는 별도의 전용 H/W 를 사용하지 않기 때문에 모

[STM32] MOOC Security#X-CUBE-CRYPTOLIB#ECDH [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_ECDH at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_CRYPTOLIB_ECDH at main · eziya/STM32_SEC... github.com 이번 글은 ECC 와 DH 알고리즘을 사용하여 공통의 secret 을 생성하는 ECDH 를 Crytolib 를 사용하여 테스트 하고자 합니다. ECDH 관련한 이론 및 openssl 을 활용한 테스트는 이전 글에서 우선 정리하였습니다. https://blog.

[STM32] MOOC Security#Secure Memory [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SECURE_MEM_BOOT at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SECURE_MEM_BOOT at main · eziya/STM32_SE... github.com STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SECURE_MEM_APP at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learni

[STM32] MOOC Security#MPU (Memory Protection Unit) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_MPU at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_MPU at main · eziya/STM32_SECURITY_LAB github.com MPU 는 flash, SRAM, 장치 레지스터 등에 대한 접근 제한 가능 runtime 에 생성/변경 이 가능하다. MPU 속정은 CPU 접근만을 관리한다. priviledged / unpriviledged 모드에 따라 독립적인 설정이 가능하다. user application 이 ope

[STM32] MOOC Security#Firewall [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_FIREWALL at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_FIREWALL at main · eziya/STM32_SECURITY_LAB github.com L0 / L4 모델은 네트워크의 방화벽처럼 보호영역 접근을 제어할 수 있는 Firewall 기능을 제공한다. firewall 은 SW 가 아닌 HW 기반의 보호 기능이며 동적으로 설정이 가능하다. firewall 로 설정된 보호영역의 경우 비보호 영역에서 직접 접근이 불

[STM32] MOOC Security#Trustzone#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32L5_HAL_TRUSTZONE at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32L5_HAL_TRUSTZONE at main · eziya/STM32_SECURI... github.com Reference https://www.st.com/resource/en/application_note/an5347-arm-trustzone-features-for-stm32l5-and-stm32u5-series-stmicroelectronics.pdf 이번 글에서

[STM32] MOOC Security#Trustzone#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32L5_HAL_TRUSTZONE at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32L5_HAL_TRUSTZONE at main · eziya/STM32_SECURI... github.com 이번글에서는 STM32L5 TrustZone 의 기본예제를 정리해보고자 합니다. * 아직 동작시키지 못한 기능 SecureFault_Handler 는 발생하는 법을 파악했으나, GTZC_IRQHandler 인터럽트가 발생하는 방법은 아직 파악하지 못했습니다. (LP

[STM32] MOOC Security#TLS [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com Reference: https://tls12.xargs.org/ The Illustrated TLS 1.2 Connection Every byte of a TLS

[STM32] MOOC Security#Unique ID [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_UNIQUE_ID at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_UNIQUE_ID at main · eziya/STM32_SECURITY... github.com 이번 글부터는 STM32 가 제공하는 Security 관련 기능을 정리해 보고자 합니다. MCU 에 따라 제공하는 기능이 상이하기 때문에 MCU 에 따라서 기능을 제공하는지 사전에 확인이 필요합니다. 저는 테스트를 위해서 NUCLEO-L476RG 와 NUCLEO-L55

[STM32] MOOC Security#Flash & SRAM WRP [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SRAM_WRP at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_SRAM_WRP at main · eziya/STM32_SECURITY_LAB github.com Flash & SRAM WRP 기능을 활용하면 악의적으로 주요 데이터가 변조되는 것을 차단할 수 있다. RDP 옵션과 함께 사용하는 경우에는 Flash 와 SRAM 에 위치하는 secret 데이터의 읽기 및 쓰기를 완전히 차단할 수도 있다. 허가되지 않은 Flash 메모

[STM32] MOOC Security#PCROP [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_PCROP at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_PCROP at main · eziya/STM32_SECURITY_LAB github.com PCROP 는 Proprietary Code ReadOut Protection 의 약자이다. 특정 Flash 영역에 존재하는 코드를 보호할 수 있다. RDP 와 유사하지만 전체 영역에 적용되지 않으며 특정 영역 지정하여 읽기 보호를 할 수 있다. PCROP 로 지정된 영역은 실행만

[STM32] MOOC Security#RDP [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com RDP 보호기능을 이용해서 코드의 복제, 리버스엔지니어링 등을 차단 모든 STM32 시리즈에서 RDP 기능 제공 STM32 시리즈에 따라서 Flash RDP 외 R

[STM32] MOOC Security#Unique Boot Entry [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_BOOT_ENTRY at main · eziya/STM32_SECURITY_LAB https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - STM32_SECURITY_LAB/TEST_PROJECTS/STM32_HAL_BOOT_ENTRY at main · eziya/STM32_SECURIT... github.com STM32 의 Option Bits 및 Boot Pin 설정을 통해 boot location 을 제한하여 security 를 확보하기 위한 방법에 대하여 기술하고 있습니다. L5 의 경우에는 Trustzone 기술과 연계되어 있어어 아래 설명만으로 세부사항을 이해하기

[STM32] MOOC Security#Asymmetric Cryptography [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com Asymmetric Cryptography - 대칭 방식과 달리 비대칭 암호화는 private, public 2개의 키를 사용한다. - 비대칭은 대칭과 비교할 때

[STM32] MOOC Security#Diffie-Hellman [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com 앞선 글에서는 대칭키를 비대칭키를 이용해서 전달하는 방법을 사용하였는데 이와 다른 방식으로 Diffie-Hellman 알고리즘이 있습니다. 1) 서로 공유하는 노란

[STM32] MOOC Security#Symmetric Cryptography [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com 대표적인 알고리즘은 TDES, AES 가 있다. Simple 한 연산만 사용하기 때문에 빠르게 동작하므로 대용량 데이터 암호화에 적합하다. TDES 는 단순하게 말

[STM32 HAL] RTOS + LwIP + MQTT Client update for STM32CubeIDE 1.9.0 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_MQTT_CLIENT_NEW STM32F4_HAL_LWIP_LAB/STM32F4_HAL_ETH_MQTT_CLIENT_NEW at master · eziya/STM32F4_HAL_LWIP_LAB STM32 HAL LwIP Testing. Contribute to eziya/STM32F4_HAL_LWIP_LAB development by creating an account on GitHub. github.com https://blog.naver.com/eziya76/221938551688 [STM32 HAL] RTOS + LwIP + MQTT Client ※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github

[STM32] MOOC Security#Asymmetric Cryptography [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com 대표적인 비대칭 알고리즘인 RSA 는 쉽게 설명하면 N = P * Q 에서 N 을 알고 있을 때 P 와 Q 에 해당하는 커다란 소수를 알아내기 불가능하다는 사실에

[STM32] MOOC Security#Integrity (HASH) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com 해시 함수를 사용하여 Integrity 를 보장할 수 있다. 해시 함수만으로는 Authentication 을 보장할 수 없으므로 대칭/비대칭 알고리즘을 함께 섞어서

[STM32] MOOC Security#Authentication [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com Authentication 은 내가 대화하는 대상이 누구인가 확인하는 절차이다. Authentication 도 대칭, 비대칭 암호화 모두를 이용하여 가능하다. HM

[STM32 HAL] TFTP IAP [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32F4_HAL_LWIP_LAB GitHub - eziya/STM32F4_HAL_LWIP_LAB: STM32 HAL LwIP Testing STM32 HAL LwIP Testing. Contribute to eziya/STM32F4_HAL_LWIP_LAB development by creating an account on GitHub. github.com 사용 보드 : NUCLEO-F429ZI IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 근래에 예전에 테스트 해 보았던 TFTP IAP 가 현재 CubeMx 에서 동작하지 않는다는 이야기가 있어서 제 개인적으로도 다시 한번 정리해 보는 차원에서 최신 CubeMx 와 LwIP 로 테스트를 해

[STM32 LL] SPI EEPROM (25LC010A) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 SPI EEPROM 예제를 LL 드라이버로 테스트해 보고자 합니다. 기존에 STM32 HAL 드라이버, PIC, AVR 등으로 테스트 해 보았던 글에 조금 더 상세한 내용이 있으니 참고 하시면

[STM32 LL] SPI u8g2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 기존에 HAL 드라이버로 테스트 해 보았던 u8g2 라이브러리를 LL 드라이버로 테스트해 보고자 합니다. [STM32 HAL] SPI#Protocol + SSD1306 OLED + u8g2 l

[STM32 LL] I2C BME280 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 기존에 HAL 드라이버로 테스트 해 보았던 BME280 라이브러리를 LL 드라이버로 테스트해 보고자 합니다. [STM32 HAL] I2C#Protocol + BME280 Reference: M

[STM32 LL] IWDG [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 IWDG 를 LL 드라이버로 테스트해 보고자 합니다. IWDG 동작 관련 이론은 아래 글을 참고하시면 될 것 같습니다. [STM32 HAL] IWDG + WWDG Watchdog Referen

[STM32 LL] WWDG [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 WWDG 를 LL 드라이버로 테스트해 보고자 합니다. WWDG 동작 관련 이론은 아래 글을 참고하시면 될 것 같습니다. [STM32 HAL] IWDG + WWDG Watchdog Referen

[STM32] MOOC Security#Symmetric Cryptography [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_security.html - GitHub - eziya/STM32_SECURITY_LAB: https://www.st.com/content/st_com/en/support/lea... github.com 앞으로 당분간 ST MOOC 트레이닝 중 Security 관련 내용을 나누어서 정리해 보고자 합니다. 보안이 없다면 Eve 는 Alice 와 Bob 사이의 비밀도

[STM32 LL] ADC Single Conversion Polling [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 ADC Single Conversion 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-

[STM32 LL] ADC Single Conversion Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 ADC Single Conversion 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-

[STM32 LL] ADC Continuous Conversion DMA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 ADC Single Conversion 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-

[STM32 LL] DAC [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 DAC 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. DAC: OUT2 2. DAC Out2 Configuration 을 enable 한다. 3. Clock

[STM32 LL] DAC DMA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 DAC DMA 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. DAC: OUT2 2. DAC Out2 Configuration 을 enable 한다. 이번에는

[STM32 LL] RTC Alarm [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 RTC Alarm 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. USART2: 115200 8-N-1 RTC: enable 2. RTC 를 enable 하고

[STM32 LL] RTC Timestamp [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 RTC Timestamp 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. USART2: 115200 8-N-1 RTC: enable 2. RTC 를 enable

[STM32 LL] RTC Wakeup [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 RTC Wakeup 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. USART2: 115200 8-N-1 RTC: enable PA0: GPIO Input, S

[STM32 LL] General Timer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 General Timer 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-1 PD12:

[STM32 LL] General Timer Output Compare [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 General Timer Output Compare 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 1152

[STM32 LL] General Timer PWM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 General Timer PWM 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-1 PD

[STM32 LL] Basic Timer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 Basic Timer 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 아래와 같다. PA2/PA3: USART2 Asynchronous 115200 8-N-1 PD12: GP

[알고리즘] 백준 2565 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이번 문제는 최장 증가 수열 (LIS) 문제로 서로 전기줄이 겹쳐지지 않게 최대 개수의 전기줄을 설치하는 문제이다. 아래 그림에서 i 번째 지점에서 이미 전기줄이 배치되어 있다고 할 때, i 보다 작은 j 지점 전기줄의 오른쪽 위치는 i 번째 전기줄의 오른쪽 위치보다 값이 작아야 겹쳐지지 않게된다. 문제 풀이를 위해서는 우선 left, right 로 구성된 전기줄 line 리스트를 left 점 기준으로 정렬한다. dp[i] 는 1로 초기화 된 상

[알고리즘] 백준 11657 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 일반적으로 최단거리 알고리즘은 dijikstra 를 이용해서 풀이가 가능하다. 하지만 문제에 음의 cost 가 있는 경우에는 dijikstra 를 이용하여 풀이가 불가하며 Bellman-Ford 알고리즘을 적용해야 한다. 벨먼-포드 알고리즘 - 나무위키 0 역링크 토론 편집 역사 ACL 벨먼-포드 알고리즘 최근 수정 시각: 2021-11-19 22:30:27 분류 알고리즘 1 . 개요 2 . 의사 코드 1. 개요 [편집] 벨먼-포드 알고리즘은 가

[알고리즘] 백준 1697 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이번 문제는 완전탐색 문제이다. N 에서 K 지점까지 이동하는 방법은 아래 3가지 이다. 1) N+1 (한 칸 앞으로 이동) 2) N-1 (한 칸 뒤로 이동) 3) N*2 (2배 점프) BFS 로 탐색하기 때문에 이미 다른 경로를 타고 해당 노드가 visited 처리되어 있는 경우에는 현재 cost 보다 작을 수 밖에 없기 때문에 재방문할 필요가 없다. import java.io.BufferedReader; import java.io.IOExce

[알고리즘] 백준 2170 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이번 문제는 line sweeping 문제이다. 아래 그림과 같이 여러 개의 라인이 있을 때 (A,C') 와 (D,D') 라인의 길이의 합을 찾아내는 문제이다. 라인을 먼저 left 기준으로 정렬한 후 시작한다. left 기준으로 정렬하였기 때문에 우선 (A,A') 선으로 left, right 가 결정되고 두 점의 길이 result 가 계산된다. 이후 (B,B') 선을 비교할 때 B 가 A' 보다 작기 때문에 두 선은 겹치는 상태인 것을 알 수

[알고리즘] 백준 5419 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이번 문제는 line sweep 과 세그먼트 트리가 결합된 문제이다. 북서풍을 이용해서 이동이 가능하기 때문에 아래와 같이 남동쪽에 있는 노드로만 이동이 가능하다. 이번 문제 풀이에는 3가지 핵심 풀이법이 사용된다. 1) line sweep 알고리즘을 활용하여 탐색 범위 축소 2) segment tree 알고리즘을 활용하여 중복 계산 제거 3) segment tree 구성 시 index 값으로 처리하여 배열 크기 축소 첫번째 풀이의 핵심은 lin

[알고리즘] 직선의 교차점 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 직선의 교차점을 탐색하는 문제에 대해서 매우 잘 설명한 동영상이 있어 아래 링크를 첨부합니다. 직선의 교차점의 개수를 line sweep 알고리즘을 응용하여 처리한다. 위 동영상에서 설명하는 알고리즘 동작으로 아래 예제를 처리하면 다음과 같이 동작한다. 모든 점들을 x, y 순방향으로 정렬한 후 아래와 같이 정렬된 순서로 처리한다. 1) 가로선 (1,1) 점의 Y 값 1을 Set 에 넣는다. Set = {1} 2) 가로선 (2,2) 점의 Y 값

[알고리즘] LeetCode 218 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이번 문제는 위와 같이 건물이 겹칠 때 외부 border line 만을 뽑아내는 문제이다. 풀이를 위한 핵심사항은, 1) line sweeping 을 응용하여 사각형의 각 점을 x축 순방향, y축 역방향으로 set 에 정렬한다. 2) 좌표를 입력시 left 측의 높이는 양수로 right 측의 높이는 음수로 입력하여 정렬 시, left 측 좌표가 우선 처리되도록 하며 부호를 이용하여 좌우 판단을 할 수 있도록 한다. 3) 높은 건물이 우선하도록 역

[알고리즘] 백준 2206 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 일반적인 최소 비용은 dijikstra 로 풀이하지만 이 문제의 경우에는 한칸 이동하는 비용이 동일하게 1 이기 때문에 BFS 를 사용한다. 아래 그림처럼 위로 이동하는 경우 1의 비용이 들지만 우회하는 경우 절대 더 작은 비용으로 방문하는 것이 불가하기 때문에 BFS 수행시 위 방향으로 이동을 먼저하도록 우선 큐에 넣어준다. 이 문제에서 또다른 핵심은 로켓을 사용해서 벽을 뚫고 방문했는지 사용하지 않은 상태에서 방문했는지를 추가적으로 관리해주는

[알고리즘] 백준 2461 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 이 문제는 M개의 원소로 이루어진 N개의 그룹에서 각각 한 개씩을 뽑아서 조합을 만들 때, 해당 조합의 Min, Max 값의 차이가 최소가 되는 값을 찾는 문제이다. 완전탐색으로 풀면 결국 M^N 번 조합을 순서대로 만들어서 찾을 수 있지만 이를 줄이기 위해서 PriorityQueue 를 사용한다. 풀이 순서는 다음과 같다. 1) 각 그룹 내 원소들을 정렬해 주고 각 그룹에서 최소값을 PQ에 담는다. 2) PQ 에서 나오는 값은 최소값이고 최대값

[알고리즘] 백준 16993 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 부분합 최대는 dp 를 이용하여 풀이가 가능하지만 세그먼트 트리를 이용한 방법도 가능하다. 대표적인 세그먼트 트리 예는 sum 값을 만드는 예가 있지만 동일한 방식으로 sum 값이 아닌 자식 노드들의 부분합 최대값을 만들어 두는 방식도 가능하다. 노드의 left, right, max, sum 값은 좌측 노드들의 최대부분합, 우측 노드들의 최대부분합, 좌우 전체 최대 부분합 그리고 전체 합을 의미한다. 아래 그림과 같이 left, right, ma

[알고리즘] 백준 5419 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 가장 기본적인 세그먼트 트리를 활용하는 구간합 문제이다. 특정 노드의 값이 바꾸었을 때, 모든 구간의 합을 재계산 하지 않고 미리 계산해 놓은 구간합 값들에 변경치 많큼을 반영해 주어 빠르게 처리하는 문제이다. update 함수를 보면 부모 노드부터 left 노드까지 diff 값만큼 값을 업데이트 해주면서 내려가는 방식을 사용한다. import java.io.BufferedReader; import java.io.IOException; impor

[알고리즘] Dijikstra + 비용 변경 옵션 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않으며 개인적으로 기억하기 위한 용도입니다. 혹시 문제 풀이를 위해서 검색하신 분들께서는 참고 수준으로만 읽어보시기 바랍니다. References https://swexpertacademy.com/ https://www.acmicpc.net/ https://leetcode.com/ 추천 블로그 https://zoosso.tistory.com/ 기본적인 dijikstra 문제는 dist 값을 1차원 또는 좌표인 경우 2차원으로 사용하지만 방문 비용을 변경할 수 있는 옵션이 주어지는 경우에는 아래와 같이 dist 배열에 옵션 사용 유무에 따른 차원을 추가한다. 앞서 풀이한 백준2206 문제와 유사한 문제이다. 아래 문제에서는 노드를 지나갈 때, 비용을 변경할 수 있는 옵션이 2개 주어졌고 옵션 2개에 해당하는 2개의 차원을 dist 배열에 추가하여 3차원 배열로 선언하였다. 탐색 시 최소

[STM32] LwIP TcpEcho 미동작 임시 대응 (STM32CubeIDE 1.9.0 & STM32CubeMx 6.5.0) [내부링크]

[ 수정된 TcpEcho 테스트 프로젝트 ] https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_LWIP_TEST STM32F4_HAL_LWIP_LAB/STM32F4_LWIP_TEST at master · eziya/STM32F4_HAL_LWIP_LAB STM32 HAL LwIP Testing. Contribute to eziya/STM32F4_HAL_LWIP_LAB development by creating an account on GitHub. github.com [ References ] https://community.st.com/s/feed/0D53W00001R3ctJSAR https://community.st.com/s/question/0D53W00001ScqS1SAJ/lwip-get-hardfaulthandler-after-update-on-stm32cubeide-v190 근래에 예전에 만들어 두었던 lw

[STM32 LL] GPIO [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 오랜동안 업무에서 F/W를 개발하지 않아서 STM32 관련한 지식들을 많이 잃어버린 상황이 되어서 기억을 되살리고 새롭게 공부하지 못했던 부분도 공부를 해보고자 LL 드라이버 관련한 내용들을 정리해 보고자

[STM32 LL] External Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 External Interrupt 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 아래와 같이 핀을 설정해 준다. PA0 : EXTI0 PA12~15 : GPIO Output 2. PA0

[STM32 LL] UART Polling [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 간단한 UART Echo 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. PA2, PA3 핀을 USART2 Tx/Rx 핀으로 설정합니다. 2. 동작 모드는 Asynchronous 1152

[STM32 LL] UART Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 UART Interrupt 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 UART Polling 과 동일하다. USART2 Asynchronous 115200 8-N-1 2

[STM32 LL] UART DMA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_LL_EXAMPLES GitHub - eziya/STM32_LL_EXAMPLES: STM32F4 LL Driver Examples STM32F4 LL Driver Examples. Contribute to eziya/STM32_LL_EXAMPLES development by creating an account on GitHub. github.com 사용 보드 : STM32F4-DISCO IDE : STM32CubeIDE 1.9.0 + STM32CubeMx 6.5.0 Driver Package : STM32Cube FW_F4 V1.27.0 이번 글에서는 UART DMA 예제를 LL 드라이버로 테스트해 보고자 합니다. 1. 기본 설정은 UART Polling 과 동일하다. USART2 Asynchronous 115200 8-N-1 2. DMA

CI(Continuous Integration) 도입해보기 [내부링크]

1. Continuous Integration 이란 무엇인가? - Continuous Integration(이하 CI)는 XP의 Practice...

CruiseControl.Net & Nant & VSS 설치 Episode I. [내부링크]

이번 프로젝트에 CI(Continuous Integration)을 도입해보기 위해서 몇가지 툴에 대해서 알아보았습니다...

Transparent RichTextBox in C# [내부링크]

I've brought this article from http://dotnetjunkies.com/WebLog/johnwood/archive/2006/07/04/transp...

Windows Installation with Scripts Ep1. [내부링크]

본 문서에서는 각종 윈도우 설정에 관련한 Script 정보를 정리하고자 합니다. 이 작업을 하게 된 동기는 ...

Windows Installation with Scripts Ep2. [내부링크]

================================================ 3. Configuring Remote Desktop===================...

Windows Installation with Scripts Ep3. [내부링크]

================================================ 6. Configuring Network Adaptor Address=========...

.NET Remoting 에서 서비스 객체를 Factory Pattern을 이용해 초기화 하기 [내부링크]

Class Factory Example The class factory pattern has become a well loved idiom of object-oriented...

XSD to Class & ADO.NET 사용 [내부링크]

<xsd:schema targetNamespace="urn:schemas-microsoft-com:sql:SqlRowSet1" xmlns:schema="urn:sche...

한분야에 경지에 오른다는 것 [내부링크]

! 무엇을 하느냐 보다 얼마나 잘 할 수 있느냐가 중요하다. 재생하기 바로보기가 지원되지 않는 파일입니다...

Media Center 메뉴 컨트롤 하기 [내부링크]

[출처, Reference] http://blogs.msdn.com/astebner/archive/2006/08/04/689085.aspx 미디어 센터의 메뉴...

DataGridView에서 Image Tooltip 보여주기 [내부링크]

====================================================== 툴팁을 보여주기 위한 UserControl 클래스 ===...

Transparent Label 만들기 [내부링크]

아래 그림이 있는 PictureBox 컨트롤 위에 링크 레이블 또는 일반 레이블을 올려놓을 때 레이블의 백그라...

.Net Remoting IIS Hosting [내부링크]

.Net Remoting 서비스를 IIS를 통해서 호스팅하기 절차 Advanced .Net Remoting 책에 나온 내용을 ...

Web Services Security in The .NET Framework [내부링크]

Refer from http://www.15seconds.com/Issue/020312.htm 15 Seconds : Web Services Security in Th...

.Net Compact Framework WebRequest Upload/Download [내부링크]

NET Compact Framework Improving .NET Compact Framework HTTP Communications using Ht...

WebRequest Sample Code [내부링크]

private void button3_Click(object sender, EventArgs e) {  try {  HttpWebRequest req = (HttpWeb...

WINCE ATL ActiveX [내부링크]

Windows CE 2.1 Technical Articles Building ActiveX Controls for Microsoft Windows CE U...

Mobile Device Service Application [내부링크]

Pocket PC (General) Technical Articles Pocket PC ServicesIntroduction Many Pocket PC ...

MSMQ on Compact Framework(WINCE) [내부링크]

.NET Framework 개발자 가이드 .NET Compact Framework 버전 2.0은 Windows CE의 MSMQ(메...

In The Hand 의 Bluetooth Library와 OBEX를 이용한 File 전송 App [내부링크]

주의사항. WM은 시스템에 기본적으로 OBEX 서버를 가지고 있다. 따라서 기본 OBEX 서버를 내리지...

Alpha Blending in .NET CF [내부링크]

http://www.codeplex.com/alphamobilecontrols http://blog.opennetcf.com/ayakhnin/PermaLink,guid,0b5a...

Windows Forms 지역화 [내부링크]

Windows Forms 프로그래밍 Visual Studio 프로젝트 시스템은 Windows Forms 응용 프로그램의 지역화...

C# Anonymous Methods & The Action Object [내부링크]

By :__doPostBack('ctl00$ContentPlaceHolder1$ArticleHeader1$LinkButtonAuthorName','')">M...

Asynchronous Programming Model in .NET Framework 2.0 [내부링크]

Reference : http://infosysblogs.com/microsoft/2006/09/asynchronous_programming_model_3.html <met...

Microsoft UI 자동화 라이브러리 [내부링크]

MSDN 2008 Feb. Test Run Microsoft UI 자동화 라이브러리 Dr. James McCaffrey 코드 다운로...

Set processor affinity programmatically in a multi-core system [내부링크]

Set processor affinity programmatically in a multi-core system Date: June 26th, 2008 Author: Ed...

Client Profile Configuration Designer [내부링크]

.NET 3.5SP1 기반의 새로운 설치파일 개발 툴 아직까지 완벽하지는 않은 듯 하지만 현재 Learning V...

.NET CF Process Attachment Debugging. [내부링크]

Enabling Attach to Process support in NetCF v2By default, support for attaching the debugger ...

LG 넷하드 N2R1DD2 [내부링크]

기존의 일반적인 NAS와 달리 토런트 서버 및 클라이언트 기능을 탑재하고 있는 NAS 이다. PC나 기...

유용한 .net cf 용 pinvoke examples [내부링크]

Geoff SchwabExcell Data Corporation Contributors: Jonathan Wells Microsoft Corporation Re...

MP3 ID3 TAG [내부링크]

출처 : CodeProject http://www.codeproject.com/KB/cs/Do_Anything_With_ID3.aspx Introduction...

Windows7 WebService 개발을 위한 IIS 설정 [내부링크]

출처 : http://chaoskcuf.com/entry/Vista%EC%97%90%EC%84%9C-MS-SQL-2005-%EC%84%A4%EC%...

2011.7.7 ~ 7.9 울릉도 자전거 도보 여행 [내부링크]

자전거로 한번은 가보고 싶었던 울릉도 여행 울릉도의 남쪽 해안 도로와 북쪽 해안도로는 편하게 자전거 여...

Spring Framework 주요 Pattern [내부링크]

1. IoC / DI 패턴 - 책을 읽으면서 이해한 내용으로는 기존 Factory Pattern과 흡사하다는 점이다. ...

프록시 / 데코레이션 패턴 / Dynamic Proxy / Factory Bean / [내부링크]

클라이언트에서 서비스의 코어 기능을 사용하기 전에 부가적인 기능들을 수반해야 할 때 적용가능한 패턴 #...

DefaultAdvisorAutoProxyCreator + Advisor + Pointcut을 이용한 AOP 기법 [내부링크]

<출처. 토비의 스프링 3.1> 스프링에서 AOP 적용을 위한 4가지 요소 1. DefaultAdvisorProxyC...

그룹함수 DECODE, PIVOT, LAG, LEAD, RANK 사용법 [내부링크]

*출처 ORACLE SQL과 PL/SQL 서진수 저 1. DECODE를 사용하여 ROW를 COLUMN ...

PARTITION 사용 [내부링크]

출처 : 오라클 SQL과 PL/SQL (서진수 저) 1. 파티셔닝 종류 - RANGE partitioning : 연속적인...

13 tips for making responsive web design multi-lingual [내부링크]

Reference : http://responsivenews.co.uk/post/123104512468/13-tips-for-making-responsive-web-design...

Facebook 연동을 통한 날씨 알리미 서비스 샘플 [내부링크]

<작성중> [목표] - Facebook 사용자에게 날씨관련 정보를 제공하는 샘플 어플리케이션 제작 [기능] ...

TLPI) Exercise 4 [내부링크]

Reference : https://github.com/posborne/linux-programming-interface-exercises posborne/linux-progra...

TLPI) Exercise 5 [내부링크]

Reference : https://github.com/posborne/linux-programming-interface-exercises posborne/linux-progra...

TLPI) Exercise 6 [내부링크]

Reference : https://github.com/posborne/linux-programming-interface-exercises posborne/linux-progra...

TLPI) Exercise 7 [내부링크]

Reference : https://github.com/posborne/linux-programming-interface-exercises posborne/linux-progra...

TLPI) Exercise 8 [내부링크]

1. getpwname, getpwuid는 정적 할당 메모리를 리턴하기 때문에 재진입이 불가능한 함수들인데 예제에서 연...

TLPI) Exercise 9 [내부링크]

Reference : https://github.com/posborne/linux-programming-interface-exercises posborne/linux-progra...

Log4J를 이용한 LoggerInterceptor [내부링크]

출처 : http://addio3305.tistory.com/43 스프링(Spring) 개발 - (8) &#47...

방화벽이나 Proxy 에서 Https 를 차단해서 Maven 동작이 되지 않을 때 [내부링크]

사내 방화벽 Proxy 에서 Https 통신을 차단해서 maven 동작이 되지 않을 때 참고 출처 : http://stackove...

MySQL에서 SEQUENCE 유사기능 구현 [내부링크]

temp 테이블 구조 id : int (auto increment) val : int Id 값이 AUTOINCREMENT로 설정된 경...

JSP 2.3 웹 프로그래밍 정리#1 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. Directive 1) page directive - contentTyp...

JSP 2.3 웹 프로그래밍 정리#2 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. JSP 처리 과정 1) 최초 JSP 페이지 요...

JSP 2.3 웹 프로그래밍 정리#3 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. 에러 페이지 지정 12<%@ page contentTyp...

JSP 2.3 웹 프로그래밍 정리#4 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. 자바빈 * <jsp:useBean> : 자바빈 객...

JSP 2.3 웹 프로그래밍 정리#5 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. Cookie * 쿠키는 서버와 브라우저 양쪽에서 ...

JSP 2.3 웹 프로그래밍 정리#6 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. EL(Expression Language) * 기본객체의 ...

JSP 2.3 웹 프로그래밍 정리#7 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. JSTL (JSP Standard Tag Library) ...

JSP 2.3 웹 프로그래밍 정리#8 [내부링크]

본 문서 출처는 "최범균의 JSP 2.3 프로그래밍"입니다. 1. JDBC Connection Pool DB 커넥션을 ...

JSP 2.3 웹 프로그래밍 정리#9 [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. [ 게스트 방명록 Example ] 1. 서비스 구조 D...

JSP 2.3 웹 프로그래밍 정리#10 [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. 1. 태그 파일 JSP 문법을 사용해서 커스텀 ...

JSP 2.3 웹 프로그래밍 정리#11 [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. 1. 서블릿 개발 순서 1) 서블릿 규약에 따라 자...

slf4j + log4j2 설정 방법 [내부링크]

1. Maven을 이용하여 필요한 라이브러리의 Dependency를 설정한다. 2. log4j.xml 파일을 작성하고 해당 ...

JSP 2.3 웹 프로그래밍 정리#12 [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. 1. MVC 패턴 1.1 모델 1 구조 서비스 구조의...

Predix Overview [내부링크]

모든 내용은 https://www.predix.io/ 를 참고하였습니다. 개인적으로 이해한 내용이기 때문에 잘못된 내용...

JSP 2.3 웹 프로그래밍 정리#13 [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. 1. 필터 클라이언트와 서블릿 사이에서 request...

Predix - Deploying Hello World application [내부링크]

간단한 Hello World application 수정 배포하기 1. 계정을 등록한다. 2. Git client 를 설치한다. Prox...

JSP 2.3 웹 프로그래밍 정리#Final Example [내부링크]

본 문서의 출처는 최범균의 JSP 2.3 프로그래밍 입니다. 1. 서비스 처리 구조 모든 요청에 대한 처리는 ...

SQL 중복된 레코드 삭제 [내부링크]

WITH DUP: DUP 테이블은 GROUP BY와 COUNT를 통해서 중복된 항목들을 뽑아낸다. W...

myBatis 가이드 정리 [내부링크]

본 문서는 myBatis3 사용자 가이드를 개인적으로 정리한 문서입니다. (번역자 이동국 [email protected]) h...

myBatis Simple Java Test [내부링크]

myBatis 가이드에 따라서 매우 간단한 형태의 Java Application을 제작해 본다. 1. 테스트용 테이블 생...

Eclipse에서 Spring MVC Java 및 Spring 버전 변경 [내부링크]

Spring MVC 템플릿 프로젝트에서 Java 버전은 1.6으로 Spring의 경우에는 3.x.x 버전으로 초기화 된...

IntelliJ 에서 Eclipse Spring MVC 템플릿 형태로 초기 프로젝트 구성 [내부링크]

IntelliJ 로 Spring Project를 생성하다보면 Eclipse 와는 조금 다른 구성과 파일 명칭을 사용하기 때...

Spring + JSP 페이징 처리 [내부링크]

본 문서는 "코드로 배우는 스프링 웹 프로젝트" 문서에 기반으로 작성되었습니다. 1. 페이징 처리 클래스 ...

Sorting [내부링크]

1. Bubble Sort 2. Insertion Sort 3. Quick Sort

이진탐색, 이진탐색 트리 [내부링크]

1. 이진탐색 Sorting 이 되어있는 상태에서 중간값을 기준으로 좌우 탐색을 통해서 원하는 값을 찾아낸다....

Heap Tree + Priority Queue [내부링크]

Heap Tree는 부모노드는 자식노드보다 작은 값을 갖는 다는 조건을 만족시키는 트리 구조이다. 따라서 항...

해시 테이블 [내부링크]

해시 테이블은 key, value로 이루어진 데이터를 삽입하는 경우에는 key 값을 Hash 함수를 통해서 address...

소수(Prime Number) 구하기 [내부링크]

소수의 특징은 다른 소수로 나누어 지지 않는 다는 점이다. 따라서 값을 증가하면서 기존에 탐색된 소수를 ...

순열(Permutation) 만들기 [내부링크]

순열을 만들기 위해서는 데이터 셋에서 한 항목을 선택한 후 해당 항목과 다른 항목들을 Swap 하여 새로운...

조합(Combination) 만들기 [내부링크]

조합은 nCr 과 같이 표현한다. n은 전체 항목의 수, r은 선택하는 항목의 수이다. 조합의 공식이 있는데 n...

부서 배치 알고리즘 [내부링크]

A, B, C 3개의 부서가 있다. 각 부서에는 최대 3명까지 배치가 가능하다. 총 인원은 5명(E1, E2, E3,...

Graph + DFS + BFS [내부링크]

1. 그래프의 구성 항목 Graph : 그래프 Vertex : 정점 Edge : 간선 인접 : Vertex와 Vertex 사이에 경...

최단거리 알고리즘 (Dijkstra Algorithm) [내부링크]

알고리즘 동작 1. 거리값을 우선 최대값을 만든다. 2. 시작지점의 거리값을 0으로 한다. 3. 모든 노드에 대...

소수중 회문인 케이스 찾기 (Prime number & Palindrome) [내부링크]

1. 소수는 소수로 나누어지지 않는 특성을 이용해서 소수를 찾아낸다. 2. 소수 문자열을 뒤집어서(Reverse...

상대적 우선순위 만들기 [내부링크]

1,2,3,4,5,6 번 학생이 아래와 같은 상대적 우선 순위를 갖는다고 할 때, 각각 학생의 우선순위를 매기는 ...

최단거리 응용#1 [내부링크]

1. 입력 - 섬의 개수 N - 섬의 좌표 (X, Y) - 패스가 있을 수 있는 최대한의 거리 R 2. 섬과 섬의 거리...

최단거리 응용#2 [내부링크]

1. 입력 N개의 Vetex M개의 Edge 시작점 종착점 각각의 Vetex의 data Vetext data가 특정값 이상인 ...

정예 병사 선발 [내부링크]

1. 입력 병사의 수 N 각 병사별 공격력 순위, 방어력 순위 (순위값이 작을 수록 우수함) 2. 정예병사의 조...

패닉룸 최단거리 알고리즘 응용 [내부링크]

1. 입력 N 세로열의 수 M 가로열의 수 N x M 배열을 각 방이라고 할 때 각 방별 weight 2. (0,0) 에서 ...

라즈베리파이 XRDP 접속 오류 발생 시 [내부링크]

tightvncserver 설치 후 xrdp 재설치 $ sudo apt-get install tightvncserver $ sudo apt-get remove xrdp ...

Predix 환경 구성 [내부링크]

1. git 설치 2. ssh 키 생성 3. github 가입 4. github ssh 키 등록 Settings => SSH & GPG ...

Back-End Hello World - Java SpringBoot REST [내부링크]

1. git 를 이용한 source 다운로드 2. maven을 이용한 build 3. cf 유틸을 이용하여 서비스 배포 4. predix...

Predix UAA(User Authentication Authorization) 예제 [내부링크]

1. UAA 서비스 생성 (https://www.predix.io/services/service.html?id=1172) TIERED PLAN의 ...

Pi 카메라 영상 스트리밍(Pi Camera Video Streaming) [내부링크]

출처: http://pmice.tistory.com/292 1. 카메라 활성화 2. PI 에 gstreamer 설치 3. Window에 gstreamer...

Apache 2.4.7 & Ubuntu 14.04.3 LTS 기준 Python CGI 활성화 [내부링크]

1. python 코드 hello.py 작성 2. apache2 설치 3. cgi 용 디렉토리 생성 및 파일 배치 4. /etc/apache2/en...

Predix TimeSeries 서비스 예제 [내부링크]

1. Catalog에서 Time Series 서비스 생성 Catalog - Time Series - Bronze Subscribe 클릭 Org, ...

라즈베리파이 초음파센서 예제 [내부링크]

사용 센서 : HC-SR04 스펙에 따르면, You can calculate the range through the time interval betwee...

DHT11 온습도 센서 GPIO 테스트 [내부링크]

1) Adafruit에서 개발한 라이브러리 이용 http://www.uugear.com/portfolio/dht11-humidity-temperature-s...

DFR0030 터치 센서 GPIO 테스트 [내부링크]

1. PIN 연결 VCC => +5V GND => GND DOUT => GPIO2 (BOARD PIN#3) ...

[SQL]GROUP BY 사용하지 않고 특정 컬럼의 최대/최소값 나머지 컬럼 값을 함께 가져오기 [내부링크]

1. T1 테이블에서 ID, C1, C2, C3 컬럼이 있고 이중에서 C3 값이 최대인 ROW의 ID, C1, C2, ...

[라즈베리파이] Adafruit IO (https://io.adafruit.com) [내부링크]

Adafruit IO 에서 센서를 모니터링 하고 GPIO 제어를 테스트 한다. 1. https://io.adafruit.com 에...

MJPG-Streamer 설치 및 HTML 삽입 [내부링크]

Reference https://github.com/jacksonliam/mjpg-streamer http://blog.cudmore.io/post/2015/03/15/Inst...

2016년 11월 22일 오후 10시 46분 [내부링크]

테스트 진행할 것들 1. A/D 컨버터 2. DC/서보모터제어 3. 조이스틱 연동 4. LCD 연동 5. RTC 연...

SERVO 제어 [내부링크]

참조 : http://blog.naver.com/roboholic84/220312905549 1. 사용부품 트랜지스터 : C945 (NPN)1개 1k ...

SPI 통신 테스트 [내부링크]

Reference : 모두의 라즈베리파이 1. 사용 부품 - MCP3002 AD컨버터 - Cds 조도센서 - 100k 가변저...

SPI통신 조이스틱 연결 [내부링크]

참고 : 모두의 라즈베리 파이 1. 사용한 부품 - MCP3002 AD컨버터 - YwRobot Joystick shield v1 (...

Raspberry Pi Cross Compile#1 [내부링크]

Eclipse를 이용한 원격 디버깅 이전에 간단하게 gcc 컴파일과 gdb를 이용한 원격 디버깅을 확인해 본다. ...

Raspberry Pi Cross Compile#2 [내부링크]

앞에서는 우선 간단하게 gcc 컴파일 후 gdb command를 이용한 원격 Debugging 방법을 알아보았고, 이번에...

Ubuntu 14.04 Oracle 8 JDK 설치 [내부링크]

참고 : http://writeon.tistory.com/31

Raspberry Pi Cross Compile#3 [내부링크]

실제 라즈베리파이에서 개발을 하려면 wiringPi와 같은 라이브러리를 사용하게 된다. 따라서, Cross Com...

I2C DS1307 RTC 테스트 [내부링크]

References : http://cafe.naver.com/openrt/564 https://github.com/switchdoclabs/RTC_SDL_DS13...

LCD 문자열 출력 [내부링크]

레퍼런스 https://learn.adafruit.com/drive-a-16x2-lcd-directly-with-a-raspberry-pi/overview 1. 준비물...

방화벽 Proxy 등으로 Python PIP가 정상동작하지 않을 때 [내부링크]

Googling을 해 보면 --proxy 옵션을 추가하도록 가이드가 많이 있는데 나 같은 경우에는 --proxy 옵션으로...

#1. Toolchain 생성 [내부링크]

Reference : http://free-electrons.com/ Toolchain을 생성하는 방법에는 여러가지가 있을 수 있음 1. C...

#2. Bootloader 작업 (ATMEL SAMA5D3 Xplained 기준) [내부링크]

Reference : http://free-electrons.com/ http://www.at91.com/linux4sam 1. Atmel SAMA5D3 Xplain...

#3. Linux kernel 소스 패치 & 빌드 & NAND Flash 적재 [내부링크]

테스트에서는 4.5 커널을 4.6으로 패치하고 다시 4.6.7로 패치한 후 빌드를 진행한다. 1. 커널 소스 패치 2...

[Yocto] 비글본블랙용 빌드 작업 [내부링크]

Reference : Using Yocto Porject with BeagleBone Black [9781785289736] 1. 우선 Yocto 프로젝트...

#0. SAMA5D3-XPLD QuickStart [내부링크]

Reference http://www.at91.com/linux4sam/bin/view/Linux4SAM/Sama5d3XplainedMainPage 1. 준비...

#4. Buildroot를 이용한 Root filesystem 빌드 [내부링크]

앞선 단계까지 진행한 결과로 Root filesystem을 제외한 커널까지 RAM에 올라온 상태가 완료 되었다. ...

#5. Yocto Poky를 이용한 Root filesystem 빌드 [내부링크]

Reference: http://www.yoctoproject.org/docs/latest/yocto-project-qs/yocto-project-qs.html 앞서 Bui...

FreeRTOS on Arduino [내부링크]

Reference : 아두이노로 만드는 사물인터넷 Chapter 3 FreeRTOS를 이용한 개발 방법의 기초를 알아...

FreeRTOS 인터럽트 처리 [내부링크]

Reference : 아두이노로 만드는 사물인터넷 아두이노 UNO 2번 3번 PIN은 사용자 인터럽트 용으로 사...

POSIX Shared memory [내부링크]

Reference : 리눅스 네트워크 시스템 프로그래밍 2nd edition 주요 함수 shm_open : shared memory 생성 ...

POSIX Semaphore [내부링크]

Reference : 리눅스 시스템 네트워크 프로그래밍 2nd edition 1. 주요 함수 sem_init : 세마포어 초기화, ...

POSIX message queue [내부링크]

Reference : 리눅스 시스템 네트워크 프로그래밍 2판 1. 주요함수 mq_open : 메시지 큐 객체 오픈, 파일 o...

IPC Named Pipe [내부링크]

Reference : 리눅스 네트워크 시스템 프로그래밍 2nd Edition. Named Pipe의 가장 기초적인 사용 예제 ...

MySQL 5.7 Remote 접근 허용 [내부링크]

MySQL 5.6 과 조금 변경사항이 있다.

Node.JS 프로세스 데몬처럼 구동하는 법 [내부링크]

일반적으로 Node.JS의 경우에는 서비스 데몬이 아니기 때문에 Shell 이 내려갈 때 Node 프로세스도 자...

Modbus TCP/IP 기본 [내부링크]

Reference : http://eztcp.co.kr/documents/application/an_modbus_tcp_ko.pdf1. 데이터 모델 입력/출력 ...

초기화 스크립트용 /etc/rc.d/rc.local 추가 [내부링크]

Yocto에서 root filesystem을 빌드 시에 초기화 스크립트를 위한 /etc/rc.d/rc.local 이 없음. inittab 에...

SAMA5D3-XPLAINED CAN1 활성화 [내부링크]

device tree 에 can1 인터페이스 관련 내용을 추가하여 활성화 한다.

SAMA5D3 minimal root filesystem 생성 [내부링크]

Reference : http://free-electrons.com/training/ * 본 작업에 사용된 toolchain은 Crosstool-NG 를 ...

SAMA5D3 SquashFS 및 MMC 부팅 [내부링크]

현재까지 작업한 Root filesystem은 Host PC에 NFS 를 이용해서 마운트하도록 되어 있었다. 여기서...

[STM32] GPIO 기본기능 [내부링크]

Reference : http://cafe.naver.com/cortexworld1. GPIO 동작모드 1) 입력 모드 - floating 입력 : M...

[STM32] 외부 인터럽트 (EXTI) [내부링크]

1. 외부 인터럽트 EXTI0 : PA0 ~ PG0 : EXTI0_IRQHandler() EXTI1 : PA1 ~ PG1 : ...

SAMA5D3 UBI 파일시스템 적용 [내부링크]

1. UBI 파일 시스템 생성을 위한 정보 사전 취득 PEB size : 131072 LEB size : 126976 Min/Max...

[STM32] Timer 인터럽트 [내부링크]

TIM3, 6,7,14번 타이머 인터럽트를 발생시킨다. TIM3 : 1초 주기 TIM6 : 2초 주기 TIM7 : 3초 ...

[STM32] 타이머 OC(Output Compare) 모드 [내부링크]

타이머 OC 모드는 카운터 값이 지정된 CCRx 값과 동일할 때 인터럽트를 발생시킬 수 있는 기능이다. 1...

[STM32] 타이머 OC모드를 이용한 PWM 출력 [내부링크]

타이머 OC모드를 이용하면 PWM 출력이 가능하다. 특정 주기동안 HIGH 신호를 출력하다가 OC인터...

[STM32] 타이머 OC모드 & 멀티 채널 [내부링크]

1. 동작 목표 LED12, LED13은 TIM2의 CHANNEL1로 PWM을 제어하고, LED14, LED15...

[STM32] 타이머 PWM 모드 [내부링크]

앞서 OC모드를 이용해서 수작업으로 PWM 신호를 만들어 내는 방법과 달리 직접 타이머와 PIN을 맵...

PL/SQL) PARTITION 사용 [내부링크]

출처 : 오라클 SQL과 PL/SQL (서진수 저) 1. 파티셔닝 종류 - RANGE partitioning : 연속적인...

PL/SQL) 그룹함수 DECODE, PIVOT, LAG, LEAD, RANK 사용법 [내부링크]

*출처 ORACLE SQL과 PL/SQL 서진수 저 1. DECODE를 사용하여 ROW를 COLUMN ...

[STM32] ADC Polling 방식 [내부링크]

1. 동작 목표 CDS센서와 가변저항에서 값을 읽어 와서 해당 값에 따라서 GPIO 에 연결된 LED 밝...

[STM32] ADC 인터럽트 방식 [내부링크]

앞서 시험해본 Polling 방식이 다르게 ADC 변환이 완료되면 인터럽트가 발생하여 Callback 함수가 호...

[STM32] ADC DMA 방식 [내부링크]

1. 운전목표 ADC1의 IN2, IN3 채널에 가변저항과 CDS 센서를 달고 값을 확인해서 GPIO LE...

[STM32] DAC 제어 [내부링크]

1. 제어목표 DAC 제어기를 통해서 2개의 채널에 Analog 신호를 출력한다. 2. STM32CubeMx 설정 D...

[STM32] DAC Timer + DMA 모드 [내부링크]

1. 동작 목표 타이머를 Trigger로 사용해서 1초마다 DMA 값을 읽어서 DAC 출력에 반영하도록 한다. ...

[STM32] HD44780 SEGMENT LCD + RTC [내부링크]

Reference : https://stm32f4-discovery.net/2015/07/hal-library-15-hd44780-for-stm32fxxx/ 1. 동작목표...

[STM32] 적외선거리센서(ADC) + Servo제어(PWM) [내부링크]

1. 동작 목표 적외선 센서에서 값을 읽어서 해당 거리의 크기에 따라서 Servo 모터를 제어한다. 2. 핀 설...

[STM32] SPI + LIS3DSH accelerometer [내부링크]

1. 동작 목표 STM32F4 디스커버리 보드에 포함되어 있는 LIS3DSH 가속도 센서를 SPI 통신으로...

[STM32] I2C + RTC (DS1307) [내부링크]

1. 동작목표 DS1307 RTC와 I2C 통신을 하여 RTC를 설정하고 100ms 간격으로 데이터를 읽어서 L...

[STM32] USART Blocking 통신 [내부링크]

1. 동작 목표 USART2 포트를 사용해서 PC쪽에서 전송한 메시지를 다시 리턴하는 Echo 동작을 수행...

[STM32] USART Interrupt 방식 [내부링크]

1. 동작 목표 PC로부터 수신한 메시지를 그대로 Echo 한다. 다만 동작 방식을 Blocking 방식이 아닌 I...

[STM32] USART DMA 방식 [내부링크]

1. 동작목표 USART를 이용해서 PC에서 전달받은 데이터를 그대로 Echo 한다. 동작모드는 USAR...

[STM32] USB HID + LIS3DSH [내부링크]

Reference : https://www.youtube.com/watch?v=B3Umr0YlR0w 1. 동작 목표 LIS3DSH 가속도 센서...

[STM32] USB Custom HID [내부링크]

Reference : https://www.youtube.com/watch?v=WsLC7GySfC0&t=2483s1. 운전목표 ST에서 제공...

[STM32] USB CDC [내부링크]

1. 동작 목표 PC와 USB 연결을 통해서 Virtual Comport 통신을 한다. 2. STM32CubeMX 설정 U...

[STM32] Ethernet 초기화 [내부링크]

1. 동작 목표 STM3240G-EVAL 보드를 이용해서 Ethernet을 Bring up 하고 PC에서 PING을 날...

[STM32] LwIP Echo Server 리뷰 [내부링크]

1. LwIP Raw API 2. Echo Server 코드

[STM32] HAL + RTOS + ECHO 서버 [내부링크]

1. 동작 목표 HAL 라이브러리 기반으로 RTOS 상에서 동작하는 ECHO 서버 예제를 STM32Cube...

[STM32] FreeRTOS Mutex 샘플코드 리뷰 [내부링크]

ST에서 제공하는 FreeRTOS Mutex 샘플코드 리뷰 1. SW 레이어 구성 ST는 CMSIS-RTOS ...

[STM32] CMSIS(FreeRTOS) + Semaphore ISR 샘플 코드 리뷰 [내부링크]

1. CMSIS-RTOS 세마포어 CMSIS-RTOS API는 아래와 같은 세마포어 API를 지원한다....

[STM32] CMSIS-RTOS (FreeRTOS) + Memory Pool [내부링크]

CMSIS-RTOS의 Memory Pool 동작을 확인한다. MemoryPool에 관리할 데이터의 구조체 propertie...

[STM32] GPIO + 7-SEGMENT [내부링크]

1. 동작목표 - 5163ASR 7-세그먼트를 0부터 9까지 출력한다. 2. 7-SEGMENT 기본 테스트에 사용한...

[STM32] USART with RTS/CTS Flow Control [내부링크]

1. 동작 목표 - CTS / RTS 신호를 포함한 USART-RS232 통신을 확인한다. 2. USART Flow...

[STM32] HAL + Injected ADC [내부링크]

Reference : http://embedded-lab.com/blog/stm32-adc-2/ 1. ADC 주요 개념 Single Conversion. One...

[STM32] HAL ADC Trigger [내부링크]

1. 동작목표 타이머 인터럽트를 Trigger로 ADC Conversion을 수행하도록 한다. 2. STM32CubeMx ...

[STM32] I2C LCD (CLCD 캐릭터 모듈사용) [내부링크]

1. 동작목표 I2C 방식을 지원하는 LCD 모듈을 이용해서 문자열을 출력한다. 2. 제품정보 http://www.c...

[STM32] DAC 삼각파 출력 Triangle Wave [내부링크]

Reference : http://narodstream.ru/stm-urok-28-hal-dac-triangle/ 1. 동작목표 STM32 DAC의 삼각...

[STM32] DAC 싸인파 출력 [내부링크]

Reference : https://youtu.be/J6FVDsIsy4I?list=PLJTlt64jBcCuRgAMGImQzxRlYdSKa5...

[STM32] USB Storage FAT filesystem [내부링크]

1. 동작목표 USB Stick을 연결하고 파일을 읽고 쓴다. 2. STM32CubeMx 설정 USB_OTG_FS를...

[STM32] SDIO+FATFS를 이용한 파일 입출력 [내부링크]

1. 동작목표 SDIO+FATFS 기능을 사용하여 SD카드에 파일을 읽고 쓴다. 2. STM32CubeMx 설...

[STM32] CAN 통신 [내부링크]

1. 동작목표 - STM3240G-EVAL 보드의 CAN 통신 기능을 활성화 시키고 PC의 IXXAT를 이용...

[STM32] STM3240G-EVAL 보드 TFT LCD 초기화 [내부링크]

1. 동작목표 STM3240G-EVAL 보드의 TFT LCD를 초기화 한다. 2. STM32CubeMx 설정 MC...

[STM32] Port of FreeModbus RTU [내부링크]

https://github.com/eziya/STM32_HAL_FREEMODBUS_RTU 1. Reference - https://habraha...

[STM32] Port of FreeModbus TCP [내부링크]

https://github.com/eziya/STM32_HAL_FREEMODBUS_TCP.git ※ 주의사항 현재 TCP 포...

[STM32] RCC & GPIO 레지스터맵 [내부링크]

1. RCC 레지스터 RCC 레지스터는 아래 주소를 사용한다.RCC_CR : Clock Control 레지스터 * ...

[STM32] USART 레지스터 맵 [내부링크]

USART1의 레지스터 주소는 아래와 같다.USART_SR : Status Register, 송수신 상태 확인 테이...

[STM32] SysTick 레지스터 맵 [내부링크]

STK_LOAD : Reload value 레지스터 * RELOAD : 24bit 카운터 클럭마다 1씩 감소하고 0이 되...

[STM32] EXTI & NVIC Registers [내부링크]

1. EXTI Registers AFIO_EXTICRx : EXTIx 인터럽트 포트 설정 GPIO PIN별로 E...

[STM32] IAP + USART (AN2557) [내부링크]

현재 STM32 IAP(In Application Programming) 기능을 보면 SPL 기반의 AN2557문서와 AN465...

[STM32] IAP + USART (AN4657) [내부링크]

AN4657은 AN2557과 거의 동일하고 다만 SPL이 아닌 STM32CubeMx+HAL 라이브러리로 되어 있...

[STM32] Bit Banding 이해 [내부링크]

1. Overview Bit Banding 목적을 간단하게 설명하면 bit 값을 바꾸고자 할 때, bitwise 연산을 수행하는...

[STM32] Power Saving STOP 모드 [내부링크]

1. 동작목표 - 절전을 위한 STOP모드를 진입하고 RTC Wakeup 또는 외부 인터럽트를 통해서 STO...

[STM32] 내부 RTC + HAL Library [내부링크]

1. 동작목표 NUCLEO-F103RB 보드의 내부 RTC를 사용해서 매초 시간을 USART로 전송하고 1...

[STM32] IWDG HAL 라이브러리 [내부링크]

1. 동작 목표 STM32F4-DISCO 보드를 사용한다. IWDG의 주기를 1초로 한다. 1초 이내에 IWD...

[STM32] WWDG HAL Library [내부링크]

1. WWDG 동작이론 카운터 값이 줄어들어서 63(0x3F)이 될 때 Reset이 걸린다. 카운터를 Refresh 할 ...

[STM32] Flash Memory I/O [내부링크]

1. STM32F4 Flash 메모리 구조 MCU 라인업에 따라 아래 구조는 상이하기 때문에 Reference 메뉴얼...

[STM32] IAP + Ethernet(TFTP) [내부링크]

Reference http://www.st.com/content/ccc/resource/technical/document/user_manual/79/6e/5f/d4/5c/25/4...

[STM32] TIMER 모드 [내부링크]

테스트 하는 TIMER의 주요 모드는 아래와 같다. [카운터 모드] 카운터 값이 증가 또는 감소하면서 카...

[OpenCVSharp] 특정색 원형 검출 [내부링크]

References: http://zeal74.tistory.com/1180 http://tctt.tistory.com/27 Reference에서 Ubuntu 환경에...

wiringpi "Unable to determine hardware version" error 발생시 [내부링크]

최신 RPi Kernel 버전과 wiringpi 최신 버전이 호환성에서 문제가 있는 것 같다. 세부적인 논의 내용은 ...

[RPi] 라즈베리파이 RC 제작#1 [내부링크]

간단하게 RPi 를 이용해서 만드는 RC 관련한 글을 포스팅해보려 합니다. 사실 RC 제작 관련 글들은 ...

[RPi] 라즈베리파이 RC 제작#2 [내부링크]

이번에는 PS3 컨트롤러 연결과 관련하여 설명해 보고자 합니다. PS3 컨트롤러의 경우에는 사용하는 Ra...

[STM32] IAR Workbench에서 Stack Usage 확인하기 [내부링크]

Reference: https://www.iar.com/support/tech-notes/general/stack-usage-and-stack-usage-control-files...

[Arduino] CAN Shield 를 이용한 업데이트 툴 만들기 [내부링크]

https://www.sparkfun.com/products/13262본 문서에서는 Sparkfun 사에서 나온 CAN Shield 를 이용해...

[STM32] MCP2515 CAN 통신 (SPI 방식) [내부링크]

https://github.com/eziya/STM32_SPI_MCP2515.git STM32 Family 들은 bxCAN 기능을 내장하...

[STM32] SPI + FatFS 를 이용한 SD카드 읽기/쓰기 [내부링크]

https://github.com/eziya/STM32_SPI_SDCARD.git Reference : https://blog.domski.pl/using-...

[AVR/ATmega328p] Reference 문서 정리#1 [내부링크]

1. MCU 사양2. PIN 별 기능 정리3. AVR CPU Harvard architecture 채용 - 분리된 Program M...

[AVR/ATmega328p] Reference 문서 정리#2 [내부링크]

1. Power Management & Sleep Modes 소비전력 절감을 위해서 사용하지 않는 모듈을 Sleep Mode ...

[AVR/ATmega328p] GPIO 제어 라이브러리 [내부링크]

간단하게 Atmega328p 용 GPIO 제어 라이브러리를 제작해 보았습니다. GPIO 제어를 위해서는 DD...

[AVR/ATmega328p] USART 라이브러리 [내부링크]

Atmega328p 용 간단한 USART 라이브러리 제작 관련 문서입니다. 우선 USART 관련 레지스터는 아...

[AVR/ATmega328p] ADC 라이브러리 [내부링크]

오늘 만들어볼 라이브러리는 Atmega328p 의 ADC 라이브러리입니다. 우선 레지스터 맵을 살펴보겠습니다...

[AVR/ATmega328p] Reference 문서 정리#3 [내부링크]

1. SPI 1.1 특징 - Full duplex, 3-wire 동기식 데이터 전송 (SCK, MISO, MOSI) - 마스터 /...

[AVR/ATmega328p] Reference 문서 정리#4 [내부링크]

1. TWI 1.1 기능 2버스 라인 통신 Master / Slave 동작 지원 7bit 어드레싱으로 128개의 Slave addre...

[AVR/ATmega328p] External & Pin Change Intterupt 라이브러 [내부링크]

이번에는 간단하게 External Interrupt 와 Pin Change Interrupt 라이브러리를 만들어보고자 합니다. ...

[AVR/ATmega328p] TC0/2 라이브러리 [내부링크]

이번에는 8비트 타이머를 사용하기 위한 간단한 라이브러리를 제작해 보고 타이머를 이용한 기능들을 시험...

[AVR/ATmega328p] TC1 라이브러리 [내부링크]

이번에는 16비트 타이머를 사용하기 위한 간단한 라이브러리를 제작해 보고 타이머를 이용한 기능들을 시험...

[AVR/ATmega328p] SPI 라이브러리 [내부링크]

오늘은 atmega328p 의 SPI 라이브러리를 제작해보고 SPI 기능을 이용해서 EEPROM 에 데이터를 ...

[AVR/ATmega328p] TWI(I2C) 라이브러리 [내부링크]

오늘은 TWI(2-Wire Serial Interface) 또는 I2C(Inter-Integrated Circuit) 로 불리우는 시리얼...

[AVR/ATmega328p] Servo 제어 [내부링크]

앞서 작성해 보았던 T1 타이머 라이브러리를 응용해서 SG90 서보 제어 예제를 구현해 보도록 하겠습니다...

[AVR/ATmega328p] 128x64 OLED I2C (u8glib) [내부링크]

이번에는 128x64 I2C 방식의 OLED 을 사용하기 위한 방법에 대해서 간단하게 기술하도록 하겠습니다....

[AVR/ATmega328p] NOKIA 5110 LCD [내부링크]

오늘은 NOKIA 5110 LCD(이하 N5110) 를 SPI 방식으로 제어하는 방법에 대해서 정리해 보도록 ...

[AVR/ATmega328p] NOKIA 5110 Library for AVR [내부링크]

지난 번에는 간단한 기능 위주로 텍스트를 출력하고 Bitmap 을 그리는 수준에서 NOKIA 5110 라이브러...

[AVR/ATmega328p] 74HC595N 을 이용한 8x8 매트릭스 제어 [내부링크]

이번에는 74HC595N Shift Register 를 이용한 8x8 매트릭스 제어에 대해서 설명해 보려고 합니다. 우...

[AVR/ATmega328p] MAX7219 를 이용한 8x8 매트릭스 제어 [내부링크]

앞선 포스팅에서는 74HC595N 쉬프트 레지스터를 이용해서 8x8 매트릭스를 제어하였다면 이번에는 MAX...

[AVR/Atmega328p] DFPlayer#1 스펙 정리 [내부링크]

1. 기능 - MP3 & WMV 디코딩 - 지원 Sampling rate (8 / 11.025 / 12 / 16 / 22.05 / 24 / 32 / ...

[AVR/Atmega328p] DFPlayer#2 라이브러리 제작 [내부링크]

오늘은 지난 번 글에 이어서 DFPlayer 라이브러리 구현에 대해서 정리해 보도록 하겠습니다. 사실 UA...

[AVR/Atmega328p] Software UART 라이브러리 [내부링크]

Reference : https://community.atmel.com/projects/second-uart-software 앞서 DFPlayer 라이브러리 ...

[AVR/BK-AVR128] BK-AVR128 보드 [내부링크]

이번 부터는 BK-AVR128 보드를 이용해서 ATmega128a 관련 기능들을 살펴보고자 합니다. 보드 관련 ...

[AVR/BK-AVR128] Reset 회로 [내부링크]

Reference : https://blog.naver.com/kansel/50016797501 이번에는 Reset 회로에 대해서 정리해 보도록 ...

[AVR/BK-AVR128] Buzzer 제어 [내부링크]

Reference : http://kocoafab.cc 이번에는 부저 동작에 대해서 정리해 보도록 하겠습니다. 아시는 분들도 ...

[AVR/BK-AVR128] I2C EEPROM(AT24C02) [내부링크]

이번에는 I2C 방식으로 동작하는 EEPROM 인 AT24C02 를 제어해 보도록 하겠습니다. 제어를 위해...

[AVR/BK-AVR128] PWM LED [내부링크]

이번 글에서는 PWM LED 제어에 대해서 설명 드려 보도록 하겠습니다. PWM 을 생성하는 방법은 여...

[AVR/BK-AVR128] 74HC573 + FND [내부링크]

이번에는 BK-AVR128 보드의 FND 제어에 대해서 정리해 보도록 하겠습니다. 회로도는 아래와 같이 2...

[AVR/BK-AVR128] TL1838 IR 수신기 [내부링크]

References 이번 글에서는 IR Receiver 에 대해서 정리해 보도록 하겠습니다. 적외선 통신 관련한 글은...

[AVR/BK-AVR128] DS18B20 + 1 Wire 통신#1 [내부링크]

이번 글에서는 DS18B20 1-Wire Thermometer 에 대해서 정리해 보도록 하겠습니다. 회로도를 보시면 아...

[AVR/BK-AVR128] DS18B20 + 1 Wire 통신#2 [내부링크]

이전 글에 이어서 DS18B20과 통신을 하기 위한 1-Wire 통신에 대한 내용을 정리해 보겠습니다. 1-Wire...

[AVR/BK-AVR128] ADC [내부링크]

이번 글에서는 ATmega128A 의 ADC 기능에 대해서 정리해 보도록 하겠습니다. 지난번 ATmega328p 를...

[AVR/BK-AVR128] Stepper Motor + ULN2003 [내부링크]

이번 글에서는 스테퍼 모터와 모터 제어를 위한 ULN2003 달링턴 트랜지스터 어레이에 대해서 정리해 보...

[AVR/BK-AVR128] DS1302 RTC [내부링크]

이번에는 BK-AVR128 보드에 DS1302 RTC에 관련하여 정리해 보도록 하겠습니다. DS1302 는 아두...

[AVR/BK-AVR128] Key Matrix [내부링크]

BK-AVR128 보드의 마지막으로 Key 매트릭스에 대해서 간단히 정리하고 마무리 하도록 하겠습니다. B...

[AVR/ATmega128a] TEA5767 FM Radio#1 [내부링크]

오늘은 FM 라디오 모듈인 TEA5767 제어에 대해서 정리해 보도록 하겠습니다. 정리에 앞서 아래 링크들...

[AVR/ATmega128a] TEA5767 FM Radio#2 [내부링크]

이번 글에서는 앞서 정리하였던 TEA5767 의 수신품질 개선을 위한 부분에 대해서 정리해 보도록 하겠습...

[AVR/ATmega128a] Si4703 FM Radio#1 [내부링크]

이번 글에서는 지난 번 TEA5767에 이어서 Si4703 FM 라디오 모듈에 대해서 정리해 보도록 하겠습니다...

[AVR/ATmega128a] Si4703 FM Radio#2 [내부링크]

이번에는 지난번 글에 이어서 Si4703 모듈의 주요 기능을 구현해 보도록 하겠습니다. 제가 Si4703 을 구...

[AVR/ATmega128a] Si4703 FM Radio#3 [내부링크]

오랜만에 글을 씁니다. 지난 달에 Si4703 라디오 라이브러리 작업을 해 보았었는데 그냥 라디오만 듣는 것...

Atmel-ICE 로 Arduino 디버깅 하기#Uno편 [내부링크]

제가 현재 보유하고 있는 아두이노 보드는 Uno, Nano, Pro mini 3v3, Mega 4가지 입니다. AVR 코딩...

Atmel-ICE 로 Arduino 디버깅 하기#Pro Mini 편 [내부링크]

지난 글에 이어서 이번 글에서는 Arduino Pro Mini 를 Atmel-ICE 장비를 이용해서 디버깅하고 다시 ...

Atmel-ICE 로 Arduino 디버깅 하기#Nano 편 [내부링크]

!!!주의사항 아두이노 나노는 앞서 설명한 우노 나 프로 미니와 달리 다시 아두이노 부트로더를 복구하기가...

Atmel-ICE 로 Arduino 디버깅 하기#Mega 편 [내부링크]

오늘은 마지막으로 Atmel-ICE를 이용해서 아두이노 메가 보드를 디버깅하는 방법에 대해서 알아보도록 ...

[RPi] MJPG-Streamer 설치 [내부링크]

1. 빌드 환경 구성 2. 소스 다운로드 3. 빌드 및 인스톨 4. 실행 스크립트 작성 [mjpg.sh] 5. 웹 페이지 접...

[RPi] E-Ink(E-Paper) 어플리케이션 개발#1 [내부링크]

이번에는 E-Ink 어플리케이션 개발을 위한 라즈베리파이 환경 구성에 대해서 정리해 보도록 하겠습니다. ...

[RPi] E-Ink(E-Paper) 어플리케이션 개발#2 [내부링크]

오늘은 이미지를 출력하는 방법에 대해서 알아보겠습니다. Waveshare 쪽에서 제공하는 문서 자료는 찾기 ...

[RPi] E-Paper + Google Photos API Python 연동#1 [내부링크]

앞선 글에서는 E-Paper 에 그림을 출력하는 기능까지 구현을 해 보았습니다. 그림을 보니 은근 흑백사진...

[RPi] E-Paper + Google Photos API Python 연동#2 [내부링크]

지난 글에 이어서 이번에는 Photos API 를 통해서 사진 파일을 다운로드 받는 방법에 대해서 정리해 보...

[RPi] E-Paper + Google Photos API Python 연동#3 [내부링크]

지난 글에서는 Google photos API 를 이용해서 images 폴더에 다운로드 받은 이미지를 흑백 176 x 264 ...

[RPi] E-Paper + DHT11 센서 연동 [내부링크]

이글에 앞서 waveshare 의 라이브러리 사용법에 대해서 확인하실 필요가 있습니다. 이번 글에서는 Partial...

[RPi] Waveshare 1.44" LCD HAT 테스트 [내부링크]

Reference: https://wavesharejfs.blogspot.com/2018/03/raspberry-pi-driv-144inch-lcd-hat-with.html ht...

[SW] GIT CLI 기초 명령어 정리 [내부링크]

Reference: Git Crash Course "Section One" 1. git config 명령어 사용자 정보 업데이트2. git init...

[SW] GIT CLI 기초 명령어 정리#2 [내부링크]

오늘은 git branch 관련하여 간단한 예제를 만들어 보겠습니다. 실무와는 아주 먼 매우 간단한 예제입니다....

[SW] GIT CLI 기초 명령어 정리#3 [내부링크]

지난 번 글에 이어서 이제는 새로운 사용자가 github 에 올려져 있는 소스를 보고 그 중에서 master가 아닌...

[RPi] 라즈베리파이 RC 제작#3 [내부링크]

이번에는 RC 조립에 관련한 글을 정리해 보겠습니다. 조립에 필요한 품목은 아래와 같습니다. 상세한 제...

[RPi] 라즈베리파이 RC 제작#4 [내부링크]

RC 제작 관련 마지막 글입니다. 우선 Adafruit Motor HAT 제어를 위해서 i2c 인터페이스를 활성화 ...

[ESP8266] 개발환경 구성 및 ESP-01S 업데이트 [내부링크]

Reference : http://chrisiot.com/update-esp8266-at-firmware-using-linux-esp-01이번 글에서는 ESP82...

[ESP8266] NodeMCU 업데이트 [내부링크]

Reference: https://dbsesp.wordpress.com/2016/07/08/esp8266-nodemcu-methods-of-interrupting-init-lua...

[RPi] E-Paper + Google Photos API Python 연동#Digital 액자 [내부링크]

이번 글에서는 앞서 개발한 Google Photos API 와 E-Paper를 통합한 최종 결과물로 만들어본 디지털...

[ESP8266] AT COMMAND 를 이용한 REST API 호출 [내부링크]

[References] - 사물인터넷을 위한 ESP8266 프로그래밍 / 허경용저 - https://youtu.be/uznq8W9sOK...

[Tip] 핀헤더 제거 하는 Tip [내부링크]

처음 핀헤더를 Straight 에서 right angle 타입으로 바꿔주려고 할 때 애를 먹은 적이 있는데 동영상으로 ...

[ESP8266] SPI통신 + NOKIA5110 [내부링크]

오늘은 ESP8266 SPI 통신과 관련한 내용을 정리해 보려고 합니다. 우선 하드웨어 구성에 관련하여 설...

[ESP8266] GxEPD Library for E-PAPER#1 [내부링크]

이번 글에서는 ESP8266 을 이용해서 E-PAPER 를 Driving 해 보기 위한 테스트 과정을 우선 설명...

[ESP8266] GxEPD Library for E-PAPER#2 [내부링크]

지난 글에 이어서 ESP8266 환경에서 GxEPD 라이브러리를 이용하여 Waveshare 1.54" EPD를 Driv...

[ESP8266] 날씨정보(OpenWeatherMap) + E-Paper [내부링크]

이번 글에서는 OpenWeatherService 를 이용해서 날씨 정보를 취득하고 취득한 정보를 E-PAPER 에 ...

[ESP8266] 날씨정보 + SD Card Logging [내부링크]

지난 글에서 OpenWeatherMap 서비스를 이용해서 날씨 정보를 가져와 EPD 에 표시하는 방법에 이어서 ...

[ESP8266] 날씨정보 + SSD1306 Library [내부링크]

이번글은 SSD1306 OLED 라이브러리에 관련한 글입니다. 계속 날씨 서비스에 관련한 예제를 만들다보...

[ESP8266] PlatformIO & SPIFFS [내부링크]

오늘은 PlatformIO 환경에서 SPIFFS 파일 시스템을 사용하는 방법과 몇 가지 ESP 전용 API ...

[ESP8266] OTA (Over the air) 업데이트 [내부링크]

오늘은 ESP8266 의 OTA(Over the air) 업데이트 기능에 대해서 살펴보겠습니다. 저 같은 경우에는 ...

[ESP8266] WEB SERVER 로 온도 표시하기#1 [내부링크]

이번 글은 Arduino Web Server 기능을 사용하여 현재 온도 정보 서비스를 구현하는 방법에 대해서 정리...

[ESP8266] WEB SERVER 로 온도 표시하기#2 [내부링크]

지난 번 글에 이어서 오늘은 ESP8266 의 Web Server 를 통해 센서에서 취득한 온도, 습도 정보를 제공...

[ESP32] WEB SERVER 로 온도 표시하기#3 [내부링크]

지난 글에서 ESP8266 NodeMCU 를 사용해서 DHT22 의 온도/습도 정보와 DS3231 RTC 시간 정...

[RPi] Google AIY Voice Kit [내부링크]

https://aiyprojects.withgoogle.com/voice/ https://github.com/google/aiyprojects-raspbian 오랜만에 글...

[RPi] Google AIY Voice Kit# 한국어 TTS [내부링크]

앞서 글에서 예제를 만들 때 아쉬웠던 부분이 하나 있습니다. 아이들을 위한 동화 재생기인데 영어로 쏼라...

[STM32 HAL] Mastering STM32 by Carmine Noviello 정리# 준비과정 [내부링크]

몇 차례에 걸쳐서 CARMINE NOVIELLO 가 쓴 Mastering STM32 란 서적의 내용을 순서대로...

[STM32 HAL] GPIO [내부링크]

Reference https://leanpub.com/mastering-stm32 https://github.com/eziya/STM32F4_HAL_EXAM...

[STM32 HAL] Interrupt#1 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 인...

[STM32 HAL] Interrupt#2 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 인...

[STM32 HAL] UART 통신 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ U...

[STM32 HAL] DMA 관리#1 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [배...

[STM32 HAL] DMA 관리#2 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [예...

[STM32 HAL] DMA 관리(SPI 예제)#3 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [예...

[STM32 HAL] Clock Tree [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] Timer# Basic 타이머 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [배...

[STM32 HAL] General Purpose 타이머# External Clock Mode 2 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [배...

[STM32 HAL] General Purpose 타이머# External Clock Mode 1 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [배...

[STM32 HAL] General Purpose 타이머# Input Capture + DMA [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] General Purpose 타이머# Output Compare 모드 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] General Purpose 타이머# PWM 모드 [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] General Purpose 타이머# One Pulse Mode [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] General Purpose 타이머# Encoder Mode [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] ADC#Single Conversion [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 배...

[STM32 HAL] ADC#Continuous Conversion [내부링크]

Reference: Mastering STM32 by Carmine Noviello ** 자료 해석에 오류가 있을 수 있습니다 ** [ 예...

[STM32 HAL] WIZNET W5100(W5500) + TCP CLIENT [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. ※ 6.13 W5500 모듈...

[STM32 HAL] WIZNET W5100(W5500) + ECHO SERVER [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. ※6.13 W5500 모듈을...

[STM32 HAL] MQTT + AWS IOT [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/e...

[알고리즘] SWEA 1242 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1244 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1245 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1247 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1248 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1249 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1251 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1260 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1264 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1266 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1267 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 1268 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3282 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3813 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3816 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3819 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3820 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3947 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3952 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[SW] Git 명령어 재정리 [내부링크]

References: https://git-scm.com/book/ko/v2 1.초기화 관리용 .git 디렉토리 생성 2.사용자 설정 git 사...

[알고리즘] SWEA 3954 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3993 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3996 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 3998 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4005 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4006 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4007 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4038 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4040 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4041 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4042 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4052 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4062 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[알고리즘] SWEA 4070 [내부링크]

아래 정리하는 내용들은 대부분 다른 분들의 코드를 참고하여 작성한 코드이기 때문에 최적화 되어 있지 않...

[STM32 HAL] RTOS + LwIP + MBEDTLS#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_ETH_MBEDTLS지난 글에 이어서 mbedTLS 코드 개발 내용을 정리해 보도록 하겠습니다. 1. mbedtls_config.h먼저 확인해야 하는 파일은 mbedtls_config.h 파일입니다. 이 파일은 CubeMx 에서 설정한 설정에 따라 define 값들이 처리되어 있습니다. 우선 github 에 있는 제 project 의 mbedtls_config.h 파일을 다운로드 받고 직접 생성한 프로젝트의 mbedtls_config.h 파일을 merge 툴을 이용하여 비교하여 defined 되어야 하는 항목들을 CubeMx 에서 설정하여 줍니다. 저는 https://www.google.com 에 접속하기 위한 테.......

[STM32 HAL] MQTT + mbedTLS [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_ETH_MQTT_CLIENT_MBEDTLSReference https://www.st.com/resource/en/user_manual/dm00470937-getting-started-with-xcubecldgen-iot-cloud-generic-software-expansion-for-stm32cube-stmicroelectronics.pdfIoT 시장에서 보안은 필수적인 요소일 것 같습니다. Cloud 기반의 IoT 플랫폼들은 모두 보안 통신을 사용하기 때문에 AWS IOT 등의 서비스를 사용하려면 단순 MQTT 프로토콜만 구현해서는 안되며 SSL/TLS 프로토콜을 함께 지원해야 합니다. 지난 번 작성한 MQTT 와 mbedTLS 를 조합하여 오늘은 SSL/TLS 보안.......

[STM32 FreeRTOS] 자료 Review#3 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_FREERTOS_LABST 에서 제공하는 자료들을 기반으로 FreeRTOS 의 기본 특성에 대해서 정리하여 보고 해당 자료의 Lab 코드들을 테스트해 보고자 합니다. Mutex 는 Priority Inheritance 동작 지원하는 Binary 세마포어라고 생각하면 된다. Binary 세마포어이기 때문에 하나의 Resource 에 대한 접근은 하나의 Task 만 가능하다. Mutex 가 지원하는 Priority Inhertitance 는 Priority Inversion 이슈를 해결하기 위한 것으로 Mutex 를 소유하고 있는 task 의 priority 가 일시적으로 mutex 를 소유하고자 하는 task 의 h.......

[STM32 FreeRTOS] 자료 Review#4 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_FREERTOS_LABST 에서 제공하는 자료들을 기반으로 FreeRTOS 의 기본 특성에 대해서 정리하여 보고 해당 자료의 Lab 코드들을 테스트해 보고자 합니다. Event Group세마포어, 뮤텍스 등이 하나의 이벤트만을 사용한다면 Event Group 은 여러개의 이벤트를 조합하여 동기화 가능. 현재 CMSIS-RTOS API v1 에서는 미지원하며 FreeRTOS API 사용 필요.[ LAB#10 ]프로젝트 구성- 3개의 Task 를 생성한다. - EventSender1, EventSender2, EventRecevier 태스크는 모두 osPriorityNormal 로 우선순위 설정 - Event Group 용 변.......

[STM32 HAL] Ethernet 초기화 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_BASIC근래에 ethernet 관련해서 가끔 댓글이 달리기도 하는데 예전에 블로그에 글을 쓸 때는 github 에 소스를 올려놓지 않아서 프로젝트 파일을 원하시는 분들에게 전달해 드리는 것이 수월하지 않아 github 에 소스를 정리해 보고자 합니다. 그리고 혹시 기회가 된다면 관심이 있던 WolfSSL 이나 CycloneTCP 도 조사해 보고자 합니다. 첫 글은 기존에 한번 작성해 보았던 Ethernet 초기화에 관련한 글과 동일하지만 당시에는 STM3240G 보드를 사용하였다면 이번에는 NUCLEO-F4.......

[STM32 HAL] LwIP TCP Echo Server [내부링크]

https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_TCPECHO지난번 초기화에 이어서 ST에서 제공하는 Echo Server 예제 코드를 분석하고 수정하여 보았습니다.스트레스 테스트를 위해서 간단한 C# 어플리케이션을 하나 제작하여 같이 테스트를 진행하였습니다. 드라이버 초기화는 앞선 글에서 모두 정리하였기 때문에 반복해서 정리하지는 않고 아래 링크를 참조 부탁 드리겠습니다. https://blog.naver.com/eziya76/221852430347드라이버 초기화가 완료되면 아래와 같이 프로젝트에 tcp_echo.h 와 tcp_echo.c 파일을 추가하여 줍니다. 우선 tcp_echo.h 파일을 살펴보겠습니다. echo 서버의 Listen 포트는 7번입니다.......

[STM32 HAL] LwIP TCP Client [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_TCPCLIENT오늘은 지난 번 Echo Server 에 이어서 lwIP Raw API 기반으로 Tcp Client 예제를 한번 작성해 보았습니다. Raw API 는 RTOS 를 사용하지 않는 경우 callback 기반으로 동작하는데 socket 과는 상이한 부분이 많아서 사실 socket API 로 코딩하면 쉽게 구현이 가능한 부분도 문서를 찾아가며 개발을 하다보니 좀 복잡하다는 생각이 들었습니다. 하지만 RTOS 기반이 아닌 경우 blocking 을 막기 위해서는 callback 기반으로 동작하는 것이 필요하며 NodeJs 와 같이 call.......

[STM32 HAL] RTOS + LwIP TCP Echo Server [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_RTOS_TCPECHO몇일 전에 Raw API 를 사용한 방식의 echo server 예제를 포스팅 하였습니다. 오늘은 RTOS 와 netconn API 를 사용한 echo server 예제를 포스팅 하고자 합니다. 예전에 한번 정리하였던 글인데 해당 글을 정리할 때는 소스를 github 에서 관리하지 않던 시기여서 전체 프로젝트 소스가 없다보니 요청을 하시는 분들도 많이 계셔서 이번에 다시 한번 정리해 보게 되었습니다. https://blog.naver.com/eziya76/221854875861우선 프로젝트의 구성이나 코드는 netcon.......

[STM32 HAL] RTOS + LwIP TCP Client [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_LWIP_LAB/tree/master/STM32F4_HAL_ETH_RTOS_TCPCLIENT오늘은 몇일전에 작성하였던 Raw API 를 사용한 TCP Client 예제를 netconn API 사용한 방법으로 수정한 내용을 정리해 보고자 합니다. CubeMx 설정관련한 내용은 앞선 LwIP 예제에서 여러번 다루었기 때문에 별도로 추가 설명하지 않고 앞선 LwIP TCP Echo Server 예제나 그 외 별도 LwIP 관련 글들을 참고하시면 충분하실 것 같습니다. 기본적으로 생성된 프로젝트 파일에서 수정이 필요한 부분은 main.c 와 freertos.c 파일입니다.main.c 파일에서는 print.......

[STM32 HAL] RTOS + LwIP + MQTT Client [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_ETH_MQTT_CLIENT요즘 업무가 바쁘다 보니 공부하는 시간에 대한 투자 여유가 없어져서 오랜 만에 글을 올리게 됩니다. 오늘은 MQTT Client 구동 관련하여 이번에 제가 테스트 해 본 내용을 정리해 보고자 합니다. MQTT(Message Queuing Telemtry Transport) 라고 많이들 들어보셨을 것 같고 MQTT 가 무엇인지는 저보다 많은 지식을 갖고 잘 정리한 분들이 많기 때문에 Google 을 검색하여 보시면 될 것 같습니다.제 글은 MQTT 가 무엇이고 어떻게 동작하는지에 대해서가 아니라 응용적인 측면에서 STM32 상에서 MQTT.......

[STM32 HAL] RTOS + LwIP + MBEDTLS#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_ETH_MBEDTLSReferencehttps://engschool.tistory.com/entry/SSLTLS-embedded-for-IoT-8https://cxemotexnika.org/2018/10/primer-zashhishhennogo-https-soedineniya-s-ispolzovaniem-mbed-tls/https://github.com/PetroShevchenko/cxemotexnika/tree/master/Examples/NUCLEO_F429ZI/nucleo_f429zi_https_client근래에 MQTT 를 테스트하면서 결국 Amazon IOT 나 기타 서비스들을 이용하기 위해서는 SSL/TLS 기반의 보안 통신 기반이 준비되어야만 하기 때문에 MbedTLS 쪽을 살펴보게 되었습니다. 먼저 MBEDTLS 를 테.......

[PIC32 Harmony] Timer Driver [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_TIMER_DRIVER/Referencehttps://microchipdeveloper.com/harmony:example-tmr지난 글 Timer System Service 테스트에 이어서 이번 글에서는 Timer Driver 를 직접 이용하는 방법에 대하여 정리해 보도록 하겠습니다. Timer System Service 는 하나의 타이머를 이용해서 여러 개의 Timer Client 를 만들어서 다양한 주기로 동작하는 application 을 만들 수 있었지만 결국 application 의 running frequency 가 하나라는 제약이 있습니다. 유사한 주기의 Timer client 라면 문.......

[PIC32 Harmony] ADC + Timer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_ADC/Reference https://microchipdeveloper.com/harmony:example-adc-wi-fire오늘은 Harmony 를 이용한 ADC 에 대하여 정리해 보도록 하겠습니다. Wi-Fire 보드에는 아래와 같이 AN8 핀에 가변저항이 달려있어 해당 가변저항값을 ADC 로 읽어보는 예제를 작성하도록 하겠습니다. 기본적인 틀은 거의 MicrochipDeveloper 사이트의 예제와 동일하며 타이머나 UART 출력 부분만 수정하거나 추가하였기 때문에 Reference 링크를 참고하시면 도움이 되실 것 같습니다. 예제 순서는.......

[PIC32 Harmony] SD Card + File System [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_SDCARD/firmwareReferencehttps://microchipdeveloper.com/harmony:audio-player-lab2http://ww1.microchip.com/downloads/en/DeviceDoc/Driver%20Libraries%20Help%20v2.06.pdf이번에는 Harmony 를 이용해서 SD 카드를 Read/Write 하는 방법에 대해서 정리해 보도록 하겠습니다. 예제는 버튼을 누를 때마다 first.txt 라는 파일을 오픈하고 문자열을 쓴 후에 파일을 닫았다가 다시 파일을 열어서 해당 문자열을 읽어 UART 로 전송하는 예제를 만들어 보도록 하겠습니다. 프.......

[PIC32 Harmony] I2C + BME280 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_I2C_BME280/firmwareReferencehttps://github.com/BoschSensortec/BME280_driver오늘은 Harmony 를 이용한 I2C 테스트를 진행하여 보도록 하겠습니다. 기존에 STM32 HAL 드라이버를 사용하여 테스트를 해본 센서이기 때문에 세부적인 내용은 아래 링크를 참조 부탁드리겠습니다. https://blog.naver.com/eziya76/221486711330프로젝트 생성 순서는 다음과 같습니다. 1) 하모니 프로젝트를 생성하여 줍니다. 2) HMC 하모니 Configurator 를 실행하여 줍니다. 3) Clock 탭에서 C.......

[PIC32 Harmony] WIFI(MRF24WG0MA) + TCP [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_MRF24WG/firmwareReferenceshttps://microchipdeveloper.com/wifi:wh2020.02.04 수정사항아래 이슈사항 중 application task priority 보다 system task priority 가 높은 경우 동작하지 않던 문제 수정1) application task 는 priority 2로 설정, system task 는 priority 3으로 설정2) Wi-Fi driver 항목에서 Use SPI with DMA in Wi-Fi driver 항목 Enable3) Wi-Fi driver 항목에서 Intialization task, MAC task priority 를 level3 으로 변경4) SPI driver 항목에서 Use DMA .......

[PIC32 Harmony] WIFI(MRF24WG0MA) + HTTP RESTful API (ThingSpeak.com) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_MRF24WG_RESTful/firmware이번 글에서는 지난번 Wifi 드라이버 테스트와 BME280 테스트 코드를 확장해서 Mathworks 의 ThingSpeak.com 의 RESTful API 를 이용하여 온습도 데이터를 Upload 하는 테스트를 진행하여 보았습니다. Wifi 드라이버 테스트와 BME280 테스트는 각각 해당 글을 참고 부탁 드리며 이번 글에서는 TCP 소켓을 이용하여 HTTP Restful API 를 사용하는 방법을 중심으로 정리해 보도록 하겠습니다. Mathworks 의 https://thingspeak.com/ 사이트는 아래와 같.......

[PIC32 Harmony] USB Host Mass Storage [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_USB_HOST_MSD/firmwareReferencehttps://github.com/Microchip-MPLAB-Harmony/usb/wiki/Create-your-first-usb-host-msd-application오늘은 Harmony 를 이용해서 USB 저장장치 테스트를 진행하여 보았습니다. 지난 MRF24WG Wifi 모듈과 마찮가지로 Harmony 를 이용한 USB 저장장치 연동도 몇 가지 이슈들이 발생을 하였고 결론적으로 든 생각은 가격이 저렴하기는 하지만 역시 아두이노용으로 개발된 보드이다 보니 Harmony 레퍼런스가 적고 문제가 발생한 다른 개발자들의 이력.......

[STM32 FreeRTOS] 자료 Review#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_FREERTOS_LABST 에서 제공하는 자료들을 기반으로 FreeRTOS 의 기본 특성에 대해서 정리하여 보고 해당 자료의 Lab 코드들을 테스트해 보고자 합니다. API 를 살펴보면 Task 관리, 스케쥴링, 동기화, 타이머 기능등을 제공하는 것을 확인할 수 있다.FreeRTOS API 와 CMSIS(Cortex Microcontroller Software Standard)-RTOS API 를 모두 사용할 수 있으며 CMSIS-RTOS API 를 사용하여 개발하는 경우, 하위 RTOS 가 FreeRTOS 가 아닌 다른 CMSIS-RTOS API 를 지원하는 타 RTOS 이식하는 경우 이식성이 좋아질 수 있다. Fre.......

[STM32 FreeRTOS] 자료 Review#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/STM32F4_HAL_FREERTOS_LABST 에서 제공하는 자료들을 기반으로 FreeRTOS 의 기본 특성에 대해서 정리하여 보고 해당 자료의 Lab 코드들을 테스트해 보고자 합니다. Queue 는 task 간 동기화와 함께 데이터를 공유하는 용도로 사용가능osMessageCreate() 함수로 생성osMessagePut()함수로 큐에 데이터 전달osMessageGet() 함수로 큐에서 데이터 수신osEvent 구조체는 union 을 이용하여 uint32_t 값 형태의 데이터 v를 사용하거나 pointer 변수 p 를 사용할 수 있음. osMailCreate 를 사용하는 경우에는 mail_id 를 사용하고 osMessag.......

[PIC32] OC1 Dual Compare Match [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_OC_DUAL.X지난 글에 이어서 오늘은 dual compare mode 를 테스트 해보고자 합니다. dual compare mode 는 output 동작에 따서 single output pulse 모드와 continuous output pulse 모드로 나누어 집니다. single output pulse 모드에서는 output compare 모듈이 설정되면 1회만 pulse 가 출력됩니다. 1회 OCx 핀에 pulse 가 출력된 이후에는 타이머가 reset 후 다시 카운터가 match 되더라도 pulse 를 출력하지 않습니다. 앞선 글의 single compare 에서는 OCxR 레지스터만 사용되었지만.......

[PIC32] OC1 PWM Mode [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_OC_PWM.X오늘은 output compare 관련 마지막인 PWM 모드에 관련한 테스트를 진행해 보도록 하겠습니다. PWM 모드는 앞선 OC 모드 중에서 가장 직관적으로 PWM 파형을 생성할 수 있는 모드입니다. PR 레지스터는 PWM 의 주기를 설정하는데 사용되고 OCxR 레지스터는 duty 를 설정하는데 사용됩니다. OCxR 레지스터의 값은 타이머 overflow 시에 OCxRS 레지스터의 값으로 업데이트 됩니다. 아래 그림을 보면 PR3 가 5이고, OCxR / OCxRS 가 2라고 하면 타이머가 초기화되고 TMR 값이 0 이 되는.......

[PIC32] Class 1 ADC [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_ADC_BASIC.XReferenceshttp://ww1.microchip.com/downloads/en/DeviceDoc/Section22._12-bit_HS_SAR_ADC_FRM_DS60001344E.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/PIC32MZ-EF-%20Family-DS60001320F.pdf오늘은 PIC32MZ 의 ADC 테스트를 진행해 보고자 합니다. 처음에 Reference 메뉴얼을 열었을 때 페이지 수를 보고 빠른 시간 내에 모든 기능을 파악하기는 어렵다고 생각이 들었고 나중에 써 먹을 수 있을 정도롤 기억을 하기는 어렵다는 생각이 들었습니다. 그래서 기본적.......

[PIC32] Class 3 ADC Multi Scan + Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_ADC_MULTI_INPUTS.X지난 글에서는 ADC0, ADC1 을 이용해서 각각 AN0, AN1 입력에 대해서 테스트를 진행하였고 오늘은 ADC7 을 이용해서 class3 AN38, AN39 를 테스트해 보고자 합니다. 아래와 같이 ADC7 모듈은 AN5~AN42까지 class2, class3 ADC 용으로 사용됩니다. 대부분의 코드는 아래와 같이 앞서 테스트를 진행한 class1 ADC 와 유사합니다만 일부 코드들은 class3 동작과 인터럽트 동작을 위해서 변경되어야 합니다. 주요 변경점은 아래와 같습니다. 1) class3 ADC 를 이용하여 scan 방.......

[PIC32] Class 1 ADC Timer Trigger [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_ADC_TIMER_TRIGGER.X오늘은 타이머 Trigger 를 이용한 ADC 동작을 테스트해 보도록 하겠습니다. 아래 테이블을 보시면 Individual trigger source 는 class1 또는 class2 ADC 만 가능하며 class3 ADC 는 scan trigger 동작만 수행가능합니다. class1 의 trigger 는 sampling 을 끝내고 conversion 을 시작하도록 합니다. conversion 이 끝나면 다시 자동으로 sampling mode 로 동작합니다. class2의 trigger 는 sampling 을 시작하도록 합니다. class2 ADC 는 shared ADC 모듈을 사용하기.......

[PIC32] Class 1 ADC + DMA [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_ADC_DMA.XReference : https://tutorial.cytron.io/2017/09/01/i2s-pic32mxmz-direct-memory-access-dma/이번 글에서는 ADC 관련하여 마지막으로 DMA 동작을 확인하여 보고자 합니다. ADC 동작은 빠른속도로 처리해야 하는 경우가 있을 수 있으며 ADC 자체가 목적이 되기 보다는 ADC 로 얻은 값을 갖고 데이터를 처리하는 경우가 많기 때문에 ADC 를 DMA 로 처리하면 별도의 Polling 이나 Interrupt 처리가 필요없이 수행하고자 하는 동작 자체에 집중을 할 수 있기 때문에 프로그램의 유지보.......

[PIC32] SPI + 25LC010A EEPROM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_SPI_25LC010A.X지난 번 PIC18F45K20 을 이용해 테스트 해 보았던 25LC010A EEPROM 을 그대로 PIC32MZ SPI 테스트를 위해서 사용해 보았습니다. 25LC010A 핀 아웃 정보는 아래 링크에서 확인하실 수 있습니다.https://blog.naver.com/eziya76/221638975554PIC18F 와 PIC32MZ 의 SPI 코드는 거의 동일한 방식으로 동작시킬 수 있습니다. 물론 약간 레지스터의 명칭이 바뀌거나 추가적인 기능 등으로 PIC18F 에는 없는 비트 들이 있지만 기본 전송 기능은 PIC18F 를 만져본 사람이라면 익숙하게 다.......

[PIC32] SPI + SSD1306 OLED + u8g2 library [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_SPI_U8G2.X오늘은 PIC32MZ 에서 SPI 방식으로 u8g2 라이브러리를 이용하여 SSD1306 OLED 제어를 테스트해 보고자 합니다. 기존에 STM32 정리과정에서 u8g2 라이브러리 포팅과 관련한 핵심적인 부분은 정리를 하였기 때문에 별도로 u8g2 포팅 관련한 내용은 정리하지 않고 하기 링크를 참조 부탁 드리겠습니다. https://blog.naver.com/eziya76/221501476403https://github.com/olikraus/u8g2/wiki/Porting-to-new-MCU-platform핵심으로 바로 들어가서 u8g2 라이브러리를 포팅하기 위해서는.......

[PIC32 Harmony] GPIO Input + Output [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_GPIO_BASIC지난 번 글에서 SPI 테스트까지는 Harmony 를 사용하지 않고 직접 레지스터를 제어하는 방식을 사용하였다면 이번 글 이후에서는 Harmony 를 사용하고자 합니다. 목표하고 있는 테스트 범위는 기본 peripheral 제어에 SD카드를 이용한 file system 및 Wifi 를 이용한 TCP/IP 까지 포함해 보고자 합니다. 테스트에 사용하는 보드는 Digilent 의 Wi-Fire 보드이며 PIC32MZ2048EFG100 을 채용하고 있으며, SD 카드와 MRF24WG0MA Wifi 모듈을 포함하고 있습니다. https:.......

[PIC32 Harmony] UART Interrupt + Ring Buffer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_UART이번 글에서는 Harmony 를 이용해서 UART 를 테스트 해 보고자 합니다. 기존에 Harmony 를 사용하지 않고 개발하였던 글에 레지스터에 관련한 상세한 부분은 정리가 되어 있기 때문에 참고 부탁 드리겠습니다.https://blog.naver.com/eziya76/221715510674먼저 MPLAB 하모니 프로젝트를 생성한 후, Harmony Configurator 를 실행하여 줍니다. 클럭을 아래와 같이 설정하여 줍니다. WiFire 보드는 외부 External Clock 을 통해서 24MHz 를 공급받아 최대 200MHz 로 동작 가능.......

[PIC32 Harmony] External Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_EXTI/오늘은 Harmony 를 이용해서 External Interrupt 를 시험해 보도록 하겠습니다. 앞 글에서 다룬 내용들은 반복해서 다루지 않기 때문에 해당 내용은 이전 글을 참고 부탁 드리겠습니다. 예를 들어서 앞으로 UART 를 사용하는 경우에는 간단하게 UART 를 설정한다라고만 언급하고 세부적인 설정이나 관련 코드에 대해서는 기술하지 않기 때문에 앞선 글에서 정리한 UART 관련 글을 참고 부탁 드리겠습니다. 1) 먼저 Harmony 프로젝트를 생성하고, HMC(Harmony Configurato.......

[PIC32 Harmony] Timer System Service [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/Harmony/PIC32MZ_HMC_TIMER_SERVICEReferencehttps://microchipdeveloper.com/harmony:example-tmr이번 글에서는 Harmony 를 이용한 Timer System Service 에 대하여 정리해 보도록 하겠습니다. Microchip Developer 사이트의 하모니 예제를 참고하였습니다. Harmony Timer System Service 는 하나의 타이머 인스턴스를 사용하여 여러 개의 Interval 로 동작하도록 할 수 있는 특징이 있습니다. 예제에서는 100ms 로 동작하는 타이머 클라이언트와 500ms 로 동작하는 타이머 클라이언트를 생성하여서.......

[PIC32] Clock 설정 & 성능 관련 설정#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference : Programming 32-bit Microcontrollers in C written by Lucio Di Jasiohttps://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_PERFORMANCE_TEST.X우선 예제는 Reference 에 있는 FFT 예제 코드를 그대로 사용하였습니다. 실제 저도 FFT 연산은 Time-domain 성분을 Frequency-domain 성분으로 보고자 할 때 사용한다는 수준으로만 알고 있기 때문에 세부 코드의 흐름은 이해하지 않고 단순히 연산수행을 목적으로만 사용하였습니다. 테스트는 우선 3가지로 나누어서 진행하였습니다. 테스트#1: pic32_init_cache.S 파일을 수정하여.......

[PIC32] UART Polling 테스트 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_UART_BASIC.X이번 글에서는 UART Polling 관련한 기능을 테스트 해보도록 하겠습니다. 다양한 기능을 모두 이용한다면 하나하나의 레지스터 항목을 모두 알아야겠지만 우선은 기본적인 동작을 확인하는 차원에서 설정이 필요한 부분을 우선적으로 확인하여 보겠습니다. [ ON : UARTx Enable ]0: Disable1: Enable[ BRGH : High Baud Rate Enable ]0: Standard Speed Mode - 16x baud clock enabled1: High-Speed Mode - 4x baud clock enabled[ PDSEL : Parity & Data Selection ]0: .......

[PIC32] UART Interrupt + Ring Buffer 테스트 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_UART_QUEUE.XRing buffer library reference https://github.com/AndersKaloer/Ring-Buffer지난번 Polling 방식으로 동작하는 코드에 이어서 인터럽트 방식으로 동작하도록 코드를 수정하고 Ring Buffer 를 적용해 보았습니다. 기본적인 설정과 관련한 부분은 UART 를 Polling 동작으로 설정하는 것과 거의 동일하기 때문에 이번 글에서는 Interrupt 설정과 관련한 부분 위주로 정리하겠습니다. 우선 PIC32MZ 에서 인터럽트 처리를 위해서는 PIC18F 와 다른 몇가지 개념들을 추가적으로 이.......

[PIC32] External Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_EXTERNAL_INTERRUPT.X이번 글에서는 External Interrupt 테스트를 진행해 보고자 합니다. 우선 External Interrupt 는 INTCON 레지스터의 INTxEP 비트를 설정하여 Polarity 를 설정합니다. 0 은 falling edge 이며 1은 rising edge 입니다.이번 예제에서는 INT4 를 사용하고자 합니다. INT4 의 Vector name 은 _EXTERNAL_4_VECTOR 이며, IFS0 / IEC0 / IPC5 레지스터를 이용합니다.INT4 핀은 PPS 를 이용하여 아래와 같이 RPD3 ~ RPD7 까지 여러핀 중 하나를 사용할 수 있습니다. 저는 RPA15.......

[PIC32] Change Notification [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_CHANGE_NOTIFICATION_INTERRUPT.X이번 글에서는 Change Notification 관련 테스트를 진행하여 보고자 합니다. 관련 레지스터CNCONx: Change Notification 모듈 동작을 설정합니다.CNENx: Change Notification 에 사용할 Rising Edge 핀을 결정합니다. CNNEx: Change Notification 에 사용할 Falling Edge 핀을 결정합니다.CNSTATx: Mismatch 모드로 동작 시 마지막 PORTx 를 Read 한 상태와 현재 상태의 차이를 나타냅니다.CNFx: Rising/Falling Edge 발생을 나타냅니다.CNPUx: 내장 Pull-up.......

[PIC32] T1 Synchronous Clock Counter [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_T1_SYSTICK.X[배경지식]PIC32M 시리즈는 아래와 같이 "A", "B" 두가지 타입의 타이머 제공A 타입 타이머의 특징은 외부 Clock 을 사용하여 Sleep 모드 시에도 동작하며 Wakeup 동작을 수행할 수 있다는 점B 타입 타이머의 특징은 2개의 타이머를 묶어서 32 비트 타이머로 동작할 수 있다는 점과 ADC 트리거 동작 등을 수행하는 Trigger 기능을 지원하는 점Type A 타이머 (TIMER1)- Asynchronous timer/counter with a built-in oscillator - Operational during CPU Sleep.......

[PIC32] T32 32-bit Synchronous Clock Counter [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_T32_SYNC_CNT.X이번에는 지난번 글에 이어서 32-bit Synchronous Clock Counter 동작을 테스트 해 보고자 합니다. PIC32MZ 의 타이머 모드는 앞선 글에서 설명한 것과 같이 4가지 종류가 있으며 이 중에서 1번 항목에 해당합니다. 타이머 모드 분류1) 16/32-bit Synchronous Clock Counter PBCLK 를 Clock 소스로 사용시간 측정, Delay, 주기적인 타이머 인터럽트 발생 필요 시 사용2) 16/32-bit Synchronous External Clock Counter TxCK 핀으로 들어오는 Clock 을 소스로 사용외부 Clock 을.......

[PIC32] T2 Synchronous External Clock Counter [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_T2_EXT_CLK.X이번 글에서는 2번 모드에 해당하는 16-bit Synchronous External Clock Counter 를 테스트해 보도록 하겠습니다. External Clock Counter 모드는 외부 TxCK 핀으로 들어오는 Clock 을 카운팅하는데 유용합니다. 내부 System Clock 을 기준으로 TxCK 핀에 들어오는 Clock 을 카운트하여 주기를 계산할 수도 있으며 카운터 값이 일정한 숫자 이상이되면 동작을 수행하도록 할 수도 있습니다. 타이머 모드 분류1) 16/32-bit Synchronous Clock Counter PBCLK 를 Clock 소스로 사용시.......

[PIC32] T32 Gated Timer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_T32_GATED.X이번 글에서는 3번 모드에 해당하는 32-bit Gated Timer 를 테스트해 보도록 하겠습니다. Gated Timer 모드는 외부 TxCK 핀의 상태가 High 상태를 유지하는 동안 카운터가 증가하기 때문에 동작 상태가 얼마나 유지되는지 확인하는데 유용하게 사용할 수 있습니다. 타이머 모드 분류1) 16/32-bit Synchronous Clock Counter PBCLK 를 Clock 소스로 사용시간 측정, Delay, 주기적인 타이머 인터럽트 발생 필요 시 사용2) 16/32-bit Synchronous External Clock Counter TxCK 핀으.......

[PIC32] T1 Asynchronous External Counter (Sleep mode & Wakeup) [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_T1_ASYNC_EXT_CLK.X오늘은 타이머 모드 분류에서 마지막에 해당하는 16-bit Asynchronous External Counter 를 테스트 해보도록 하겠습니다. 타이머 모드 분류1) 16/32-bit Synchronous Clock Counter PBCLK 를 Clock 소스로 사용시간 측정, Delay, 주기적인 타이머 인터럽트 발생 필요 시 사용2) 16/32-bit Synchronous External Clock Counter TxCK 핀으로 들어오는 Clock 을 소스로 사용외부 Clock 을 소스로 사용하는 경우 또는 외부 Clock 을 카운팅해야 하는 경우 사용3) 16/32-bit .......

[PIC32] OC1 Single Compare Match [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다.https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_OC_SINGLE.X이번 글에서는 Output Compare Mode 중에서 Single Compare Match 모드에 대해서 정리해 보도록 하겠습니다. 우선 Output Compare 모듈을 살펴보면 타이머가 사용되며 타이머 값이 OCxR 과 OCxRS 레지스터 값과 비교되면서 OCM Mode Select 설정에 따라서 OCx 핀에 상태가 변화하는 것을 알 수가 있습니다.Reference 메뉴얼을 살펴보면 Output Compare 모드는 아래와 같이 3가지 모드로 동작하고 각각의 모드에서 output 형태의 차이에 따라서 동작이 나누어 집니다. 오늘은 첫번.......

[PIC18F] MCC + UART Interrupt [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_MCC_UART_INT.X이번 글에서는 앞선 MCC 를 이용한 Polling 방식의 UART 모듈 테스트에 이어서 Interrupt 방식의 UART 테스트를 진행하여 보고자 합니다. MCC 를 구동후 아래와 같이 앞선 Polling 방식 설정과 동일하게 설정 후,Enable EUSART Interrupt 와 Redirect STDIO to USART 를 체크하여 줍니다. Receive Buffer Size 의 경우 저는 32바이트로 증가시켰습니다. Registers 탭으로 이동하여 Interrupt Enables 항목 중에서 Receive Interrupt 만을 체크하여 줍니다.이로서 UART 설정은 완.......

[PIC18F] Watchdog [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_WATCHDOG.X원래 MCC 관련한 글을 더 써볼까 하다가 제 개인적인 생각으로는 MCC 를 이용한 장점을 느끼기 어렵다고 판단하여 Watchdog 을 끝으로 PIC18F 에 대한 정리는 마무리 할까 합니다. PIC18F 의 Watchdog 타이머 구조는 아래와 같습니다. WDTCON.SWDTEN 비트와 CONFIG2H.WDTEN 비트를 이용하여 Enable 제어를 할 수 있습니다. WDTEN 비트가 Disable 되어 있더라도 SWDTEN 비트로 Enable 시킬 수 있습니다. LFINTOSC 에서 클럭을 공급 받습니다. LFINTOSC 는 31kHz 로 동작하고 WDT 카.......

[PIC32] PIC32 개발환경 구축 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. 2019년도 연말과 2020년도에 개인적으로는 크게 2가지 학습 방향을 잡고 있습니다. 첫번째는 Machine Learning 에 대한 공부를 해보는 것과 두번째는 PIC32 개발환경을 익히고 가능하다면 Harmony 까지 능숙하지는 않더라도 Manual 을 보면서 따라해 보는 것입니다. ML 에 대한 부분은 어느정도 이해도가 높아지면 정리해 볼 수 있도록 하고 당분간은 PIC32 를 학습하면서 내용을 정리해 둘까 싶습니다. PIC32 관련 첫번째 글이기 때문에 개발환경과 개발 보드에 대해서 우선 정리해 볼까 합니다. 1. 빌드 환경 구축- MPLAB X IDEhttps://www.microchip.......

[ML] proxy 사용시 tensorflow, keras 설치 [내부링크]

회사의 보안정책이 점점 강화되어가면서 SW 개발자들은 항상 고역입니다.자료를 보려고 검색해서 들어가면 차단에 라이브러리들은 다운로드 받기도 어렵습니다. ML 을 공부하면서 추후 이동이나 PC 교체 시에 설치부터 안되는 경험을 다시 할 것 같아 기록을 남겨 놓습니다. 1. PIP 업데이트를 위한 Proxy 설정2. PIP 업데이트3. Anaconda 설정 파일 생성 (C:\Users\[계정]\.condarc)4. condarc 파일에 proxy 및 ssl verify 무시 추가 후 저장5. Anaconda 환경 구성 및 활성화6. tensorflow 설치 7. keras 설치 (tensorflow 버전과 keras 버전 간 호환성이 존재하니 비슷한 시기에 release 된 것으로 매칭)

[PIC32] GPIO Input + Output [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_GPIO_BASIC.XPIC32HMZ-144 보드에는 Reset 버튼, 입력버튼 한개, LED 한개가 달려있습니다. 버튼은 RB12, LED 는 RH2 핀을 사용합니다. 이번 글에서는 해당 주변장치를 이용해서 가장 기본이 되는 GPIO 입출력을 시험해 보고자 합니다.PIC32 Configuration 비트는 설정이 다양하고 Clock 과 같이 기본이 되는 동작에 영향을 주는 부분이 많기 떄문에 꼼꼼하게 확인해 볼 필요가 있어 보입니다. DEVCFG3 는 이더넷, Permission, Peripheral, USB 관련 설정 비트들이 존재합니다. GPIO 제어관련.......

[PIC32] GPIO 7-Segment [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC32MZ_EXAMPLES/tree/master/PIC32MZ_GPIO_SEGMENT.X지난 글에 이어서 GPIO 를 이용한 Segment 제어를 정리해 보겠습니다. 사용한 보드는 지난 번과 동일하게 PIC32-HMZ144 보드를 사용하였습니다.세그먼트 모듈은 Open 아래와 같은 형태로 4개의 세그먼트를 제어할 수 있는 모듈입니다.세그먼트 제어를 위해서는 세그먼트 디스플레이용 8핀과 세그먼트 셀렉트용 4핀을 필요로 합니다.Olimex 보드에서 한개의 Port 에서 8개의 핀을 모두 사용할 수 있는 포트는 RJ 포트의 8~15번 포트가 가용하고 RK 포트도 이어서 4개의 포트가 연.......

[PIC32] Clock 설정 & 성능 관련 설정#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference : Programming 32-bit Microcontrollers in C written by Lucio Di Jasio이번글에서는 Clock 관련한 기본적인 설정 및 레지스터들에 대해서 정리하고 성능 개선을 위한 설정들을 알아보겠습니다. 우선 아래 그림을 보면 사용될 수 있는 Clock Source 들은 SPLL, POSC, FRCDIV, BFRC, LPRC, SOSC 가 있습니다. SPLL 은 System PLL 회로의 Divider 와 Multiplier 를 이용해서 원하는 클럭으로 증폭할 수 있습니다. PIC32MZ 의 최대 클럭은 200MHz 입니다. SPLL 의 소스로는 FRC 와 POSC 가 될 수 있습니다. 정밀한 동작이 필요한 경우에는 POSC 오.......

[PIC18F] MCC + UART Polling [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_MCC_UART_POLLING.X이번 글에서는 MCC 를 이용해서 UART 를 Polling 방식으로 동작하는 테스트를 진행하여 보고자 합니다. 우선 MCC 를 구동한 후에 Device Resources 패널에서 EUSART 항목을 더블 Click 하면 Project Resources 항목에 EUSART 가 아래와 같이 추가 됩니다. 그리고, EUSART 패널을 보면 Easy setup 탭에서 중요한 설정은 모두 설정할 수 있고 세부 항목들은 Registers 탭에서 설정 가능합니다. 저는 UART 를 Polling 방식으로 구동하는 테스트를 진행하려고 하기 때문에 아.......

[PIC18F] Internal EEPROM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_EEPROM_BASIC.X이번글에서는 PIC18F 내장 EEPROM 의 입출력에 대해서 정리해 보도록 하겠습니다. 데이터 시트를 보시면 아래와 같이 모델별로 약간씩 EEPROM 의 크기가 상이합니다. 제가 사용하는 PIC18F45K20 은 256바이트의 공간을 제공하고 있습니다.만일 1024바이트의 EEPROM 을 사용한다면 주소처리가 EEADR 레지스터 하나로 처리할 수가 없고 EEADRH 레지스터를 함께 사용하여야 합니다.핵심 레지스터인 EECON1 레지스터는 아래와 같습니다. EEPGD: Flash 또는 EEPROM 메모리 Access 선.......

[PIC18F] MCC + GPIO [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_MCC_GPIO.X이번 글부터는 몇차례에 걸쳐서 MCC(MPLAB Code Configurator) 를 이용하여 개발하는 방법을 알아보고자 합니다. MPLAB X IDE 를 설치한 후에 [Tools]-[Plugins] 메뉴를 열어보시면 Available Plugins 항목에서 MPLAB Code Configurator 항목을 확인하실 수 있습니다. 해당 항목을 설치하고 MPLAB 를 재시작 하면 아래와 같이 Installed 항목에 MCC 가 설치된 것을 확인할 수 있습니다. MCC 를 실행하기 위해서는 메뉴의 Tools - Embedded 메뉴를 이용하거나 아래처럼 MCC 아이콘.......

[PIC18F] Comparator [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_COMP_BASIC.X이번 글에서는 PIC18F Comparator Module 에 대해서 정리해 보겠습니다. Comparator Module 은 아래 그림처럼 CxVin+ 핀과 CxVin- 핀 전압을 비교하여 특정 조건이 되면 CxOUT 핀의 상태가 변경 되도록 할 수 있습니다.CxPOL 설정값에 따라서 CxOUT 핀의 Polarity 를 변경할 수도 있습니다. 아래 그림은 Comparator1 의 개략적인 구조도입니다. C1Vin- 입력은 MUX 를 통해서 C12IN0- / C12IN1- / C12IN2- / C12IN3- 중 하나를 선택할 수 있습니다. C1Vin+ 입력은 MUX 를 통해서 C1I.......

[PIC18F] I2C Master + BME280 library [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_I2C_BME280.X지난번 PCF8563 RTC 모듈에 이어서 한가지 더 I2C 동작 테스트를 진행해보고자 합니다. 사용할 모듈은 BME280 온도/습도/기압 센서입니다. BME280 에 대한 대략적인 설명은 기존 STM32 I2C 테스트 시에 이미 기술을 하였기 때문에 링크로 대신하겠습니다. BME280 센서의 드라이버 코드는 이미 아래와 같이 제조사에서 개발을 해 놓았기 때문에 사용하는 MCU 에 맞게 I2C 통신 부분만 변경하면 쉽게 개발이 가능합니다. 플랫폼에 맞게 추가 작성이 필요한 파일은 user_i2c_read, u.......

[PIC18F] SPI Master + BD663474 LCD library [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_SPI_LCD_BD663474DatasheetReferences이번 글에서는 BD663474 LCD 라이브러리에 대해서 정리해 보도록 하겠습니다. 몇 달전에 ILI9341 라이브러리를 STM32 에서 정리한 적이 있는데 ILI9341 과 달리 BD663474 는 실제 많이 사용을 하지 않는지 참고할 만한 레퍼런스들이 많지 않은 상황이었습니다. 가장 기본이 되는 Clear 기능, Pixel / Line / Rectangle Drawing 코드만 새롭게 작성하고 나머지 코드들은 ILI9341 라이브러리를 그대로 이용하는 방식으로 개발하였습니다. 프로젝트 구성을 보면 아래와 같습니다. 위 코드.......

[PIC18F] I2C Master + PCF8563 library [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_I2C_PCF8563.X지난번 SPI 마스터 모드 기능에 이어서 이번에는 I2C 마스터 모드 기능을 정리해 보고 Open18F4520 보드에서 제공하는 PCF8563 RTC 모듈을 연동해 보도록 하겠습니다. [ 배경지식 ]PIC18F 의 MSSP 모듈은 SPI 와 I2C 모드를 지원SSPADDR 레지스터는 Slave 동작 시에는 주소로 Master 동작 시에는 Clock 설정용으로 사용SSPCON1.WCOL 비트는 마스터 송신 모드에서 충돌발생 감지 flag (해제시 manual 하게 clear 필요)SSPCON1.SSPOV 비트는 마스터 수신 모드에서 Overflow 발생 f.......

[PIC18F] SPI + AT45DB041E flash memory library [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_SPI_AT45DB041X.X이번 글에서는 AT45DB041E SPI Serial Flash Memory 모듈 드라이버를 정리해 보도록 하겠습니다. 제가 사용하는 Open18F4520 보드 패키지에는 SPI 통신 시험을 위해서 AT45DB041E 모듈이 함께 포함되어 있습니다. AT45DB041E 모듈의 데이터시트와 모듈 정보는 아래 링크에서 확인할 수 있습니다. [Datasheet]https://www.adestotech.com/wp-content/uploads/doc8783.pdf[Module]https://www.waveshare.com/at45dbxx-dataflash-board.htm주요사양은 아래와 같습니다. - 1.65~3.6V 전압을 사용하여 SPI .......

[PIC18F] TIM2 + CCP2 Compare [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_CCP2_COMPARE.X[배경지식]Compare 모드는 TMR1 또는 TMR3 의 카운터 값이 CCPR2 레지스터와 일치할 때 인터럽트가 발생하며,이때 CCP2 핀의 상태가 변경됨 CCP2 핀의 상태는 CCP2.CCP2<모드 설정에 따라서 low to high, high to low, toggle, unchanged 설정가능CCP2 핀은 TRIS 핀을 이용해서 Output 으로 설정해 놓아야 함Special Event Trigger 기능을 사용하면 Compare match 시에 타이머를 reset 하거나 ADC 동작을 수행하도록 할 수 있음.아래 블록 다이어그램을 보면 앞서 설명한 대.......

[PIC18F] TIM2 + ECCP PWM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_CCP1_PWM.X[배경지식]CCP1 은 ECCP(Enhanced CCP) 모듈이라고 불리운다.기본적으로 CCP2 의 Standard CCP 기능에 발전된 PWM 기능을 포함하고 있다. Standard CCP 의 PWM 기능을 기본적으로 지원하고 그 외 4개 Output 채널 지원, Programmable Polarity, Dead band 제어, Automatic shutdown & restart 등의 기능을 추가적으로 지원한다.CCP1CON.P1M 비트 설정을 통해서 4가지의 Enhanced PWM 모드 설정이 가능한다. - Single PWM- Half-Bridge PWM- Full-Bridge PWM, Forward mode- Ful.......

[PIC18F] UART Polling [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_UART_POLLING.X[ 배경지식 ]PIC18F의 EUSART 모듈은 아래 3개의 레지스터 사용- TXSTA (Transmit Status & Control)- RCSTA (Receive Status & Control)- BAUDCON (Baudrate Control)RX, TX 핀의 TRIS 비트는 '1'로 설정되어야 함TX 관련 레지스터 - GIE, PEIE, TXIF, TXIE, TXIP: 인터럽트 관련 비트- SPEN (Serial Port Enable) : UART 기능 Enable- TXREG: 송신 데이터 버퍼- TX9: 9비트 전송 Enable- TXEN: 전송기능 Enable- SYNC: 동기/비동기 모드 설정- SENDB (Send.......

[PIC18F] UART Interrupt + Ring Buffer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_UART_INT.XReference- Ring buffer library https://github.com/AndersKaloer/Ring-Buffer[예제]Interrupt 방식으로 UART 데이터를 수신하여 Buffer에 저장하고 CRLF 문자를 수신하면 Buffer 담겨있던 데이터를 빼내어 Echo 한다. 지난번 글은 Polling 방식으로 UART 데이터를 송수신 하였다면 이번 예제는 Interrupt 방식으로 데이터를 처리하는 예제입니다. Polling 방식은 구현이 Simple 한 장점이 있지만 Polling 하는 동안 다른 task 를 처리할 수 없기 때문에 대부분의 통신 주기가 일.......

[PIC18F] PWM + Buzzer [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_TIM1_BUZZER.X[ 배경 지식 ]오늘은 PWM 을 이용해서 Open18f4520 보드에 있는 Buzzer 에서 간단한 음악을 출력해 보겠습니다. 보통 원하는 음을 출력하기 위해서는 아래 테이블을 참고합니다. 테이블을 잘 보시면 옥타브가 올라갈 때 주파수도 2배씩 증가하는 것을 확인할 수 있습니다. 예를 들어서, 5옥타브의 도를 부저로 출력하기 위해서는 약 523Hz 의 PWM 을 생성하여 주면 됩니다. 보통 주파수는 음을 결정하는데 사용하고 Duty 는 출력의 크기 즉, 볼륨을 설정할 수 있습니다. 가장 중.......

[PIC18F] SPI + 25LC010A EEPROM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_SPI_25LC010A.X[배경지식]SPI 에 관련한 기본지식은 개발서적이나 인터넷 등 다양한 경로로 자료를 확보가 가능하고, 이미 알고 계시는 분들이 대부분일 것이라고 생각하여서 이 글에서는 SPI 자체에 대한 내용은 생략하고 제가 PIC 을 정리하면서 좋은 자료를 확인한 사이트를 참고로 링크하여 봅니다. https://deepbluembedded.com/spi-tutorial-with-pic-microcontrollers/MSSP (Master Synchronous Serial Port) 모듈은 SPI 와 I2C 통신을 지원SPI 모드 관련 핀은 SDO, SDI, SCK, SSSPI 모.......

[PIC18F] TIMER2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_TIM2_BASIC.X[ 배경 지식 ]8비트 타이머1/4/16 Prescaler 사용가능 (T2CON.T2CKPS)1~16 Postscaler 사용가능 (T2CON.T2OUTPS)TMR2와 PR2 가 일치할 때, TMR2 는 0 으로 ResetTMR2 와 PR2 레지스터 값이 일치하는 경우 Postscaler 에 카운터가 증가하고 Scaler 값만큼 카운트 증가 시 인터럽트 발생 (PIR1.TMR2IF)T2CON 레지스터를 이용하여 제어 타이머 클럭은 Fosc/4 공급TIMER2 블럭을 보면 아래와 깉이 TMR2 레지스터 앞 뒤로 Prescaler 와 Postscaler 가 사용됨Postscaler 카운터가 설정.......

[PIC18F] TIM2 + CCP2 PWM [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_CCP2_PWM.X[배경지식]CCP 모듈은 Capture / Compare / PWM 기능을 제공PWM 기능을 강화한 모듈은 Enhanced CCP 라고 함CCP1 은 Enhanced CCP 기능을 제공하고 CCP2 는 Standard CCP 기능을 제공Capture / Compare / PWM 기능은 동시에 사용 불가하며 한개의 기능만 선택 가능 (CCP2CON.CCP2M)TIMER1/3 는 Capture, Compare 기능에 사용 가능하고 TIMER2 는 PWM 기능에 사용 가능두 개의 CCP 모듈은 동시에 한개의 TIMER 리소스를 같이 사용할 수도 있음CCP2 핀은 기본적으로 RC1 핀에 할당되며.......

[PIC18F] TIM2 + CCP2 Capture [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_CCP2_CAPTURE.X[배경지식]CCP2 핀에 Capture 이벤트 발생시 TMR1, TMR3 값이 CCPR2H:CCPR2L 레지스터에 저장됨falling / rising / 4th rising / 16 rising edge 선택 가능 (Prescaler 설정)CCP2CON.CCP2M 비트 설정으로 Capture 모드 선택 가능TIMER1/3 는 Capture, Compare 기능에 사용 가능하고 TIMER2 는 PWM 기능에 사용 가능두 개의 CCP 모듈은 동시에 한개의 TIMER 리소스를 같이 사용할 수도 있음Capture 모드 사용시 CCP2 핀은 TRIS 레지스터 설정에서 Input 핀으로 설정Counter 모드로.......

[PIC18F] TIMER1 / TIMER3 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_TIM1_BASIC.X[ 배경 지식 ]16비트 타이머 또는 카운터 모드 동작 가능Internal or External 클럭 소스로 동작Overflow 인터럽트 동작타이머1의 오실레이터는 MCU 의 Low Power Clock 소스로도 사용 가능타이머1에 32.768kHz Clock 을 사용하여 RTC 기능으로도 사용 가능타이머 모드는 TMR1CS 비트로 설정 TMR1CS = 0 로 설정 시, Fosc / 4 의 Clock 소스 공급TMR1CS = 1 로 설정 시, External clock 또는 Timer1 오실레이터에서 Clock 소스 공급Prescaler 는 T1CKPS 비트를 이용해.......

[PIC18F] ADC [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_ADC_BASIC.X오늘은 ADC 동작에 대해서 정리해 보도록 하겠습니다. Open18F4520 보드는 ADC 관련 기능을 시험해 볼 수 있도록 하래와 같이 20핀 헤더 중에서 RA0 핀에 AD Keypad 라는 확장보드를 연결할 수 있도록 되어 있습니다. 확장보드는 특별한 것이 아니고 버튼 별로 저항값이 달라서 해당 저항 값의 변화에 따라서 RA0 핀에 걸리는 전압이 변경되는 동작을 수행합니다. RA0 핀에 걸리는 전압이 변경되면 결국 계측되는 ADC 값도 그에 맞게 변경될 것입니다. [ 배경 지식 ]우선 기본.......

[PIC18F] External Interrupt / Interrupt On Change [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_INT_EXTERNAL.XPIC18F 의 HW 인터럽트는, 1) 타이머, USART, ADC, CCP, SPI, I2C, EEPROM 과 같은 내부 Peripheral 인터럽트2) External Interrupt, Interrupt on Change 인터럽트와 같은 외부 인터럽트가 있습니다. 내부 Peripheral 들의 인터럽트는 해당 기능을 설명할 때 설명을 드리고 이번 글에서는 External Interrupt 와 Interrupt on Change 에 대해서 정리해 보도록 하겠습니다.[ 배경 지식 ]External Interrupt 와 Interrupt On Change 는 RB포트의 핀들을 이용합니다.External I.......

[PIC18F] TIMER0 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/PIC18F_TIM0_BASIC.X[ 배경 지식 ]Timer0 는 8비트 또는 16비트 모드로 동작가능8비트 Prescaler 사용가능Internal or External clock 소스 선택가능External clock source 의 edge 선택가능 (rising or falling)Overflow 인터럽트Timer0 는 타이머 또는 카운터로 사용 가능 (T0CS 비트)타이머 모드에서는 내부 Clock 사용 (T0CS = 0)카운터 모드는 T0CKI 핀의 Clock 사용 (T0CS=1) 하며 선택한 edge(falling or rising) 마다 카운터 증가16비트 모드로 동작 시에는 TMR0H 는 버퍼와 같이 사.......

[PIC18F] GPIO + LED [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/LED.XOpen18F4520 보드의 Schematic 을 보면 아래 그림과 같이 8개의 LED 가 RB 포트에 연결되어 있습니다. [ 배경 지식 ]GPIO 제어를 위해서 PORTB 포트의 데이터시트를 확인해 보겠습니다. TRISB 레지스터는 Input / Output 설정을 위해서 사용합니다. PORTB 레지스터는 핀의 레벨을 읽기 위해서 사용합니다. LATB 레지스터는 Output 출력을 제어하기 위해서 사용합니다. PORTB 핀들은 GPIO / KBI (Interrupt-on-change) / Analog Input 등으로 사용될 수 있습니다. POR 시에 Default 값은 Analog .......

[PIC18F] GPIO + Switch + LED [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/ReadSwitch.X앞선 글에서 LED 를 이용하여 GPIO Output 을 시험하였다면 이번 글에서는 조이스틱과 버튼을 이용하여 GPIO Input 기능을 확인하여 보겠습니다. Open18F4520 보드의 조이스틱과 버튼 회로는 아래와 같습니다. RD0 ~ RD7 핀에 연결되어 있고 모두 Pull-up 되어 있습니다. 예제는 PORTD 핀에 입력이 있는 경우, 앞서 시험해 보았던 PORTB 포트에 연결되어 있는 LED 를 점멸하는 방식으로 만들어 보고자 합니다. (※ RD2 와 RB2 제외)TRISD 레지스터는 POR 시 Input 으로 설정되지만 명확.......

[PIC18F] GPIO + 7-Segment [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/PIC18F_Examples/tree/master/7_Segment.XOpen18F4520 보드 패키지는 여러가지 테스트 할 수 있는 제품을 제공하는데 그중 하나가 7-Segment(8-Segment?) 입니다. 총 4개의 숫자 + ':' + '.' 을 표시할 수 있습니다. Schematic 에는 제대로 표시가 되어 있지 않지만 Segment 는 Common Anode 타입 제품이며, PORTA 핀들은 표시할 숫자 위치 선택을 위해서 사용되며, PORTB 핀들은 Segment 의 숫자값을 표시하기 위해서 사용됩니다. 우선 비스한 4개의 숫자를 표시할 수 있는 Common Anode 타입의 Schematic.......

[PIC18F] HD44780 CLCD [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. Reference : https://embed-avr.tistory.com/52?category=671114지난번 Segment 에 이어서 이번에는 HD44780 CLCD 를 연결해 보고자 합니다. 앞으로 개발하는 과정에서 어떤 상태를 확인하려면 UART 나 디스플레이 장치가 필요한데 가장 손쉽게(???) 연동할 수 있는 디스플레이 장치 중 하나가 CLCD 장치가 아닐까 싶습니다. 위에서 손쉽게라고 적어 놓기는 하였으나 사실 데이터시트를 모두 읽고 처음부터 모두 구현하려면 쉽지 않겠죠?하지만 CLCD는 매우 많이 사용되는 디바이스이기 때문에 그 많큼 방대하고 잘 정리되어 있는 자료들이 많이 있습.......

[PIC18F] Open18F4520 보드 [내부링크]

ATMEGA128A/328P 관련 내용을 한번 공부하고 나서 1년 가까지 지나고 나니 머리 속에 남은 것이 거의 없습니다. 그래서 올해에는 PIC18F 를 시간 나는 때마다 공부해보고 잊어보려고 합니다. ^^"개발용 보드는 Waveshare 의 Open18F4520 보드입니다.보드를 구매하였으니 한번 어떤 것들이 있는지 살펴보아야겠습니다.GPIO, TIMER, ADC, LCD, PWM, IR, SPI, I2C, UART, PS2 등의 실험을 해 볼 수 있을 것 같습니다. 개발에 사용할 환경은 다음과 같습니다. - MPLAB X IDE 5.2버전- XC8 Compiler- ICD4 - ICD-ICSP 핀 컨버터데이터 시트에 있는 PIC18F4520 의 사양 및 Pinout 은 다음과 같습니다. - 8bit RISC- 동작주파수는 최대 40MHz.......

[PIC18F] 개발 환경 구축 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. 오늘은 우선 개발환경 구축에 필요한 항목들을 정리해 보도록 하겠습니다. 개발에 필요한 항목들은 아래와 같습니다. 1) MPLAB X IDE 2) XC8 Compiler3) MPLAB Code Configurator (GUI 기반 설정 도구)4) 디버거 (PICkit or ICD)5) 악세사리1) MPLAB X IDE 5.20버전https://www.microchip.com/mplab/mplab-x-ide운영체제에 맞는 버전을 다운로드 받아서 설치합니다.2) XC8 Compiler 2.05 버전https://www.microchip.com/mplab/compilers운영체제에 맞는 버전을 다운로드 받아 설치합니다.3) MPLAB Code ConfiguratorMPLAB X IDE 를 실행 후, Tools - Plug.......

[PIC18F] Clock 설정 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. 오늘은 지난 번 개발 환경 구축에 이어서 Clock 설정과 관련한 내용을 정리해 보고자 합니다. 모든 MCU 는 동작을 위해서 Clock Source 가 필요하고 Clock 에 문제가 있다면 정상적인 동작을 보장할 수 없기 때문에 우선 Clock 관련한 부분부터 학습해 보고자 합니다.※ 개발 보드를 구매하였을 때, PIC18F4520 MCU 를 사용하는 보드여서 해당 MCU 를 사용하려다가 Code Configurator 에서 지원을 하지 않아 Pin-to-Pin 이 되는 PIC18F45K20 으로 MCU 를 변경하였습니다. 거의 대부분의 기능은 동일하고 다만 Vdd 가 5V 가 아닌 3.3V 를 사용하고 Max 클럭.......

[STM32 HAL] USB Mass Storage [내부링크]

https://github.com/eziya/STM32F4_HAL_EXAMPLES/tree/master/STM32F4_HAL_USB_STORAGE[ GPT 파티션 동작 오류 ]2017년도에 USB Mass Storage 관련하여 작성했던 글이 하나 있습니다. 근래에 동작에 문제가 있다는 댓글이 있어서 기억을 더듬어 볼겸해서 프로젝트를 다시 만들어 보았습니다.우선 댓글에 있던 내용은 8G USB 드라이브는 잘 동작하는데 16G 드라이브는 동작하지 않는 이슈였습니다. 그래서 저도 제가 가진 드라이브를 꺼내서 테스트를 해보니 4개 중 한 개가 동작하지 않았습니다. 다시 포맷을 해도 마찮가지로 동작을 하지 않아서 Debugging 을 해보니 아래와 같은 차이점이 있었습니다. 우선 첫번째 그림은 동작을 잘하는.......

[STM32 HAL] VS1053 MP3 Module#1 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. References :https://www.sparkfun.com/datasheets/Components/SMD/vs1053.pdfhttp://www.toughdev.com/content/2013/10/interfacing-vs1053-audio-encoderdecoder-module-with-pic-using-spi/https://github.com/adafruit/Adafruit_VS1053_Library https://github.com/MikroElektronika/MP3_click/오늘은 몇 주전에 Arduino 를 이용해서 기본적인 기능을 테스트 해보았던 VS1053 모듈을 STM32 에서 연동해 보고자 합니다. VS1053 모듈은 MP3, WMA, OGG 등을 재생할 수 있는 미디어 모듈입니다. Adafruit 의 Music Maker 또는 LC Soft 모듈 등을 구매하셔서.......

[STM32 HAL] VS1053 MP3 Module#2 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_HAL_VS1053References :https://www.sparkfun.com/datasheets/Components/SMD/vs1053.pdfhttp://www.toughdev.com/content/2013/10/interfacing-vs1053-audio-encoderdecoder-module-with-pic-using-spi/https://github.com/adafruit/Adafruit_VS1053_Libraryhttps://github.com/MikroElektronika/MP3_click/[ 이전글 ]오늘은 지난번에 정리한 시퀀스들이 코드로 어떻게 구성되어 있는지 정리해보도록 하겠습니다. 우선 CubeMx 를 실행하고 하기와 같이 PIN 을 설정하여 줍니다. Clock, UART2, SPI2, SPI3, LED 그리고 XD.......

[STM32 HAL] VS1053 MP3 Module#3 FLAC 파일 재생 [내부링크]

※ 내용에 오류가 있을 수 있습니다. 오류에 대해서는 Feedback 부탁 드리겠습니다. https://github.com/eziya/STM32_HAL_VS1053References :https://www.sparkfun.com/datasheets/Components/SMD/vs1053.pdfhttp://www.toughdev.com/content/2013/10/interfacing-vs1053-audio-encoderdecoder-module-with-pic-using-spi/https://github.com/adafruit/Adafruit_VS1053_Libraryhttps://github.com/MikroElektronika/MP3_click/[ 이전글 ]마지막으로 FLAC 재생에 대해서 정리해 보겠습니다. FLAC 재생이라고 특별히 많은 변화가 있는 것은 아니고 VS1053 의 Plugin 기능을 이용해서 FLAC 재생을 위한 FW 를 업로드 하고 파일을 재생시켜 주면.......

[STM32 HAL] TrueStudio 에서 SWV(Serial Wire Viewer) 를 이용한 printf debugging [내부링크]

Reference : Atollic tools1) Debugger 설정에서 SWD 를 선택하여 줍니다.2) Trace 상목에서 SWV 를 선택하고 시스템 Clock 값을 설정하여 줍니다.3) 아래와 같이 syscall.c 파일을 소스 폴더에 추가하여 줍니다.4) 아래와 같이 추가된 syscalls.c 파일을 수정하여 줍니다.printf 함수 호출 시 ITM_SendChar 를 통해 SWV 로 메시지가 출력되도록 합니다.5) Debugging 을 실행하면 SWV 콜솔이 표시됩니다. 이 때 설정 버튼을 클릭합니다. 6) ITM 활성 포트에서 TIM0 채널을 활성화하여 줍니다.7) 이제 설정이 완료되었고, Start Trace 버튼을 클릭하여 줍니다. 8) Debugging 을 실행합니다. 아래와 같이 printf 코드가 있는 경우 SWV 콜솔에 메시.......

[STM32 HAL] Power Save Mode (Sleep, Stop, Standby) [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경지식 ]STM32F 시리즈는 Sleep, Stop, Standby 3가지의 절전모드를 지원한다.절전을 많이 하는 모드일수록 Wake-up에 오랜 시간이 걸린다.주변장치가 많을수록, Clock 이 빠를수록 에너지 소비는 높기 때문에 불필요한 주변장치를 Disable 하고 필요한 최적의 Clock으로 동작 시키면 에너지 효율성은 좋아진다.절전모드 Entry 동작은 ARM에서 제공하는 WFI, WFE Instruction으로 동작한다.WFI (Wait For Interrupt)는 조건 없는 Sleep Instruction으로 수행하며, 수행 즉시 Core 실행을 중지 시킨다. 다만 Pending 인터럽트가 있다면 Sleep 모드.......

[STM32 HAL] Flash Management + UART IAP 예제 [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경지식 ]STM32 시리즈는 모델명에 따라서 Flash 사이즈 확인가능 (e.g. E: 512kB, G: 1024kB)1뱅크 또는 2뱅크 모델 존재하며, 2뱅크 모델은 동시에 사용될 수 있어 고성능 모델에 채용됨.뱅크는 섹터로 나누어짐. 모델에 따라서 섹터의 크기가 동일하거나 다를 수 있음.섹터는 페이지로 나누어짐. 모델에 따라서 페이지를 지원하는 모델이 있고 지원하지 않는 모델이 있음.Information Block 에는 Option Bytes 를 기록하거나 OTP 라고 불리우는 비휘발성 영역이 있음.기본적으로 STM32는 시스템 재시작 시에 Flash 영역의 Write Protection.......

[ESP32] EPS32 + VS1053 Adafruit Library [내부링크]

https://github.com/eziya/ESP32_ADAFRUIT_VS1053한동안 STM32 에 관련한 글만 정리하다 보니 조금 지루한 느낌이 있어서 예전에 사 놓고 서랍속에 고이 모셔 두었던 VS1053 모듈을 테스트 해 보았습니다. 사실 글을 쓰고 있긴 하지만 VS1053 모듈에 대해서는 세부적으로 공부를 하지는 못하였고 추후 STM32 용 라이브러리 개발에 앞서 Adafruit Library 를 이용해서 Arduino 기반의 Prototype 을 만들어 보았습니다. 처음에 저는 Adafruit 라이브러리를 사용하면 1시간 이내에 테스트가 완료될 것이라고 생각하였는데 Adafruit Library 가 ESP32 에서 완벽하게 동작하지 못하는 관계로 몇 시간을 문제 해결을 위해서 고생해야 했습니다. .......

[STM32 HAL] ILI9341 TFT LCD Library [내부링크]

오늘은 ILI9341 TFT LCD 라이브러리 관련한 내용을 정리해 보고자 합니다. 우선 STM32 용 HAL 드라이버를 사용한 ILI9341 라이브러리는 Github 를 찾아보시면 몇 가지가 이미 존재하고 있습니다. 저는 그 중에서 아래 라이브러리를 기반으로 작업을 해 보았습니다. 제가 작성한 대부분의 코드는 아래 martnak 이 제작한 라이브러리와 거의 유사합니다. https://github.com/martnak/STM32-ILI9341제가 위 라이브러리에서 가장 큰 변경점은 폰트 관련 기능입니다. 수정 전 라이브러리는 폰트 1종에 사이즈도 5x5 폰트로 고정에 되어 있습니다. 큰 폰트가 필요할 경우에는 5x5 폰트를 그대로 Scale up 사용 하다보니 큰 글자를 출력 시 글꼴이 깔.......

[STM32 HAL] IWDG + WWDG Watchdog [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경 지식 ]STM32 는 2가지 종류의 watchdog 타이머를 제공- IWDG(Independent Watchdog), WWDG(Window Watchdog)IWDG 는 LSI 로부터 clock 을 제공받는 12-bit down counter 타이머로서 HSI/HSE clock 에 문제가 발생하여도 독립적으로 동작할 수 있다. STM32F0/F3/F7/L0/L4 시리즈는 windowed 모드로 동작할 수 있다. (STM32F4 는 미지원)IWDG 는 아래 공식에 따라서 Reset 타이밍이 결정된다. 예를 들어서 LSI 는 32kHz, Prescaler 는 2, 그리고 Period 값이 0xFFF 라고 할 때(2^2) * 4096 / 32000 = 0.512 sec 로 계산될 수 있다. 일단.......

[STM32 HAL] Meta 정보 포함하기 [내부링크]

근래에 고객으로 부터 Meta 정보를 포함하여 Firmware 를 빌드하여 달라는 요청을 받았습니다. Meta 정보는 다들 한번 쯤은 들어보셨겠지만 어떤 파일의 용도를 기술하는 정보입니다. 파일에 Meta 정보가 앞부분에 들어있으면 해당 Meta 정보를 먼저 읽어서 다음 데이터 부분을 읽는데 사용하는 방식 등으로 사용됩니다. Firmware 에서 메타정보에는 버전이나 Firmware 가 사용될 수 있는 하드웨어 정보 등을 포함할 수 있을 것 같습니다. 오늘은 Meta 정보를 포함하는 방법에 대해서 정리해보고자 합니다. 저는 평소 회사에서는 IAR 를 사용하고 있지만 요즘 정리하고 있는 HAL 예제에서는 Freeware 인 Truestudio 를 사용하고 있기 때문.......

[STM32 HAL] RTC [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경 지식 ]STM32 시리즈는 내장 RTC 제공시간/날짜, Anti tampering, 알람, Low 파워 모드에서 Wakeup 등의 기능 제공BCD 방식으로 시간정보 관리 년 / 월 / 일 / 요일 / 시(12H or 24H) / 분 / 초 / 0.1초 정보 제공자동 윤년 적용 Daylight Saving 기능 적용은 Programmable 함RTC 에 공급할 수 있는 Clock 소스는 HSE / LSE / LSI 3가지 종류가 될 수 있음온도가 변화하는 환경에서 높은 정확도 요구시, LSE 사용 권장알람 기능은 Alarm A / Alarm B 두 가지를 제공. Alarm 은 Masking 기능을 이용하여 원하는 Alarm 조건으로 다양하게 설정 가.......

[STM32 HAL] CRC (Cyclic Redundancy Check) + Flash Integrity Check + SRecord [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경 지식 ]우선 CRC 에 대한 이해를 위해서는 wiki 자료를 한번 읽어보시는 것을 추천 드립니다. CRC 는 Parity bit 나 Checksum 처럼 데이터의 integrity 를 체크하는 용도로 사용될 수 있습니다. Parity의 취약점은 2비트가 동시에 변경되면 감지를 못하고, Checksum 은 두 값이 +1 / -1 로 바뀐다면 감지를 하지 못하는 단점이 있습니다. 예전에 CRC 에 대해사 처음 이야기를 들었을 때는 다항식 이나 나눗셈이니 하는 부분이 잘 이해가 되지 않았습니다. 제 나름대로 이해한 내용으로 설명을 드리려고 하는데 아마 잘못 이해하고 있는 부.......

[STM32 HAL] SPI#Protocol + SSD1306 OLED + u8g2 library [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **Mastering STM32 교재에 아쉽게도 다양한 SPI 예제들이 없다보니 제 개인적으로 몇가지 선정하여 SPI 예제를 진행하였습니다. 오늘은 마지막 예제인 SSD1306 OLED 입니다. SSD1306 OLED 는 저렴한 가격에 구매할 수 있는 디스플레이 장치로 널리 쓰이는 만큼 다양한 라이브러리들이 이미 만들어져 있습니다. 그중에서는 제가 좋아하는 2가지 라이브러리 중 하나인 u8g2 라이브러리를 Porting 하는 내용으로 정리해 보고자 합니다. u8g2 라이브러리는 olikraus 에 의해서 Github 에서 배포되고 있는 라이브러리로 SSD1306 외에도 수십종의 OLED .......

[STM32 HAL] SPI#Protocol + MAX7219 [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **이번 글에서는 지난번에 이어서 SPI 두번째 예제인 MAX7219 를 이용한 Matrix 제어입니다. 사실 MAX7219 는 AVR 의 SPI 예제를 만들어 볼 때 한번 다루어 보았던 예제입니다. 대부분의 소스는 이전에 만들었던 AVR 예제를 그대로 사용하고 일부 SPI 관련 함수만 STM32 에 맞게 수정하였습니다. MAX7219 의 동작에 대해서는 앞선 글에서 정리하였기 때문에 이번 글에서는 MAX7219 자체에 대한 글은 생략하고 AVR 코드를 STM32 에 맞도록 수정한 부분만 언급하도록 하겠습니다. CubeMx 에서 아래와 같이 프로젝트를 생성하고 SPI2 를 활성화 시켜줍니.......

[STM32 HAL] SPI#Protocol + 25LC010A [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경지식 ]SPI 는 70년대 Motorola 에 의해서 정의된 표준으로 I2C 와 더불어 아직도 널리 쓰이고 있다. SPI 버스는 4개의 시그널로 구성된다. (SCK, MOSI, MISO, SSn)SCK 는 데이터 전송 시 동기화에 사용된다.MOSI 는 Master Output Slave Input 의 약어로서 Master 에서 Slave 로 데이터 전달에 사용된다.MISO 는 Master Input Slave Output 의 약어로 Slave 에서 Master 로 데이터 전달에 사용된다.SSn 은 Slave Select 의 약어로 SPI 는 I2C 와 달리 Device 별로 Address 를 사용하지 않고 Select 신호를 사용한다. Full Duplex 동작 시에는.......

[STM32 HAL] I2C#Protocol + DS3231 RTC [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **I2C 관련하여 지난 글에서 정리를 하려고 하였는데 예전에 구매하여 놓고 제대로 테스트를 해보지 않은 DS3231 RTC 가 있는 것이 기억나서 추가로 DS3231 라이브러리를 제작해 보았습니다. DS3231 은 기본적으로 RTC 시간정보를 제공하는 것 이외에도 알람이나 Square Wave 출력 같은 기능들을 제공하고 이를 세부적으로 제어할 수 있습니다. 저는 여러가지 기능 중에서 핵심이 되는 기능 4가지를 지원하는 라이브러리를 만들어 보았습니다. 1) RTC 정보 Set / Get2) Temperature 정보 / Get 3) Alarm#1 Set / Clear4) Register Read / Write그럼.......

[STM32 HAL] I2C#Protocol + HD44780 CLCD [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경지식 ]I2C 는 UART, SPI 통신과 함께 널리 쓰이고 있는 통신 프로토콜 중 하나이다.1982년 NXT 전신인 Philips 에 의해서 개발 됨.Multi Slave 지원, Half-Duplex, Two-wires 통신의 특성을 지님.기본적인 I2C 버스 구성은 아래와 같으며 Pull-up 저항 값은 Bus 의 Capacity 와 통신 속도에 의해서 결정 되며, 일반적으로는 4.7K Ohm 저항을 사용 정확한 저항값 계산은 링크를 참조: http://www.ti.com/lit/an/slva689/slva689.pdfSDA 는 데이터 전송 목적으로 사용되며 SCL 은 Clock 전송용으로 사용됨.STM32 내부 Pull-up 을 사용할 수 있.......

[STM32 HAL] I2C#Protocol + BME280 [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **지난 번 I2C 방식을 이용한 HD44780 CLCD 예제에 이어서 BME280 환경센서 예제를 설명드려보고자 합니다. BME280 은 온도, 습도, 기압 데이터를 한번에 계측 할 수 있는 매우 유용한 센서입니다. 측정가능한 스펙은 아래와 같습니다. 온습도 측정 범위도 넓고, I2C 방식을 사용하여 손쉽게 데이터를 취득할 수 있기 때문에 지난 번 ADC 에서 사용한 LM35DZ 보다 회로 구성을 간단하게 하면서 영하/영상 폭넓은 온도를 측정할 수 있고 DS-18B20 과 같이 1-Wire 를 사용하는 센서보다 손쉽게 구현이 가능한 점이 장점인 것 같습니다. 물론 비용적인 측.......

[STM32 HAL] DAC#Sine Wave + Triangle Wave [내부링크]

Reference: Mastering STM32 by Carmine Noviello** 자료 해석에 오류가 있을 수 있습니다 **[ 배경지식 ]DAC 는 ADC 동작의 역으로 이해할 수 있습니다. Digital 값을 Analog 전압으로 바꾸어서 출력해 줍니다. 위 그림은 8bit R-2R Ladder DAC 의 구조를 단순화하여 보여준 그림으로 입력되는 DAC 값에 따라서 R-2R 회로의 스위치가 제어 되면서 제어하고자 하는 값으로 출력하게 됩니다. 예를 들어서 8bit DAC 에서 0x00 = 0V, 0x80 = 1.65V, 0xFF = 3.3V 로 출력됩니다.R-2R Ladder 의 동작은 아래 그림과 같습니다.[ 예제 ]1) HAL_DAC_SetValue 를 이용해서 50Hz 싸인파를 만들어 본다.2) 타이머와 DMA 방식으로 50H.......