본문 바로가기

분류 전체보기879

Python ] struct 모듈 This module converts between Python values and C structs represented as Python bytes objects. Compact format strings describe the intended conversions to/from Python values. The module’s functions and objects can be used for two largely distinct applications, data exchange with external sources (files or network connections), or data transfer between the Python application and the C layer. Funct.. 2023. 3. 31.
Analog Multiplexer/Demultiplexer 아날로그 멀티플렉서(Multiplexer) 및 디멀티플렉서(Demultiplexer)는 다수의 아날로그 입력 신호 중에서 하나를 선택하거나 분배하기 위해 사용되는 IC칩이다. 디지털 멀티플렉서랑 똑같다, 다수의 입력 신호 중에서 하나의 출력 신호를 선택하는 역할을 한다. 다만 신호가 아날로그인 것이다. 입력 신호는 멀티플렉서의 선택 입력에 의해 선택되는데, 선택 입력(Sx Pin)은 이진 형태로 구성된다. 2의 n승 개의 입력이 있는 멀티플렉서는 n개의 선택 입력이 필요하다. 선택 입력을 이용해 하나의 입력을 선택하고 출력으로 전달하므로 멀티플렉서는 다수의 입력 신호를 단일 출력 신호로 변환하는 기능을 수행한다. 반면 디멀티플렉서는 반대로 하나의 입력 신호를 선택 입력을 통해 다수의 출력 신호 중 하나로.. 2023. 3. 31.
CAN FD, TDC (Transmitter Delay Compensation) CAN FD 사용시 Data bitrate 2Mbps까진 괜찮았지만 그 이상으로 고속 통신하려면 CAN FD 컨트롤러에 TDC 설정이 필요하다. transmitter delay compensation (TDC) At bit-rates higher than 1 Mbit/s in the data phase of CAN FD frames the transmitting node has to compensate the TD when comparing its transmitted bits to the delayed received bits. TDC mechanism defines a secondary sample point SSP. When it is used, the transmitter ignores bit e.. 2023. 3. 31.
C++ ] leetCode 1476 - Subrectangle Queries Implement the class SubrectangleQueries which receives a rows x cols rectangle as a matrix of integers in the constructor and supports two methods: 1. updateSubrectangle(int row1, int col1, int row2, int col2, int newValue) Updates all values with newValue in the subrectangle whose upper left coordinate is (row1,col1) and bottom right coordinate is (row2,col2). 2. getValue(int row, int col) Retu.. 2023. 3. 31.
소수점이하 값 정수형으로 얻는법 소수점 이하 값을 정수형으로 얻으려면, 원하는 소수점 자리수만큼 10의 거듭제곱을 곱하고 나머지연산을 하면된다. int main() { float pie = 3.141592; printf("%d.%d", (int)pie, (int)(pie*1000000) % 1000000); return 0; } 다른 예시 byte를 KB 또는 MB로 변환하는건데, a/b의 소수점 이하 둘째자리 까지의 값을 정수형으로 알고 싶으면 a*10^2/b 하면된다. 그 이하는 버림. #include void printSizeInKBorMB(int byte) { int size; int decimal; char unit; if (byte < 1024 * 1024) { // 1MB 미만 size = byte / 1024; decim.. 2023. 3. 31.
NTP 서버에서 시간 받아오기 UTC UTC (Coordinated Universal Time)는 지구상의 시간 표준을 정의하기 위한 국제 표준 시간으로, 국제원자시(TAI)를 기반으로 하되, 지구의 자전 속도 등에 따라 발생하는 차이를 보정하기 위해 윤초(Leap Second)를 삽입하여 보정된다. 국제 원자시란 세슘 원자의 진동 주파수를 기준으로 시간을 계산하며, 세계 각지의 원자 시계들의 평균값을 취하여 UTC가 유지된다. UTC는 24시간을 기준으로 하며, 1시간은 60분으로 구성되고, 1분은 다시 60초로 구성되어 있다. 이러한 시간 단위들은 세계 각지에서 일관되게 사용된다. 아래 Unix Time, Windows Time, NTP time 전부 UTC를 기반으로 한다. Unix Time Unix Time은 컴퓨터 시스템에서.. 2023. 3. 31.
C++ ] 2차원 vector 사용법 1. 생성 및 요소 접근 2차원 벡터는 vector 형태로 생성할 때, 첫 번째 인자에 행의 개수를 넣고, 두 번째 인자에는 열의 개수를 넣는다. 또한, 세 번째 인자로는 2차원 벡터의 모든 요소를 초기화할 수 있는 값을 넣는다. 예를 들어, 위의 코드에서는 0으로 모두 초기화한다. 이렇게 생성한 2차원 벡터는 matrix[i][j]와 같이 2개의 인덱스로 요소에 접근할 수 있다. #include #include using namespace std; int main() { vector matrix(3, vector(3, 0)); matrix[0][0] = 1; matrix[1][1] = 2; matrix[2][2] = 3; for(int i=0; i 2023. 3. 31.
DO-178C 산출물 22종 Output Data according to DO-178C Process Process OutputData Planning Plan for Software Aspects of Certification (PSAC) Software Development Plan (SDP) Software Verification Plan (SVP) Software Configuration Management Plan (SCMP) Software Quality Assurance Plan (SQAP) Software Requirement Standard (SRS) Software Design Standard (SDS) Software Coding Standard (SCS) Development Software Requiremen.. 2023. 3. 31.
FatFs, f_getfree(), f_readdir() 드라이브 여유 공간/사용 공간 확인 The f_getfree function gets number of the free clusters on the volume. FRESULT f_getfree ( const TCHAR* path, /* [IN] Logical drive number */ DWORD* nclst, /* [OUT] Number of free clusters */ FATFS** fatfs /* [OUT] Corresponding filesystem object */ ); Parameters path : Pointer to the null-terminated string that specifies the logical drive. A null-string means the default drive. nclst : Pointer .. 2023. 3. 31.
Weight on Wheels (WoW) Signal Definition Weight on wheels (WoW) switches indicate whether the weight of an aircraft is resting on its wheels. This information reveals whether the aircraft is airborne or on the ground. Air/ground sensing prevents various systems from operating inappropriately on the ground or in flight. It also ensures systems are enabled or disabled as befits the aircraft’s situation. Function Most aircraft .. 2023. 3. 31.
저장장치 클러스터 크기 확인법 diskpart에서 파티션 선택하고 filesystems 입력 2023. 3. 31.
Open/Ground, 28V/Open Discrete 신호는 밸브류 혹은 스위치류 등으로 불연속적인 전기적 신호를 말하여 항공전자 산업에서 Open/Ground, 28V/Open 로 구분된다. 각 신호마다 신호의 안정성을 확보하기 위하여 pull-up, pull-down 처리를 하며, 신호 특성에 따라 항공전자 장비 간 연결이 이루어져야 한다. 각 신호의 안정성 확보를 위한 말단 처리에 대하여도 매칭시켜야 하는데 일부 항공전자 장비의 경우에는 신호의 안정성 확보를 위해 임피던스 매칭 혹은 특정 임피던스 범위를 제시하는 경우도 있다. Open/Ground Open/Ground 신호는 통상적으로 discrete 신호가 open 상태에 있다가 명령이나 상태 천이가 발생하면 discrete 신호가 ground 상태로 변경되는 것을 말한다. 혹은 그.. 2023. 3. 31.
TMS320F28388D ] Ethernet_resetModule() 무한루프 문제 PHY에 공급되는 클락이 잘못되있거나 GPIO 설정이 잘못되어 있으면 CM 쪽에서 Ethernet 초기화시 Ethernet_resetModule() 함수 안에서 hang되는 문제가 있다. 해당 현상 발생시 CPU1쪽 ethernet Pin mux 설정 코드를 살펴보고 주변회로가 컨트롤카드와 동일하게 구성되어있는지 체크하는게 좋다. 참고 : https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1164646/tmdscncd28388d-stop-with-ethernet_resetmodule-in-lwip TMDSCNCD28388D: Stop with Ethernet_.. 2023. 3. 31.
FPGA IP (Intellectual Property) Core FPGA는 프로그래밍 가능한 칩으로, 이를 사용하면 사용자가 필요한 로직을 구현할 수 있지만, 이를 처음부터 설계하는 것은 매우 복잡하며 시간과 비용이 많이 든다. 이때 다른 회사에서 개발한 FPGA IP를 사용하면 개발시간을 단축하고 자신들의 제품을 빠르게 시장에 출시할 수 있다. FPGA IP는 FPGA(Integrated Circuit)에서 사용되는 IP(Intellectual Property) 코어(기술)를 의미하는데, 재사용 가능한 디자인 블록으로 구성된 하드웨어 구성 요소를 말하며, 다양한 기능을 제공하는 FPGA IP들이 있다. 예를 들면, UART, SPI, Ethernet, USB 등의 통신 인터페이스, FFT, DFT, FIR 등의 디지털 신호처리 기능, MPEG-2, H.264 등의 .. 2023. 3. 31.
DO-178C DAL Levels DO-178C "Software Considerations in Airborne Systems and Equipment Certification"의 줄임말로, 항공기 시스템 및 장비에 대한 소프트웨어 인증을 위한 지침을 제공하는 국제 표준이다. DO-178C는 FAA(Federal Aviation Administration) 및 EASA(European Aviation Safety Agency) 등 국제 항공 단체에서 인증 요구 사항을 충족하는 데 사용된다. 이 표준은 항공기 내부의 모든 소프트웨어에 대한 개발, 검증 및 인증 단계를 포함하며, 항공기의 안전성 및 신뢰성을 보장하기 위한 엄격한 절차를 정의한다. DAL(Deployment Assurance Level) 항공기 내부 소프트웨어에서 발생할 수.. 2023. 3. 31.
C++ ] vector 사용법 vector 사용법 HTML 삽입 미리보기할 수 없는 소스 1. 기본 생성자: 요소의 타입을 지정하지 않으면 빈 벡터가 생성 std::vector vec; // 빈 벡터 생성 2. 초기화 리스트: 중괄호를 이용해 초기 값을 지정 std::vector vec = {1, 2, 3}; // 값이 {1, 2, 3}인 벡터 생성 3. 크기 지정: 생성 시, 초기값이 지정된 요소의 개수를 지정 std::vector vec(5); // 크기가 5이고 모든 값이 0인 벡터 생성 std::vector vec(5, 2); // 크기가 5이고 모든 값이 2인 벡터 생성 4. 복사 생성자: 다른 벡터를 복사하여 생성 std::vector vec1 = {1, 2, 3}; std::vector vec2(vec1); // vec1.. 2023. 3. 31.
TMS320F28388D ] CM코어에 lwIP 포팅 포팅은 아래 경로의 예제를 참고해 진행한다. C:\ti\c2000\C2000Ware_x_xx_xx_xx\libraries\communications\Ethernet\third_party\lwip\examples\enet_lwip_udp lwip 라이브러리는 아래 경로에 있다. 이 경로를 그대로 쓰진 않고 폴더를 통째로 복사해서 프로젝트안에 가져온다. C:\ti\c2000\C2000Ware_x_xx_xx_xx\libraries\communications\Ethernet\third_party\lwip 가져온 후 #include search path에 워닝이 안뜰 때까지 다음과 같이 추가해준다. 예제 프로젝트 참고해 스택사이즈도 늘려주고. 추가로 필요한 파일이 f2838xif.c, lwiplib.c, lwip.. 2023. 3. 31.
C언어 ] 프로그래머스 Lv.2 - 피보나치 수 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 2 이상 100,000 이하인 자연수입니다. 입출력예 n return 3 2 5 5 입출력 예 설명 피보나치수는 0번째부터 0, 1, 1, 2, 3, 5.. 2023. 3. 31.
C언어 ] 프로그래머스 Lv. 2 - N개의 최소공배수 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 제한 사항 arr은 길이 1이상, 15이하인 배열입니다. arr의 원소는 100 이하인 자연수입니다. 입출력 예 arr result [2,6,8,14] 168 [1,2,3] 6 #include #include #include static int gcd(int a, int b) { while .. 2023. 3. 31.
SRR→PDR→CDR→TRR→PCA 1. SRR/SFR, system requirement review/system functional review 고객의 요구사항을 항공기 시스템 요구도로 할당하고, 항공기에 할당된 시스템 요구도가 고객의 요구를 충족할 수 있도록 적절하게 할당되며, 시스템에 결함이 없는지, 고객의 요구사항에 누락된 사항은 없는지에 대하여 검토하는 과정을 말한다. SRR 단계에서는 고객의 요구사항에 대하여 항공기 시스템에 요구도가 적절하게 할당되고, 항공기 시스템의 계통 시스템까지 요구도가 적절하게 할당되었으며, 실현 가능성이 있는지를 검토한다. SRR 단계에서는 고객의 요구사항에 맞게 conceptual design이 수행되는 단계이며, 이에 대한 기능 할당을 구체화하고 검토하는 과정은 SFR에서 수행된다. 2. PDR,.. 2023. 3. 31.
C++ ] leetCode 2391 - Minimum Amount of Time to Collect Garbage You are given a 0-indexed array of strings garbage where garbage[i] represents the assortment of garbage at the ith house. garbage[i] consists only of the characters 'M', 'P' and 'G' representing one unit of metal, paper and glass garbage respectively. Picking up one unit of any type of garbage takes 1 minute. You are also given a 0-indexed integer array travel where travel[i] is the number of m.. 2023. 3. 25.
C++ ] STL 과 컨테이너 HTML 삽입 미리보기할 수 없는 소스 C++ 언어에서 사용되는 기본 라이브러리로, C++ 컴파일러에 의해 제공된다. 표준 라이브러리는 std 네임스페이스 안에 있는 여러 클래스와 함수를 포함하, STL은 표준 라이브러리의 일부이다. HTML 삽입 미리보기할 수 없는 소스 STL(Standard Template Library)은 C++ 표준 라이브러리의 일부로서, 데이터 구조와 알고리즘을 구현한 템플릿 클래스들의 집합이다. STL은 C++ 개발자들이 높은 수준의 추상화를 이용하여 복잡한 작업을 더 간결하게 표현할 수 있도록 돕는데, 크게 아래와 같은 세 가지 부분으로 구성된다. 1. 컨테이너(Container) 데이터 구조를 구현한 클래스의 집합. 이를 통해 개발자들이 데이터를 쉽게 저장하고 관리할 수 .. 2023. 3. 25.
C++ ] 프로그래머스 Lv. 2 - 이진 변환 반복하기 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 입출력 예.. 2023. 3. 25.
범위기반 for문, 문자열에서 문자 반복 C++의 범위기반 for문은 C#에서의 foreach와 같으며 사용법은 아래와 같다. for(data type elem : data list) { // do something with elem variable } array, vector, string 등 순회가 가능한 데이터 리스트는 범위기반 for문을 사용해 반복할 수 있다. 일반 for문에 비해 안전하고 간단하지만 index 정보가 없다는 단점이 있다. 문자열에서 문자 반복하기 string 클래스의 length(), size() 메소드를 사용해 일반 for문을 돌릴 수 있지만 아래와 같이 범위기반 for문을 쓸 수도 있다. for (char c : s) for (char& c : s) 위 두 for문의 차이는 위에 것은 s의 element를 c에 복.. 2023. 3. 25.
Python ] import (상위/하위/동일 폴더, 다른 경로) 모듈 가져오기(import) 파이썬의 표준라이브러리와 아나콘다를 설치하며 같이 설치된 라이브러리들은 환경변수 path에 추가되었기 때문에 따로 경로 지정없이 import 할 수 있으며 동일 폴더 내에 있는 파일도 마찬가지다. 예를 들어, 현재 작업 폴더 내에 module.py라는 파일이 있고 이를 import하려면 다음과 같은 방법을 사용할 수 있다. import 모듈 import 모듈 as 별칭 모듈에서 필요한 함수 또는 클래스만 import 하기 from 모듈이름 import 함수이름 from 모듈이름 import 클래스이름 from math import pi, sqrt 상위 폴더 모듈 import 하기 from .. import 모듈 하위 폴더 모듈 import 하기 from 폴더명 import 모.. 2023. 3. 25.
C언어, C++ ] 프로그래머스 Lv. 2 - 올바른 괄호 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 s answer "()()" true "(())()" true ")()(" false "(()(" false 입출력 예 설.. 2023. 3. 25.
C언어 ] 프로그래머스 Lv. 2 - 최솟값 만들기 문제 설명 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21.. 2023. 3. 25.
C++ ] leetCode 1769 - Minimum Number of Operations to Move All Balls to Each Box You have n boxes. You are given a binary string boxes of length n, where boxes[i] is '0' if the ith box is empty, and '1' if it contains one ball. In one operation, you can move one ball from a box to an adjacent box. Box i is adjacent to box j if abs(i - j) == 1. Note that after doing so, there may be more than one ball in some boxes. Return an array answer of size n, where answer[i] is the min.. 2023. 3. 25.
Python ] if __name__ == '__main__': if __name__ == '__main__': 은 왜 필요할까? 파이썬 코드를 모듈 형태로 가져올 때와, 스크립트 형태로 직접 실행할 때를 구분하기 위한 용도로 사용된다. 파이썬 코드를 작성할 때, 일반적으로 함수나 클래스를 정의한 후 다른 코드에서 이를 임포트하여 사용한다. 이 때, 모듈로 작성된 코드가 다른 코드에서 임포트되었을 때에는 그 모듈의 __name__ 속성 값은 모듈의 이름이다. 하지만, 직접 실행할 때에는 __name__ 속성 값이 '__main__'으로 지정된다. 따라서, if __name__ == '__main__': 구문 아래 현재 스크립트가 직접 실행될 때에만 실행되는 코드 블록을 작성하면, 이 구문을 사용하여 스크립트를 모듈 형태로 가져올 때와, 직접 실행할 때 각각 다른 동작.. 2023. 3. 25.
C ] atoi 함수 구현 #include int myatoi(char* str) { int sign = 1; int sum = 0; while (*str == ' ') { str++; } if (*str == '-') { sign = -1; str++; } while (*str) { int num = *str - '0'; // 0x30 if (num >= 0 && num 2023. 3. 25.