본문 바로가기

전체 글917

VSCode ] 새로고침 reload window VSCode Window를 새로고침하는 법 Ctrl + Shift + P 로 Command Palette를 열고 reload window 타이핑하고 선택 참고. Command Palette 는 View에서 열 수도 있고 F1을 눌러 열 수도 있다. 새로고침 단축기 설정하는 법 Open Keyboard Shortcuts (JSON) 선택 원하는 bindingKey와 함께 아래와 같이 입력 [ { "key": "ctrl+f5", "command": "workbench.action.reloadWindow", "when": "editorTextFocus" } ] 혹은 작업영역에서 폴더 삭제 후 재오픈 2023. 7. 11.
왜 Windows 만 path 구분자로 Backslash를 사용할까 웹 (http://www.google.com/), 리눅스 (/home/user/), Android 등 대부분의 곳에서 path 구분자로 / forward slash를 사용하는데 왜 윈도우만 \ backslash를 사용할까? MS-DOS 1.0 시절에는 디렉터리를 지원하지 않았고 / 를 명령어의 옵션을 선택하는 용도로 사용했다. 현재도 명령 프롬프트에서 dir /? 를 치면 dir 명령어로 사용가능한 옵션의 목록을 볼 수 있다. MS-DOS 2.0 시절부터는 디렉터리 지원을 도입했지만 / 문자는 이미 다른 용도로 사용하고 있었기 때문에 시각적으로 가장 비슷해 보이는 문자인 \ 를 path 구분자로 사용하기로 했다. 즉 윈도우만 path 구분자로 backslash를 사용하는건 DOS시절의 레거시인 셈이다. .. 2023. 7. 11.
VSCode ] 코드 자동정렬 단축키 및 들여쓰기 간격 설정 코드 자동정렬 드래그앤드랍으로 블락 선택 후 아래 단축키 입력 Windows : Shift + Alt + F macOS : Shift + Option + F Linux : Ctrl + Shift + I 저장시 자동정렬 켜기/끄기 File - Preferences - Settings - formatonsave 검색 후 체크/체크해제 들여쓰기 간격 설정 하단의 Spaces 선택 Indent Using Spaces 선택 후 Tab Size for Current File 설정 2023. 7. 11.
윈도우10 탐색기에서 최근에 사용한 파일 / 폴더 목록 지우기 탐색기 - 옵션 - '폴더 및 검색 옵션 변경' '최근에 사용된 파일 / 폴더 표시' 체크 해제 후 지우기 클릭 2023. 7. 11.
Windows ] TFTP Client 기능 켜기 제어판 - Windows 기능 켜기/끄기 - TFTP 클라이언트 체크 명령 프롬프트에서 tftp 명령어를 통해 사용 가능하다. 바이너리 파일을 송신하는 경우엔 -i 옵션을 써야 whole 파일이 문제없이 전송이 되었다. 2023. 7. 11.
C# ] 명령프롬프트, 시스템 명령어 실행 using System; using System.Diagnostics; class Program { static void Main(string[] args) { string Command = "dir"; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C " + Command; Process process = new Process(); process.StartInfo = startInfo; process.Start(); } } C++에서 system("") 함수를 사용하여 시스템 명령어를 실행할 때는 내부적으로 명령 프롬프트를 호출하는 작업이 숨겨져 있어서 간.. 2023. 7. 11.
C++ ] 시스템 명령어 실행 #include #include int main() { const char* command = "ls"; // 실행할 명령어 int result = system(command); // 명령어 실행 if (result == 0) { std::cout 2023. 7. 11.
C, C++ ] system("pause") 대신 사용할 수 있는 방법 system("pause")는 운영체제에 종속적이고 운영체제에게 "pause"라는 명령을 실행하도록 요청하므로 비슷한 기능을 구현할 다른 방법을 생각해보자. C 윈도우 환경에서만 가능한 방법 #include #include int main() { printf("Press any key to continue...\n"); while (!_kbhit()); (void)_getch(); return 0; } conio.h 는 윈도우에서만 사용 가능하다. C #include int main() { printf("Press Enter to continue...\n"); (void) getchar(); return 0; } getchar()는 표준 라이브러리이기 때문에 이식성이 좋으며, 보다 간단하게 사용자의 입력.. 2023. 7. 11.
CAN FD Bus Load Calculator CAN FD Bus Load Calculator Classic CAN bus load 계산기는 인터넷에 찾으면 있던데 CAN FD는 아무리 찾아도 안보여서 직접 만들었다. 공식은 아래 사이트를 참고했다. https://ieeexplore.ieee.org/document/8338047 2023. 6. 25.
readelf 명령어와 elf 파일 구조 ELF 파일 HTML 삽입 미리보기할 수 없는 소스 소스코드를 컴파일하면 목적코드로 변환되고, 목적코드와 필요한 라이브러리들을 링커커맨드파일 정보를 통해 링킹하는 과정이 끝나면 실행가능한 이진형식 파일인 Executable and Linkable Format 파일이 생성된다. ELF 파일의 구성 ELF 파일 기본 정보를 포함한 ELF Header 세그먼트의 정보를 포함한 Program Header Table 섹션에 대한 정보를 포함하는 Section Header Table Program Header Table 또는 Section Header Table의 엔트리들에 의해 참조되는 데이터 이 중섹션들이 링킹과 재배치에 필요한 중요한 정보를 포함하는 반면, 세그먼트들은 파일의 런타임 실행에 필요한 정보를 포함.. 2023. 6. 25.
소프트웨어 신뢰성 시험 - 동적 시험 Dynamic Testing 소프트웨어 신뢰성 시험 소프트웨어가 일으킬 수 있는 결함을 식별하는 시험으로 정적시험과 동적시험으로 구성된다. 동적 시험 Dynamic Testing 소프트웨어를 실제 하드웨어(Target)에 탑재한 상태에서 소프트웨어통합시험절차서(STD)에 기술된 시험절차에 따라 요구사항기반으로 Code Coverage(실행률)을 점검하는 것을 말한다. 동적 시험 종류와 기준 설정 Code Coverage는 전체 소스 코드에서 시험된 코드를 백분률(%)로 나타낸 것이며, 그 종류는 시험 수준에 따라 Statement Coverage, Branch Coverage, MC/DC (Modified Condition/Decision) Coverage로 구분된다. 이 중 Statement 가 가장 기본적인 수준이고, Branc.. 2023. 6. 25.
소프트웨어 신뢰성 시험 - 정적 시험 Static Testing 소프트웨어 신뢰성 시험 소프트웨어가 일으킬 수 있는 결함을 식별하는 시험으로 정적시험과 동적시험으로 구성된다. 정적 시험 Static Testing 소프트웨어를 실행하지 않은 상태에서 잠재적인 결함을 검출하는 시험. Coding Rule , 취약점 점검, Source Code Metrics 으로 구성된다. 정적 시험 종류 1. Coding Rule 방위사업청 코딩규칙은 무기체계 소프트웨어 개발 및 관리 매뉴얼 [부록 6]에 나와있으며 비교적 간단하다. 차량용 임베디드 소프트웨어나 신뢰성과 안정성이 매우 중요한 시스템의 소프트웨어의 경우 MISRA C 를 적용하기도 한다. 2. 취약점 점검 소스코드에 발생빈도가 높은 취약점을 표준화한 목록인 CWE(Common Weakness Enumeration) 항목을.. 2023. 6. 25.
JTAG, SWD JTAG (Joint Test Action Group)과 SWD (Serial Wire Debug)는 MCU와 통신을 통해 디버깅과 플래시 프로그래밍을 가능하게 해주는 인터페이스이다. JTAG와 SWD는 서로 다른 프로토콜이며, JTAG는 여러 디바이스에 널리 사용된다는 장점이 있고 SWD는 비교적 간단한 구성을 가지고 있다는 장점이 있다. VCC와 GND 제외 필수 연결 핀은 다음과 같다. HTML 삽입 미리보기할 수 없는 소스 TCK (Test Clock) : 클럭 신호 전송핀. 디버깅 장치와 타겟 장치 사이의 동기화 역할을 한다. TMS (Test Mode Select) : 타겟 장치의 상태를 테스트 모드로 선택하는 데 사용되는 핀. TDI (Test Data In) : 데이터 전송핀(디버깅 장치→.. 2023. 6. 25.
PXI PXI PCI eXtensions for Instrumentation PXI (PCI eXtensions for Instrumentation) is a proven PC-based platform for measurement and automation systems. PXI uses commercial PC-based PCI bus technology while combining rugged CompactPCI modular packaging, as well as key timing and synchronization features. PXI systems are composed of three main hardware components: chassis, controller, and peripheral.. 2023. 6. 25.
RWR, Radar warning receiver 전투기의 전자전 시스템의 요소로써 상대방 전투기의 레이더의 전파를 수신하여 파일럿에게 자신이 탐지되고 있다고 알려주는 전자장비이다. RWR 장비에는 다양한 레이더 전파 패턴에 대한 자료가 저장되어 있으며, 만약 RWR의 안테나가 레이더 전파를 수신하면 해당 전파를 분석, 이것이 아군 것인지 적군 것인지, 적군 것이라면 어느 방향인지, 그 전파가 추적용인지 탐색용인지 판단한다. 그리고 조종사에게 '여기 여기 방향에서 레이더 전파가 날아오고 있음.'이라고 알려준다. 통상적인 레이더는 탐색용 전파와 추적(흔히 말하는 락온 상태)의 레이더가 다르므로 이를 통해서 적이 단순히 탐색만 하고, 아니면 나를 추적하는지 알 수 있다. 적이 나를 추적한다는 것은 적이 나에게 미사일을 조준할 가능성이 커지므로 조종사는 알아.. 2023. 6. 25.
UDS (차량용 진단 통신) UDS (차량용 진단 통신) HTML 삽입 미리보기할 수 없는 소스 UDS란 Unified Diagnostic Services의 약자로 차량의 전자제어장치(ECU, Electronic Control Units)들 간에 진단, 펌웨어 업데이트, 테스트 목적의 통신에 사용되는 프로토콜이다. 주로 CAN(Controller Area Network) 버스를 통해 CAN 메시지형식으로 통신하는것이 일반적이지만 UDSonLIN, UDSonIP(UDS) 등 여러 Variation이 있다. UDS는 요청기반(Request based) 프로토콜로 클라이언트-서버 관계에서 수행되며 테스터 툴이 클라이언트가 되고, ECU가 서버가 된다. 실제로 차에 있는 OBD2 커넥터를 통해 CAN bus 인터페이스에 연결하고 UDS r.. 2023. 6. 9.
성남 제1공단근린공원, 희망대공원 성남제1공단근린공원 주출입구쪽에 공영주차장이 있는데 유료인것같다. 그리고 부출입구쪽의 세이브존 옥외 주차장이 19:00~9:00 동안 무료개방한다. 지은지 얼마 안되서 그런지 시설이 매우 좋다. 희망대공원 왼쪽의 희망대공원 주차장은 현재 아파트 공사중이라 출입이 어렵고, 성남도서관 주차장이 야간 무료개방이다. 배드민턴장도 있고 시설도 좋아보였는데 저녁시간에 가니 사람은 별로 없었고 불이 켜있지 않은곳도 많았다. 등산하는 느낌의 산책을 할 수 있다. 2023. 6. 9.
Open loop, Closed loop 제어시스템은 시스템에 피드백 경로가 존재하는지에 따라 다음과 같이 나뉠 수 있다. Open Loop Control SystemClosed Loop Control System   Open Loop Open Loop 시스템은 Output signal이 Input으로 피드백되지 않는 시스템으로, Non-Feedback system 이라고도 한다.   Open Loop 시스템은 입력과 출력 간의 관계(전달함수)를 설정한 후, 출력이 실제로 원하는 목표에 도달하는지 확인하지 않고 일련의 명령을 실행한다. 이러한 시스템에서는 제어 프로세스가 진행되는 동안에도 상태를 감지하거나 피드백을 사용하지 않는다. 주로 간단한 작업에 사용되며, 시간과 환경의 변화에 따른 영향을 받지 않는 경우에 유용하다.   장점 :- 구현이.. 2023. 6. 9.
Waveform types Sine wave Sine waves are signals that oscillate smoothly either side of a central value - normally zero volts. The sine wave follows the values of sine over the period of the cycle. As one cycle is equivalent to 360° or 2Π radians, the instantaneous value of sine can be calculated from the angle in degrees or radians, i.e. how far advanced the waveform is in its cycle. Parameters like the phase .. 2023. 6. 9.
Slew Rate Slew Rate 출력 전압이 입력 신호에 얼마나 빨리 응답하며 변화할 수 있는가의 척도. 입력에서 빠른 큰 변화가 있을때, 출력이 이를 빠르게 응답할 수 있는 최대 기울기. 일반적으로 Slew Rate는 V/μs로 표시된다. 예를 들면, 1V/µs는 1µs로 1V 전압을 변동시킬 수 있다는 의미이다. 위 그림에서 Turn-on과 Turn-off의 Slew Rate는 다음과 같다. Reference : http://www.ktword.co.kr/test/view/view.php?m_temp1=4319 https://www.rohm.co.kr/electronics-basics/opamps/op_what5 2023. 6. 9.
하모닉(고조파, Harmonics) 출처 : https://www.astint.co.kr/default/mp5/mp5_sub2.php?com_board_basic=read_form&com_board_idx=294&&com_board_search_code=&com_board_search_value1=&com_board_search_value2=&com_board_page=11&&com_board_id=2&&com_board_id=2 AST-에이에스티 www.astint.co.kr 하모닉(고조파, Harmonics) 일반적으로 진동과 소음의 분야에서 가장 낮은 주파수 성분을 기본 주파수(또는 1 order)라고 하고, 기본 주파수 성분의 정수배가 되는 성분들을 하모닉(고조파)이라고 말한다. 하모닉파형은 기본 주파수(주로 회전기계의 회전수)를 .. 2023. 5. 31.
CAN ISO-TP Classic CAN 프레임의 경우 페이로드가 8바이트로 제한되고 CAN FD의 경우 페이로드가 64바이트로 제한된다. 이보다 큰 대용량 페이로드를 전송하려면 어떻게 해야할까? ISO-TP (ISO transfer protocol)는 이 문제를 해결하기 위해 ISO 15765-2 표준에 정의된 프로토콜로, 페이로드 데이터 크기를 최대 4095바이트까지 확장한다.ISO-TP의 가장 일반적인 기능은 송신측에서 패킷을 작은 조각(세그먼트)으로 분할하고 수신측에서 다시 재조립해 원래의 데이터로 복원하는 것이다.       ISO TP가 정의하는 Frame type은 다음의 4가지이다. Frame별로 1~3바이트 길이의 PCI(Protocol Control Information).. 2023. 5. 31.
ARINC-429 Word Format ARINC-429 글 : 2023.05.31 - [DSP, MCU/펌웨어공부] - ARINC-429 HTML 삽입 미리보기할 수 없는 소스 ARINC 429 의 data words 는 일반적으로 아래의 5개의 필드로 구성된 32 bit words이다. Parity - 1 bit Sign/Status Matrix (SSM) - 2 bits Data - 19 bits Source/Destination Identifier (SDI) - 2 bits Label - 8 bits 단, 이중에서 Parity bit와 Label 만 필수이고 나머지 비트들은 비표준에서 high resolution data 등을 전송하기 위해 다양한 포맷으로 사용될 수 있다. 연결된 Transmitter는 항상 data words 또는 .. 2023. 5. 31.
ARINC-429 Protocol ARINC ARINC는 미국 소유 비영리단체인  Aeronautical Radio, Inc.의 약자로 여기서 제정된 항공전자 표준이 ARINC 프로토콜이다.항공 기술 분야에서 사용되는 매우 다양한 ARINC 표준이 있으며 ARINC 400, 500, 600, 700, 800 같은 다양한 하위 시리즈들이 있다.  ARINC 429 그 중에서도 ARINC 429는 항공전자 장비간 데이터 전송을 위한 가장 널리 사용되는 표준으로 Mark 33 Digital Information Transfer System(DITS)으로 알려져 있기도 하다.      Network Topology ARINC 429 네트워크는 single transmitter(source)에 receivers(sink)가 연결된 구조로 한 tr.. 2023. 5. 31.
경기도 광주 천진암 계곡 관산등산로공용주차장에 무료주차가 가능하다. 연휴였지만 늦은시간에 와서 그런지 한산했다. 등산로가 있다고는 하는데 보이진 않았다. 2023. 5. 30.
C ] 포인터와 const const는 변수나 함수 매개변수를 선언할 때 사용되는 한정자로 값을 변경할 수 없음을 나타낸다. 변수를 상수로 취급하고자 할 때 유용하며, 많은 곳에서 참조되고 변경되는 것을 원하지 않는 정적인 정보를 보호하는데 사용된다.  포인터 형식과 const 한정자가 같이 쓰일 때 const의 위치에 따라 다음과 같은 차이가 있다.   1. 상수를 가리키는 포인터 : ptr의 역참조를 통해 값을 변경할 수 없지만, ptr이 다른 주소를 가리키도록 변경할 수 있다.const int* ptr     2. 상수 포인터 : ptr 자체를 다른 주소를 가리키도록 변경할 수 없지만, ptr의 역참조를 통해 값을 변경할 수 있다.int* const ptr     3. 상수를 가리키는 상수 포인터 : ptr이 가진 주소를 변.. 2023. 5. 30.
C ] 비트필드와 공용체 사용 #include #include typedef struct { uint32_t bit1 : 1; uint32_t bit2 : 2; uint32_t bit3 : 3; } MyBits; union MyUnion { uint32_t all; MyBits bits; }; int main() { union MyUnion myUnion; myUnion.all = 0; myUnion.bits.bit1 = 1; myUnion.bits.bit2 = 2; myUnion.bits.bit3 = 5; printf("all: %u\n", myUnion.all); printf("bit1: %u\n", myUnion.bits.bit1); printf("bit2: %u\n", myUnion.bits.bit2); printf("bit3.. 2023. 5. 29.
C++ ] Format-Hex 명령어(Hex 덤프) 직접 구현 #include #include #include #include using namespace std; namespace fs = filesystem; void printhex(char *path) { // ios::binary 플래그를 사용해 이진모드로 파일 열기 ifstream file(path, ios::binary); if (!file) { cerr 2023. 5. 29.
시맨틱 버저닝 (Semantic Versioning) 시맨틱 버저닝은 소프트웨어의 버전 번호를 관리하기 위한 규칙 및 방법론이다. 버전 번호를 통해 소프트웨어의 변경 내용과 호환성을 명확히 표현하는 데 그 목적이 있으며, 일반적으로 "MAJOR.MINOR.PATCH" 형식으로 버전 번호를 표기한다. 1. MAJOR (주 버전): 기존 버전과 호환되지 않는 주요 변경사항이 있을 때 증가. 일반적으로 API의 큰 변경이나 하위 시스템의 구조적 변화를 의미하므로 주 버전이 변경되면 이전 버전과의 호환성이 보장되지 않을 수 있다. 2. MINOR (부 버전): 이전 버전과의 하위 호환성을 유지하면서 새로운 기능이 추가되거나 기존 기능이 변경될 때 증가. 주 버전 변경 없이 부 버전이 업데이트되면, 사용자는 새로운 기능을 사용하거나 개선된 기능을 기대할 수 있다. .. 2023. 5. 28.
C++ ] Manipulator와 iomanip 헤더 iomanip 헤더에는 스트림을 제어하기 위한 다양한 Manipulator가 포함되어 있다. 스트림은 C++에서 데이터의 입력 및 출력을 처리하는 방식을 말하며, 이를 위해 "iostream" 라이브러리에서 제공하는 클래스와 함수를 사용하는데, Manipulator는 이러한 스트림을 조작하여 데이터의 포맷팅, 출력 형식을 유연하게 지정할 수 있게 한다. endl; 도 개행 문자를 출력하고 버퍼를 비우는 Manipulator이다. #include #include int main() { int number = 12345; double pi = 3.14159; // setw()를 사용하여 출력 폭(width) 지정 std::cout 2023. 5. 28.