본문 바로가기

분류 전체보기894

MFD(Multi Function Display), CDU(Control Display Unit) MFD : Multi Function Display A multifunction display (MFD) is a small-screen (CRT or LCD) surrounded by multiple soft keys (configurable buttons) that can be used to display information to the user in numerous configurable ways. MFDs originated in aviation, first in military aircraft, and later were adopted by commercial aircraft, general aviation, automotive use, and shipboard use. CDU : Contro.. 2023. 2. 12.
데이터 무결성 검사, 체크섬과 CRC 데이터 또는 파일의 무결성 검사를 위해 체크썸이나 CRC를 사용할 수 있다.   체크섬 체크섬(Checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 데이터의 무결성을 보호하는 단순한 방법이다.통신에서 순환 중복 검사(CRC)를 체크섬이라고 말하기도 하지만, 엄밀히 말하면 체크섬은 나열된 데이터를 단순 더하여 체크섬 숫자를 얻고, 정해진 비트수의 모듈러로 정해진 비트수로 재구성 한다. 대중적인 방식이기 때문에 누구나 데이터에 같은 작업을 수행할 수 있고, 무결성 검사에 대한 결과를 비교할 수 있으며, 메시지의 손상여부를 판단할 수 있다. 체크섬 사용 사례 임베디드 시스템에서 C 언어로 작성된 소스 코드를 컴파일러와 링커에 의해 최종 결합하면 기계어 코드의 묶음인 바이너리 파일이 나온다. 이 바이.. 2023. 2. 11.
TMS320F28388D ] eCAN, DCAN, MCAN bit Timing Calculator TI에서 제공하는 Bit Timing 계산용 엑셀파일 eCAN, DCAN bit Timing Calculator MCAN bit Timing Calculator 관련문서 2023. 2. 10.
DO-178 ] Stage Of Involvement (SOI) SOI(Stage Of Involvement) 란 DO-178 인증을 진행할 때 인증기관(Certification Authority)이 특정 프로젝트의 소프트웨어 개발 생명주기의 중요 단계에 관여하여 소프트웨어 개발 및 검증 활동이 DO-178B 가이드라인에 맞도록 진행되고 있는지 확인하는 절차인 것이다. Stage Of Involvement (SOI) #1 : Software Planning Review 소프트웨어 개발 계획 절차가 완료될 때 즉, 대부분의 계획서와 표준이 완료되고 검토되었을때 수행되어야 한다. Stage Of Involvement (SOI) #2 : Software Development Review 소프트웨어 개발 데이터(즉, 요구조건, 설계, 코드 등)의 상당 부분(일반적으로 약 5.. 2023. 2. 10.
SoftEther VPN Client 사용법 다운로드 https://www.vpngate.net/en/download.aspx Download VPN Gate Client Download VPN Gate Client download (for Windows, freeware) Simply install VPN Gate Client Plugin to SoftEther VPN Client. It will enable you to connect to any of our Public VPN Relay Servers of VPN Gate in a snap. It has a better throughput than L2TP, OpenV www.vpngate.net 아래 사이트에서 VPN중계서버 목록 중 적당한 서버를 선택한다. (TCP지원 서버로 선택) htt.. 2023. 2. 10.
STM32CubeIDE, CCS, 이클립스 ] 한글 주석 깨짐 해결 워크스페이스에 여러 프로젝트를 import 해서 쓸 때 한글 주석이 깨지는 일이 종종 발생한다. 인코딩이 맞지 않아서 발생하는 일로, 예를 들어 EUC-KR 인코딩으로 작성한 프로젝트를 UTF-8 방식으로 읽고 있다면 인코딩이 깨질 수 있다. 개별 프로젝트 인코딩 바꾸기 프로젝트 우클릭 - Resource - Text file encoding 변경 UTF-8 또는 EUC-KR 로 변경한다. 워크스페이스의 인코딩 바꾸기 Window - Preferences General - Workspace - Text file encoding 을 변경 General - Content Types - Text 선택, Default encoding을 입력하고 Update 누름 참조 : https://coding-factory.. 2023. 2. 8.
STM32 ] 내장 부트로더와 Flash Loader 사용하기 Boot Pin 설정 내장 부트로더는 System memory에 저장되어 있고 이를 실행시키기 위해선 BOOT1핀을 0, BOOT0핀을 1로 한 상태에서 reset 해야 한다. 이를 위해 보드매뉴얼을 살펴본다. BOOT1핀은 default로 Solder Bridge가 Open된 상태이고 이 때 BOOT1 function은 사용되지 않는다고 한다. 그치만 PB2핀이 CN10을 통해 나와있으니 이 핀을 GND랑 연결해주면된다. BOOT0 핀의 default state는 0이고 Morpho connector CN11을 통해 나와있으니 5번, 7번핀을 쇼트시키면 1로 만들 수 있다. AN2606 System memory boot mode Application note 확인 여기서 나온 communication .. 2023. 2. 7.
STM32 ] Boot Configuration 이전글에서 Reset시 프로세서는 0x0000 0000 부터 시작하는 반면 실행할 instruction이 저장된 위치는 다른 곳이기 때문에 Memory Aliasing을 사용한다고 했었다. 그리고 Reference Manual의 Boot configuration을 보면 더 자세한 정보를 찾을 수 있다. Boot mode selection을 위해 BOOT1, BOOT0의 두가지 핀이 존재하고 reset시 해당핀들의 logic에 따라 boot mode가 달라진다. BOOT1은 don't care, BOOT0이 0일 때 Boot mode는 Main Flash memory 모드가 된다. 즉 0x0000 0000 번지가 main flash의 base address로 aliased 된다는 의미이다. BOOT1은 0.. 2023. 2. 6.
STM32 ] Reset Sequence 이해하기 모든 ARM Cortex-M based MCU는 reset 이후 다음과 같이 작동한다. 1. PC(Program Counter)는 0x0000 0000 값을 갖는다. 2. 프로세서는 0x0000 0000의 value를 읽어 MSP(Main Stack Pointer)에 넣는다.MSP = value@0x0000 0000즉, 프로세서가 가장 먼저 하는 일은 Stack pointer를 intialize 하는 일이다. 3. 프로세서는 0x0000 0004 의 value를 읽어 PC에 넣는다.그리고 해당 value는 Reset Handler의 주소이다. 4. PC는 Reset Handler로 점프한다.Reset Handler는 Application 실행을 위해 필요한 초기화를 하는 C/.. 2023. 2. 6.
STM32 ] 메모리 구조 STM32F429ZI 메모리 구조 Internal Flash Memory (Embedded Flash, On-Chip Flash) : 2MB Dual-Bank System Memory (ROM) : 30KB (Read Only, ST사의 native bootlader가 저장된다) OTP (One-Time Programmable) Memory : 528 bytes (Product No. Serial No. 저장 등에 사용된다) Option bytes Memory : 32 bytes (Flash Memory에 Access하기 위한 flag로 사용된다) Internal SRAM : 256KB Internal SRAM1 : 112KB Internal SRAM2 : 16KB Internal SRAM3 : 64KB.. 2023. 2. 6.
STM32CubeIDE 프로젝트의 debug 와 release 빌드 차이점 둘의 차이점은 GCC 컴파일러 세팅이다. Debug --> Optimization off -O0 Release --> Optimize for size -Os Release 모드는 최적화를 사용하므로 실행 속도가 빠르고 코드 크기가 줄어든다. 하지만 #ifdef _DEBUG 코드와 assertion macro 가 비활성화되고 디버그 심볼과 소스/라인 넘버 정보가 사라지므로 디버그를 수행하기 힘들어질 수 있다. 커뮤니티의 글들을 살펴보니 Debug 모드로 개발하다가도 종종 Release 모드로 테스트 해보는 것을 추천하고, 퍼포먼스가 크게 문제가 되는 상황이 아니라면 두가지 설정을 가지고 갈 필요 없이 Debug모드만 사용하는 것도 고려해볼 수 있을것 같다. 한편 Debug 모드로 실행 시 메모리가 부족하다.. 2023. 2. 6.
STM32 ] HSE bypass 설정 HSE에는 ON/OFF 그리고 BYPASS가 있는데 BYPASS란 무엇일까 아래 회로도를 보면 MCU에 OSC_IN, OSC_OUT 두 핀이 있고 거기에 External cyristal oscillator가 연결되면 사용할 수 있는데 현재 연결이 안된 것을 알 수 있다. [N/A] 그리고 reference manual에 HSE clock 파트를 보면 HSE를 사용하기 위한 두가지 옵션이 있다고 나와있다. 첫 번째는 위 회로도대로 OSC_IN과 OSC_OUT핀에 crystal oscillator를 연결하는 것이고 두 번째는 External Source를 사용하는 것이다. External Source는 다른 MCU가 될 수도 있고 다른 timer 나 RTC가 될수도 있다. 연결방법은 해당 소스를 OSC_IN.. 2023. 2. 5.
STM32 ] Clock 설정, HSI, HSE, PLL, LSI, LSE Clock Source 종류 일반적으로 Clock을 얘기할 때는 main system clock 을 말한다. 그리고 system clock(SYSCLK)은 다음의 세가지 clock sources 에서 나올 수 있다. HSI(High Speed Internal) oscillator clock HSE(High Speed External) oscillator clock Two main PLL(Phased Locked Loop) clock 또한 SYSCLK가 아니라 secondary 목적으로 사용되는 clock sources 가 2개 있다. 32kHz low-speed internal RC (LSI) : Watchdog에 사용되고, Stop/Standby Mode 에서의 RTC를 사용한 Auto-wakeup 용.. 2023. 2. 5.
Windows ] 도 degree ° 기호 빠르게 삽입하기 Alt 키를 누른상태에서 숫자 0176을 입력하면 도 기호가 삽입된다. ° 출처 : https://support.microsoft.com/ko-kr/office/%EC%82%BD%EC%9E%85-%EC%A0%95%EB%8F%84-%EA%B8%B0%ED%98%B8-f1d062b6-577f-4fe2-8a51-c6f7a862a8b7 2023. 2. 5.
.NET Framework, .NET, Windows Forms 란 .NET 이란? .NET은 Linux, macOS, Windows, iOS, Android 등을 다양한 유형의 애플리케이션을 구축하기 위해 Microsoft에서 만든 오픈 소스 개발자 플랫폼이다. .NET Framework와 달리 Windows 프로그램 개발에 한정되지 않고 크로스 플랫폼 개발을 지원한다. .NET Framework 란? .NET Framework는 Windows에서 애플리케이션을 빌드하고 실행하기 위한 소프트웨어 개발 프레임워크이다. ❗ .NET Framework의 릴리즈 중단과 .NET으로의 통합 .NET Framework는 4.8이 마지막 버전이며 더이상의 릴리즈는 없다. 이미 .NET Framework 4.x 일부 버전은 지원이 중단된 상태이다. 이후 .NET Framework는 .. 2023. 2. 3.
Windows ] Alt + Tab 이 안먹힐 때 해결법 윈도우 탐색기를 열고 작업관리자에서 윈도우 탐색기를 재시작한다. 2023. 2. 3.
Serial EEPROM 과 NAND Flash Memory(USB, SD) 의 비교 EEPROM Flash Memory Electrical Erasable Programmable Read Only Memory solid State Disk NOR cells NAND cells Less Write More Read Both Read Write More Expensive Less Expensive Faster Read Slower Read More Time For Programming Less Time For Programming Less Voltage More Voltage Less Erasing Time More Erasing Time Erase Byte Erase Block or Whole chip Smaller Faster Data Large Data EEPROM과 Flash의 가장.. 2023. 2. 3.
메모리 종류와 세부분류 ROM, RAM, FLASH HTML 삽입 미리보기할 수 없는 소스 1. ROM (Read Only Memory) 비휘발성(Non-volatile) 반도체 저장장치 한번 기록된 정보를 읽은 수만 읽고 수정할 수는 없는 고정 기억장치 다시 쓰고 지울 수 있는 방식에 따라 아래와 같이 구분됨. MASK ROM 부터 점차 발전되 현재 ROM이라고 하면 대부분 EEPROM을 말함 종류 설명 MASK ROM 가장 기본적인 ROM으로 제조과정에서 기록한 내용을 사용자가 수정 불가 PROM (Programmable ROM) 하용자가 한번만 기록 가능 EPROM (Erasable PROM) UV EPROM 강한 자외선으로 데이터 삭제 가능 EEPROM 전기적 기능으로 데이터 삭제 가능 2. RAM (Random Access Memory) 전원이 .. 2023. 2. 3.
TMS320F28388D ] Hardware Access 매크로 hw_type.h 파일에 레지스터에 접근에 데이터를 읽고 쓸 때 사용되는 매크로 함수들이 있다. HWREG(x) (*((volatile uint32_t *)((uintptr_t)(x)))) // 32 bit Access 에 사용된다. HWREG_BP(x) __byte_peripheral_32((uint32_t *)(x)) // 32 bit Access 에 사용되는데 컴파일러 내장함수를 사용한다. 이 매크로함수는 CAN, USB 같은 byte Access의 특수 주소지정체계를 쓰는 페리페럴에 사용하기 위해 만들어졌다. HWREGH(x) (*((volatile uint16_t *)((uintptr_t)(x)))) // 16 bit Access 에 사용된다. 16 bit 레지스터나 32bit 레지스터의 상위 .. 2023. 2. 1.
GitHub, Git ] 기본 브랜치명(main->master) 변경하기 https://www.lesstif.com/gitbook/github-default-master-main-100205686.html github default 브랜치명을 master 에서 main 으로 변경하기 local 에 저장소를 clone 한 경우 다음과 같이 기본 저장소 이름을 바꿔줘야 합니다. git branch -m master main git fetch origin git branch -u origin/main main BASH www.lesstif.com 1. 깃허브 새 리파지토리의 기본 브랜치명 변경(main->master) 깃허브 우측 상단에서 아이콘 클릭 후 Settings 좌측 사이드 바에서 Repositories 클릭 Repository default branch 를 변경한다. 이.. 2023. 2. 1.
부트로더 Boot Loader 부트로더란? 부트로더(bootloader)는 부팅 시 처음으로 실행되는 프로그램으로 Application을 로드하고 실행하는데 필요한 초기 설정을 한다. 부트로더는 주로 ROM, flash 메모리 또는 EEPROM에 저장되어 있으며, 기본적으로는 기기를 켜면서부터 실행된다. Application 업데이트가 필요한 경우 사용될 수 있다. 부트로더를 이해하기 위한 예시 1. 아두이노 아두이노의 경우에도 flash memory 에 프로그램된 on chip bootloader 가 있다. 아두이노가 reset 되는 경우 bootloader 가 가장 먼저 실행된다. bootloader 는 아두이노 스케치를 보드에 다운로드하기 위한 목적으로 사용된다. (IAP, In Application Programming) 아두.. 2023. 2. 1.
Git, Windows ] push / pull 자동화 배치파일 만들기 다음과 같이 윈도우 배치파일을 만든다. push.bat git add * git commit -m "Auto push %date% %time%" git push origin main pause 배치파일에서 현재 날짜과 시간을 출력하기 위해 %date%, %time%을 쓸 수 있다. pull.bat git pull origin main pause 배치파일을 .git 과 같은 폴더에 넣어둔 두면 단순 클릭으로 push, pull을 할 수 있다. 배치파일 안의 깃 명령어는 얼마든지 수정 가능하다. 이렇게 만든 배치파일을 윈도우 작업 스케줄러에 등록하여 자동으로 실행되도록 할 수도 있다. 윈도우 배치파일 만드는 법 : https://eteo.tistory.com/373 윈도우 배치파일(.bat) 만들기 (레지스.. 2023. 2. 1.
LSB, MSB 출처 : https://blog.naver.com/ansdbtls4067/220886567257 LSB와 MSB란 무엇인가? 안녕하세요? 땜쓰 인사드립니다. 오늘은 LSB와 MSB에 대해서 함께 알아보도록 하겠습니다. 우선 이들... blog.naver.com LSB 와 MSB LSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다. MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다. LSB 위치는 가장 값이 작은 비트인 2^0에 위치하고 있으므로 LSB의 값을 확인하면 숫자가 짝수인지 홀수인지 쉽게 알아낼 수 있다. 또한 LSB는 프로그래밍시 주로 난수발생 함수, 해시 함수, 검사합(Check.. 2023. 1. 31.
컴파일러 워닝 "was set but never used" 해결법 변수를 선언하거나 함수를 정의하고 사용하지 않으면 컴파일러가 "was set but never used" 경고를 낼 때가 있다. 다음과 같이 캐스팅하면 된다. void never_call() { (void)abc; } 2023. 1. 31.
#ifdef 와 #if defined() 의 차이 #ifdef 와 #if defined() 는 항목이 하나일 땐 동일하다. #ifdef A #if defined(A) 차이점은 #if defined() 만 아래처럼 여러 항목을 비교할 수 있다고, #ifdef 는 이런 표현이 불가능하다. #if defined(A) && (defined(B) || defined(C)) 출처 : https://zoosso.tistory.com/1201 2023. 1. 31.
STM32 ] CAN Interrupt CAN 통신 송수신 이전글 : 2023.01.29 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 송수신 STM32 ] CAN 송수신 CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 eteo.tistory.com bxCAN 의 interrupt source 1. Transmit Request Completed 2. Frame is received in RX FIFO0 3. Frame is r.. 2023. 1. 31.
Git ] 로컬 저장소에 강제 pull 하기 (local을 remote로 덮어쓰기) local 을 remote 내용으로 덮어쓰기 $ git fetch --all $ git reset --hard origin/master master 말고 다른 local branch에 덮어쓰기 $ git fetch --all $ git reset --hard origin/ master 를 다른 branch에 저장해둔 후 덮어쓰기 $ git checkout master $ git branch $ git fetch --all $ git reset --hard origin/master 2023. 1. 31.
WinForms ] GroupBox, Panel, TabControl 속성 GroupBox 컨트롤의 그룹으로 GroupBox를 생성 후 드래그앤드랍으로 원하는 컨트롤을 GroupBox 안에 위치시키면 된다. GroupBox 안에있는 컨트롤들의 속성을 각각 변경할 수 있지만 예를들어 GroupBox의 ForeColor를 red 로 지정하면 안에있는 컨트롤들이 ForeColor를 상속받는다. Panel Panel 은 GroupBox와 유사하게 컨트롤을 그룹핑하는데 쓰인다. TabControl TabControl 은 많은 컨트롤을 적은 공간에 그룹핑하여 표시하는 데 유용하다. TabControl 안에 GroupBox 또는 Panel을 넣을 수 있다. 화살표버튼을 눌러 탭 추가/제거가 가능하다. 또한 페이지 안쪽을 클릭하면 TabPage 컨트롤의 속성을 설정할 수 있고 페이지 바깥쪽을.. 2023. 1. 31.
FNIRSI 오실로스코프 사용법 (1013D) 상단 프로브 커넥터 CH1, CH2. 파워 LED, C type 포트, 전원 버튼이 있다. 그리고 프로브 커넥터 사이에 있는 고리에 프로브를 꼽으면 sample 1KHz 파형을 볼 수 있다. MENU - System settings 스크린 밝기와 그리드 라인 밝기를 조절 가능하다. 그리고 항상 50% 부근에서 트리거 잡아주는 기능을 enable disable 할 수 있다. 그 옆에는 현재 RUN 상태인지 STOP 상태인지 볼 수 있는 아이콘이 있다. CH1, CH2 컨트롤 블락 채널 On/Off 그리고 프로브의 슬라이드 스위치를 올리면 측정 전압레벨을 높여 쓸 수 있다. 우측 상단의 CTRL 버튼을 눌러 Vertical 축(전압 scale)을 조정할 수 있다. 현재 CH1 컨트롤 블락에 1V/div 라고.. 2023. 1. 30.
WinForms ] ProgressBar, PictureBox, NumericUpDown, TrackBar 속성 ProgressBar 사용자에게 진행 상황을 알려줄 수 있는 컨트롤이다. Maximum 과 Minimum 속성을 통해 상한과 하한을 설정할 수 있다. Value 속성으로 현재 값을 지정할 수 있다. Style 은 세 종류가 있는데 Blocks 와 Continuous 가 우리가 일반적으로 아는 Progress Bar이고 둘 은 윈도우10 이상에선 차이가 없는 듯 하다. Style에서 Marquee 를 선택하면 아래와 같은 애니매이션을 볼 수 있다. Marquee 같은 경우 속성에서 속도도 설정 가능하다. PictureBox 컨트롤을 추가하고 화살표를 눌러 이미지를 선택한다. 크기 모드에서 Normal / StretchImage / AutoSize / CenterImage / Zoom 중 하나를 선택할 수 .. 2023. 1. 29.