본문 바로가기

분류 전체보기897

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.
C ] isalpha, isupper, islower, isdigit, isxdigit, isalnum, isspace, ispunct, isprint, isgraph, iscntrl, isascii, 함수 구현 int my_isalpha(int c) { return (c >= 'A' && c = 'a' && c = 'A' && C = 'a' && C = '0' && c = 'A' && c = 'a' && c = 0 && c = 32 && c = 0 && c 2023. 3. 25.
C언어 ] leetCode 1689 - Partitioning Into Minimum Number Of Deci-Binary Numbers A decimal number is called deci-binary if each of its digits is either 0 or 1 without any leading zeros. For example, 101 and 1100 are deci-binary, while 112 and 3001 are not. Given a string n that represents a positive decimal integer, return the minimum number of positive deci-binary numbers needed so that they sum up to n. Example 1: Input: n = "32" Output: 3 Explanation: 10 + 11 + 11 = 32 Ex.. 2023. 3. 25.
CAN Bus Load 계산 Bus load = used capacity / Max capcity 로 계산된다. 먼저 worst case의 프레임 bit 수를 알아야하는데, 예를들어 11 bit identifier를 CAN frame을 예시로 계산해보자. Field Name Sub Field Length (bit) Start of Frame SOF 1 Arbitration Field Identifier 11 RTR 1 Control Field IDE 1 R0 1 DLC 4 Data Field D0-D8 8n CRC Field CRC 15 CRC Delimiter 1 Ack Field Ack 1 Ack Delimiter 1 End of Frame EOF 7 여기에다 추가해야 할 것이 있다. 프레임 사이의 intermission 3 b.. 2023. 3. 20.
메모리 인터페이스, SDRAM 인터페이스 메모리 인터페이스 일반적인 메모리의 핀 구성요소는 위의 사진과 같다. Address Pin과 Data Pin으로 구성되어 있고, 칩을 활성화하기 위한CS\(Chip Select 또는 CE)핀이 있고, OE(Output Enable) 신호 핀이 있다. OE는 읽기 동작에 대한 enable 신호이고, WE(Write Enable)핀이 따로 있는 경우도 있다. 만약 OE핀만 있다면 OE가 logic 1일땐 Read, OE가 0일땐 Write로 동작한다. 위 Flash Memory를 예시로 보면 Address Line은 A0~A18 19개가 있고, 양방향으로 쓰이는 Data Line은 DQ0~DQ15 16가 있다. Data Line이 16개라는 건 한번에 16bit(2Byte)를 읽을 수 있는 메모리라는 뜻이고.. 2023. 3. 20.
Fragmentation을 피하기 위한(안전한) UDP payload size HTML 삽입 미리보기할 수 없는 소스 TCP는 누락된 패킷 재전송과 패킷 재정렬 메커니즘이 있는 연결지향(stream-oriented) 프로토콜이기 때문에 단편화가 발생하는 경우 성능 저하가 발생할 순 있지만 단편화로 인한 직접적인 패킷 손실은 발생하지 않는다. 반면 UDP는 연결성이 없고(message-oriented) 안정성을 추구하지 않는 프로토콜로 재전송이나 재정렬 메커니즘이 없기 때문에 패킷이 손실되지 않도록 하려면 단편화를 피해야 한다. HTML 삽입 미리보기할 수 없는 소스 RFC 1122 문서 상 IPv4에서 reassemble 가능한 최소 MTU 권고값을 576 byte로 명시하고 있다. 실제로 네트워크상에 최소 규격만을 만족하는 장비가 있을 가능성을 배제할 수는 없고, 하나의 frag.. 2023. 3. 20.
애니데스크 승인없이 접속하기 암호 설정하면 승인 없이도 암호 입력 후 접속 가능 2023. 3. 19.
Lua 개발환경 구축하기 http://www.lua.org/ The Programming Language Lua www.lua.org 다운로드 압축해제 후 다운로드 폴더에서 다른 폴더로 옮기고 lua.exe 를 lua.exe 로 변경 환경변수 Path에 추가 Visual Studio Code 실행 후 Lua 와 Lua Debug extension 설치 Ctrl+F5 로 실행 2023. 3. 19.
DNS, 보조 DNS, DDNS, nslookup DNS DNS 는 'www.naver.com'과 같은 도메인 주소를 컴퓨터가 인식할 수 있는 '223.130.200.107' 과 같은 IP주소로 변환해주는 시스템이며 이 DNS를 운영하는 서버를 네임 서버라고 한다. 주 DNS가 있고 보조 DNS가 있는데, 통상적으로 주 DNS로 쿼리하다가 주 DNS에 문제가 생기면 그때 보조 DNS가 쿼리를 한다고 알려져 있지만 일부 장비에서는 주 DNS랑 보조 DNS는 의미없고 다 동시에 작동하는데 가장 빠르게 IP정보를 가져온 곳을 채택한다고 한다. DNS서버는 보통 공유기에 등록되어 있어 일반적으로 DHCP 주소를 할당 받을 때 자동으로 DNS 서버 주소도 같이 할당 받게 된다. 통신사별 DNS 서버 주소 기본 보조 KT olleh 168.126.63.1 168... 2023. 3. 19.
TMS320F28388D ] phy 레지스터 읽어 link status 감지하기 lwiplib.c 파일에서 bmsr을검색하면 link status를 감지하는 방법을 알 수있다. 먼저 이더넷 initialization 를 하면 Ethernet_getHandle() 함수 안에서 phy 설정을 하고 있긴한데, 그렇게 그냥 써도 이더넷통신은 되지만 phy 칩을 직접 다루려면 바깥에서 올바른 설정값으로 다시 설정해줄 필요가 있다. #define EPHY_BMSR 0x00000001 // Ethernet PHY Basic Mode Status#define EPHY_BMSR_LINKSTAT 0x00000004 // Link Status//MDIO ConfigurationsEthernet_configureMDIO(Ethernet_device_struct.bas.. 2023. 3. 12.
헬리콥터의 Main Gearbox (MGB) In helicopters, power transfer function from the engine to Main Rotor, Tail Rotor and other necessary accessories is performed by the Main Gearbox, typically known as Transmission as well. The main purpose of a helicopter main gearbox or transmission is to reduce output rpm of the engine to most suitable level for driving the main rotors and tail rotors of a helicopter. For example, a helicopter.. 2023. 3. 10.
변수를 특정 메모리 영역(섹션 또는 주소)에 배치하기 [공개] 특정 영역에 배치하기 MEMORY { // ... CPU1TOCPU2RAM : origin = 0x03A000, length = 0x000800 CPU2TOCPU1RAM : origin = 0x03B000, length = 0x000800 // ... } SECTIONS { // ... MSGRAM_CPU1_TO_CPU2 : > CPU1TOCPU2RAM, type=NOINIT MSGRAM_CPU2_TO_CPU1 : > CPU2TOCPU1RAM, type=NOINIT // ... } #pragma DATA_SECTION(readData, "MSGRAM_CPU1_TO_CPU2") typedef struct { uint32_t u16; float f; } test_t; test_t readData; 특정 주소.. 2023. 2. 28.