본문 바로가기

전체 글879

TMS320F28388D ] getTick 구현 ISR에서 사용할 volatile msTick변수와 getTick함수는 모든 HW드라이버파일이 사용할 수 있는 헤더 extern 해둠 volatile uint32_t msTick; uint32_t getTick(void) { return msTick; } main.c 사용 예 timerOpen(TIMER_CH1, 1000, &timer0ISR); //... for(;;) { if(getTick()-timeBefore > 1000) { timeBefore = getTick(); print("\r\nHello World!"); } } timerOpen함수는 함수포인터로 받아서 콜백함수 등록 __interrupt void timer0ISR(void) { msTick++; // Acknowledge this i.. 2023. 2. 21.
C#, WinForms ] textBox박스의 focus 없애기/주기 focus 없애는 방법 Properties - TabStop False로 설정 또는 Form Load 시 this.ActiveControl = null; focus 주는 방법 Form Load 시 this.ActiveControl = textBox1; 또는 textBox1.Focus(); 2023. 2. 21.
C#, WinForms ] 문자열 앞에 (심벌)@사용 @ 심벌을 문자열 앞에 사용하면, 해당 문자열 안의 Escape 문자를 무시하고 문자 그대로 인식하도록 한다. 예를 들어, Backslash를 한번 지정하면 이는 Escape문자로 인식되기 때문에 2개의 Backslash를 사용하게 되는데, @ 심벌을 문자열 시작 부호전에 사용하면, Backslash를 그대로 Backslash로 인식하게 한다. 예시1. string filename = "C:\\Temp\\1.txt"; string filename = @"C:\Temp\1.txt"; 예시2. this.textBox1.Text = duration.ToString(@"hh\:mm\:ss\.fff"); this.textBox1.Text = duration.ToString("hh\\:mm\\:ss\\.fff");.. 2023. 2. 21.
DateTime 문자열 서식지정자 주의 : 날짜 및 시간 형식은 Locale 설정에 따라 달라질 수 있다. https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings Custom date and time format strings Learn to use custom date and time format strings to convert DateTime or DateTimeOffset values into text representations, or to parse strings for dates & times. learn.microsoft.com Format specifier Description Examples "d" Th.. 2023. 2. 21.
C#, WinForms ] 스탑워치, Stopwatch 클래스, DateTime 구조체, Timer 활용 using System.Diagnostics; //... private Stopwatch stopwatch = new Stopwatch(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // textBox 초기값 this.textBox2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); this.textBox2.Text = ""; } private void button1_Click(object sender, EventArgs e) { // Stopwatch, Timer 스타트 stopwatch.Start(); this.timer1.St.. 2023. 2. 20.
Visual Studio ] method prototype 확인법 괄호(Parenthesis)에 커서를 두고 Ctrl + Shift + Space 누르면 툴팁이 나옴 이 상태에서 Shift + ↑/↓ 를 누르면 method의 overload 이동하면서 확인할 수 있음 https://stackoverflow.com/questions/9891656/visual-studio-how-to-show-overloads-in-intellisense Visual Studio: How to show Overloads in IntelliSense? Once code has been written, the only way I know of to view the overloads for a method is to actually edit the method by deleting the Pa.. 2023. 2. 20.
터미널 제어문자 ANSI escape code / 터미널에 글자색 배경색 입히기 터미널 제어 문자는 컴퓨터 터미널 화면의 커서 위치 및 색상 등을 제어하는 용도로 사용되는 특수한 문자들로 이에 대한 표준은 ANSI escape code이다. 1970년대 최초로 이러한 터미널 제어기능을 지원하는 VT100이라는 터미널 에뮬레이터가 등장하였고, 이후에 나온 터미널들도 VT100과 호환성을 가질 수 있도록 기존 제어 문자에 확장된 기능을 추가하여 ANSI escape code가 ANSI 표준으로 제정되게 되었다. 사용 예시 print("\033[31;43mHello, World!\033[0m\r\n") 여기서 \033 은 터미널 제어를 위한 ANSI 이스케이프 시퀀스(컨트롤 문자인 ESC(escape)의 ASCII 코드값)로 "\033" 뒤에 명령인수가 온다. [31m은 텍스트를 빨간색으.. 2023. 2. 20.
CAN FD 프로토콜 HTML 삽입 미리보기할 수 없는 소스 1. Recommended Clock : 20/40/80MHz Clock 2. Nominal bit rate : up to 1Mbps 3. Data bit rate : 2/5/8Mbps 4. DLC : Maximum 64 bytes per length 5. Improved CRC 6. 주로 사용하는 bit rate : 500Kbps / 2 Mbps HTML 삽입 미리보기할 수 없는 소스 주요 차이점은 아래와 같다. 📌 CAN FD도 기존 CAN과 마찬가지로 ID가 11bit인 Standard Frame과 ID가 29bit인 Extended Frame이 있다. 📌 Higher Speed of Data Bit Rate가 적용되는 구간은 BRS bit부터 CRC Deli.. 2023. 2. 20.
ANSI, 유니코드 인코딩 ASCII 코드 (American Standard Code for Information Interchange) 최초의 문자열 인코딩 7 bit로 구성되어 있으며, 영어 문자, 숫자, 특수문자, 기호 등 0x00부터 0x7F까지 총128개 문자를 표현할 수 있다. 7 bit인 이유는 1bit를 패리티용도로 나뒀기 때문이다. 어느 시스템에서도 적용가능하지만 영어 이외의 문자를 표현할 수 없다는 단점이 있다. ANSI 특정 인코딩 방식 한가지를 가리키는 말이 아니라 각 언어마다 CodePage라 불리는 코드표를 따로 정해두고, 언어별 코드표를 사용하여 인코딩하는 방식을 뜻한다. 예를들면 한글 CodePage는 EUC-KR과 CP949가 있다. 참고로 한글 Windows 메모장에서 ANSI를 선택하면 CP949.. 2023. 2. 19.
한글 ] 개요 수준 증가/감소, 개요 적용/해제 단축키 개요 적용/해제 : Ctrl + Ins 개요 수준 증가 : Ctrl + '+' 개요 수준 감소 : Ctrl + '-' 같은 개요 수준으로 다음 줄 쓰기 : Enter 개요 빠져나기 : Enter 두 번 개요 번호 모양 바꾸기 : Ctrl + K, O 개요 스타일 바꾸기 : F6 2023. 2. 19.
한글 ] 새 페이지 추가 단축기, 페이지 삭제 새 페이지 추가 : Ctrl + Enter 페이지 삭제 삭제할 페이지에 커서를 두고 쪽 - 쪽지우기 2023. 2. 19.
C ] vprintf, vsprintf, vsnprintf 차이 int vprintf(const char * __restrict _format, va_list _ap); int vsprintf(char * __restrict _string, const char * __restrict _format, va_list _ap); int vsnprintf(char * __restrict _string, size_t _n, const char * __restrict _format, va_list _ap); 셋 다 마지막 매개변수로 가변인수 목록이 담긴 포인터를 받는다는 공통점이 있지만 vprintf는 콘솔로 출력하고 vsprintf와 vsnprintf는 버퍼로 출력한다는 차이점이 있다. vsprintf와 vsnprintf의 차이점은 vsnprintf는 버퍼의 크기를 지정해서 .. 2023. 2. 17.
STM32 ] 커스텀 부트로더 (IAP) 부트로더 Code Placement 이전 글에서 언급했지만 ST사에서 만든 내장 부트로더는 System memory에 있고 그걸 지울 수 는 없다. 이글에서는 예제에서 제공하는 커스텀 부트로더(IAP)를 사용해볼건데 IAP는 Sector 0 ~ Sector 1을 사용하고, Sector 2 ~ Sector 11 에는 User Application을 위치시킬 것이다. 즉, 커스텀 부트로더의 Base Address는 0x0800 0000 이 되고, User Application의 base address 는 0x0800 8000이 된다. 보통 부트로더에서 지원하는 커맨드들 부트로더에 구현할 것들은 예를들면 다음과 같을 수 있다. 부트로더에서 사용가능한 커맨드 확인 부트로더의 버전 확인 MCU 칩의 ID 확인 메.. 2023. 2. 15.
YMODEM, XMODEM 프로토콜 YMODEM은 파일전송 프로토콜으로 XMODEM의 개선버전이며, ZMODEM, XMODEM-1K, XMODEM-CRC, WXMODEM 등 여러 변형버전이 있다. 기본구조 SOH : 0x01 (데이터블록이 128바이트인 경우 사용) STX : 0x02 (데이터 블록이 1024바이트인 경우 사용) EOT : 0x04 (전송이 끝났음을 알리는 문자) ACK : 0x06 NAK : 0x15 CAN : 0x18 (Cancel, Force receiver to start sending C's) C : 0x43 (ASCII 'C') EOF : 0x1A (파일의 끝에 도달 시 패딩) ETB : 0x17 (End of Transmission Block) Start of Header Packet No. ~(Packet N.. 2023. 2. 15.
CCS ] Breakpoint 사용법 링크 :https://software-dl.ti.com/ccs/esd/documents/ccs_breakpoint_watchpoint_c2000.html Hardware Breakpoints and Watchpoints in CCS for C2000 devices software-dl.ti.com   Breakpoint 탭에 들어가면 다음과 같은 세부 기능을 사용할 수 있다. Breakpoint : Software BreakpointHardware breakpoint : halt execution of the processor at a pre-defined place in the code.Hardware watchpoint : allow execution to halt when a read or writ.. 2023. 2. 12.
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.