본문 바로가기

임베디드 개발304

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.
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.
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.
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)가 연결된 구조로 한 transmit.. 2023. 5. 31.
Vector CANdb++ editor 아래 주소에서 다운로드 https://www.vector.com/int/en/download/candb-31-sp3/ 공식 매뉴얼 중국사이트이긴 한데 자세히 나와있는 매뉴얼 https://blog.csdn.net/qfmzhu/article/details/111403266 【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC_【dbc专题】-11_汽车电子助手的博客-CSDN博客 目录 0关键字/术语描述 1 启动“CANdb++ Editor” 2 创建一个新的DBC(CANdb network file (Data Base for CAN)) 3 创建CAN网络当中的Network nodes网络节点 4 创建CAN网络当中的Message消息 5 创建Message消息中Signals信 blog.csdn.net 2023. 5. 14.
CRC-16-CCITT CRC-16-CCITT의 다항식(Polynomial)은 아래와 같다. XMODEM, YMODEM 등에 쓰이는 방식이다. 이 다항식의 16진수 표현 CRC-16-CCITT 함수 uint16_t UpdateCRC16(uint16_t crc_in, uint8_t byte) { uint32_t crc = crc_in; uint32_t in = byte | 0x100; do { crc 2023. 5. 7.
CRC-32 CRC (Cyclic Redundancy Check) 는 데이터 전송 과정에서 오류를 검출하거나 파일의 무결성을 검증하기 위한 방법으로, 그 과정에서 여러 종류의 다항식이 쓰일 수 있는 데 가장 널리 사용되는 CRC 다항식은 CRC-16-CCITT와 CRC-32이다. CRC 다항식 종류 : https://en.wikipedia.org/wiki/Cyclic_redundancy_check 그 중 CRC-32의 다항식(Polynomial)은 아래와 같다. 이 다항식을 16진수로 표현한게 0x04C11DB7이고, reverse한 값이 0xEDB88320이다. 다항식을 16진수로 표현하는 방법은 먼저 x의 차수에 해당하는 비트에 1을 쓴다. 나머지 비트는 0으로 한다. 그럼 바이너리로 아래처럼 되는데 이걸 31번.. 2023. 5. 7.
TMS320F28388D ] CM, C28x 코어 진입점으로 점프 CM 먼저 CM코어의 경우는 Application 실행을 위한 Entry Point는 0x200001 이고 해당 주소로 점프하면 된다. https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/923512/tms320f28388d-cm-core-code-jump-to-execution-giving-meets-error-asking-for-how-to-do TMS320F28388D: CM core code jump to execution giving meets error, asking for how to do - C2000 microcontrollers forum - .. 2023. 5. 7.
Online CRC 계산 사이트 CRC 계산 사이트 https://crccalc.com/?crc=01020304&method=crc32&datatype=hex http://www.sunshine2k.de/coding/javascript/crc/crc_js.html https://www.lammertbies.nl/comm/info/crc-calculation 파일 CRC 계산 사이트 https://emn178.github.io/online-tools/crc32_checksum.html https://simplycalc.com/crc32-file.php 2023. 5. 7.
TMS320F28388D ] CSS에서 bin 파일 생성하는 법, filling a hole with 0xFF not 0x00 프로젝트를 빌드하면 기본적으로 .out 실행파일이 나오는데 바이너리 파일을 생성하기 위해서는 TI에서 제공하는 유틸을 사용하면 된다. 아래 경로에 있는 툴이고, 이걸 ccs의 post build step 기능으로 빌드와 동시에 bin 파일이 생성되게 할 수 있다. C:\ti\ccs[Version No]\ccs\utils\tiobj2bin 프로젝트 우클릭 - Build - Steps - Post-build steps 해당 부분에 아래 문구를 적는다. C28x 코어 "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd200.. 2023. 4. 23.
TMS320F28388D ] 라이브러리 램에 복사해 실행 Flash API 라이브러리를 램에 올려서 실행할 필요가 있다. 단순히 time critical 코드를 고속으로 사용하려는 것 뿐만은 아니고 예를 들어 부트로더를 만들 때 필요하다. Application이 코드영역에서 한창 동작하고 있는데 이 코드영역을 중간에 erase하려고 하면 프로그램이 halt될 것이 아닌가. 하지만 전부 Ram에서 동작하는 함수를 사용하면 코드영역을 침범해 조작해도 halt 되지 않는다. 근데 Flash API를 호출해서 사용하는 copyData()라는 사용자정의 함수가 있다고 하면 이걸 Ram에 올린다고 다 되는 게 아니라, 그 안에 있는 모든 함수들이 램에서 동작해야하고 사용하는 버퍼도 램에 올라간 데이터여야 한다. 아래와 같은 과정을 거치지 않고 Flahs API를 사용한다.. 2023. 4. 22.
TMS320F28388D ] Flash API 사용 일단 아래 경로에 있는 FlashAPI 라이브러리를 복사해 프로젝트 안에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\lib 그리고 아래 경로의 FlashAPI를 사용하기 위한 헤더가 모여있는 폴더도 복사해서 프로젝트에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\include\FlashAPI 그리고 Include search path에 추가해준다. 복사해서 가져오지 않아도 c2000ware 폴더 내 경로를 추가하면 되긴하지만 선호하지 않는방법이다. 이제 아래 헤더를 include하면 FlashAPI를 가져다 쓸 수 있다. #include ".. 2023. 4. 20.
TMS320F28388D ] TI 제공 부트로더 사용해서 CPU2, CM application 다운로드하기 사용방법은 README.txt 파일에서 찾을 수 있다. When the application starts, the serial connection is with the SCI module which is owned by CPU1. Only commands designated for CPU1 are acceptable at this point before booting CPU2.  If a CPU2 command is selected, the application asks the user for a different option.  After booting to CPU2, either with "Run CPU1 Boot CPU2" or "Reset CPU1 Boot CPU2," CPU.. 2023. 4. 19.
TMS320F28388D ] TI 제공 부트로더 & Flash programmer 툴 사용하기 관련 문서   TI가 ROM에 마스킹 해둔 부트로더 중 SCI boot와 Flash programmer를 사용해 어플리케이션을 program 해보자.   전체 Flow 요약해보면 Boot Mode를 SCI Boot로 바꾸고 SCI ROM bootloader를 사용해 flash kernel 코드를 통째로 램에 복사해 올힌다. 그리고 RAM에 올린 flash kernel을 실행하여 User Application을 Flash에 Program한다.     먼저 내장 SCI bootloader를 사용하기 위해 bootmode를 SCI/Wait Boot로 변경해야 한다.   만약 컨트롤 카드를 쓰고 있다면 S2 스위치로 bootmode를 변경하면 되고, 아닌 경우 해당 b.. 2023. 4. 18.
STM32 ] TFTP Bootloader Board : STM32F429ZI (Nucleo 144) STM32CubeIDE : version 1.10.1 Firmware Package : FW_F4 V1.27.1 아래 예제 기반 C:\Users\J\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_IAP 일단 위 경로에서 flash_if.h, flash_if.c tftpserver.h, tftpserver.c 파일을 가져온다. main.h에는 다음과 같이 USER APPLICATION 에서 사용하는 플래시 주소가 선언되 었다. 용어를 어디에선 Page라고 쓰고 어디선 Sector라고 하는데 둘은 같은말이다. #define USER_.. 2023. 4. 16.
STM32 ] TFTP Server 파일 송수신 + USB Host MSC int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART3_UART_Init(); MX_FATFS_Init(); MX_USB_HOST_Init(); MX_LWIP_Init(); tftpd_init(); while (1) { MX_LWIP_Process(); MX_USB_HOST_Process(); } } USB와 랜케이블 연결 아래경로에서 tftpd64 를 다운받아 설치한다. https://bitbucket.org/phjounin/tftpd64/downloads/ phjounin / tftpd64 / Downloads — Bitbucket For large uploads, we recommend using the API. Ge.. 2023. 4. 15.
STM32 ] TFTP Server Board : STM32F429ZI (Nucleo 144) STM32CubeIDE : version 1.10.1 Firmware Package : FW_F4 V1.27.1 아래 경로 예제의 tftpserver.h, tftpserver.c 참조 C:\Users\jo\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_TFTP_Server STM32보드를 TFTP 서버로 운용하며 클라이언트의 요청을 받아서, 클라이언트로부터 이더넷을 통해 파일을 수신해 보드에 연결된 USB MSC에 저장 또는 USB에 저장된 파일을 이더넷을 통해 클라이언트에게 송신 순서대로 살펴보자. void tftpd_init(.. 2023. 4. 14.
STM32 ] USB Host MSC Board : STM32F429ZI (Nucleo 144)STM32CubeIDE : version 1.10.1Firmware Package : FW_F4 V1.27.1     Clock Configuration  USB 48MHz 클락을 설정하기 위해 HSE를 사용했다.          USB_OTG_FS 설정    보드가 Host 모드로 동작하게 설정해준다. USB Flash Drive는 자체전원이 없으니 VBUS를 통해 전원을 공급해주어야 한다.    그래서 USB_ID핀과, USB_SOF핀은 비활성화 됐는데, USB에서 ID핀은 On-The-Go (OTG) 기능을 지원하기 위해 사용되므로 호스트 또는 디바이스 기능만 가진 USB장치를 사용하는 경우 ID핀은 필요하지 않다. 그리고 SOF 타이밍 동기.. 2023. 4. 13.
TFTP 프로토콜 TFTP 프로토콜 HTML 삽입 미리보기할 수 없는 소스 Trivial File Transfer Protocol의 약자로, 인터넷 프로토콜 스위트(IP Suite)*의 일부로서 파일 전송 프로토콜이다. TFTP는 TCP/IP 프로토콜 스택을 기반으로 하며, 그 중 UDP(User Datagram Protocol)를 이용하여 작동한다. 기본적으로 UDP 포트 69번을 사용하며, 전송할 파일의 이름과 위치를 포함하는 요청 메시지를 TFTP 서버에 보낸다. 이후 TFTP 서버는 파일을 찾아서 클라이언트에게 전송하는데, 전송 과정에서는 오류 검사와 재전송을 처리하는 기능이 내장되어 있다. TFTP는 파일 전송 속도가 느리고 오류 처리 기능이 FTP와 비교해 상대적으로 취약하다는 단점이 있지만, 작은 파일을 빠르.. 2023. 4. 10.
비글본 블랙 시작하기 같이온 USB케이블을 통해 비글본 블랙의 mini USB P4포트와 PC를 연결한다. 비글본 블랙은 eMMC에 데비안 계열 리눅스 배포판이 저장된 채로 출고되기 때문에 USB포트를 통해 전원이 공급되면 저장된 운영체제 이미지로 부팅된다. 부팅이 되고나면 조금 후 FAT 파일시스템의 드라이브가 잡힌다. 안에 들어가 START.htm 문서를 확인하면 처음 시작하는 사람들을 위한 가이드를 볼 수 있다. 아래 경로로 들어가면 Ethernet over USB interface 를 사용하기 위한 드라이버 파일이 있다. \Drivers\Windows 서명되지 않은 드라이버라 설치 실패했다. Win + I 키를 눌러 Windows 설정 ↓ 업데이트 및 보안 ↓ 복구 ↓ 고급시작 옵션 ↓ 지금 다시 시작 ↓ 재부팅 후 .. 2023. 4. 9.
비글본 블랙 ] 전원 공급 방법 1. USB 포트를 통해 전원을 공급하는 방법 The board can be powered by the PC via the provided USB port. In this configuration, The board is accessed either as a USB storage drive or via the browser on the PC. All the power for the board is provided by the PC via the USB cable. In some instances, the PC may not be able to supply sufficient power for the board. In that case, an external 5VDC power supply can be u.. 2023. 4. 9.
비글본 블랙 BeagleBone Black(BBB) 공식 홈페이지 : https://beagleboard.org/ System Reference Manual : https://docs.beagleboard.org/latest/boards/beaglebone/black/ Beaglebone Black은 텍사스 인스트루먼트(Texas Instruments)에서 설계한 유명 싱글 보드 컴퓨터(SBC)이다. TI Sitara AM335x 시스템온칩(SoC)을 기반으로 하며, 1GHz에서 작동하는 ARM Cortex-A8 CPU를 포함하고 있다. 개발자는 BeagloeBone Black을 통해 저비용으로 임베디드 리눅스 개발을 시작할 수 있고 규모있는 커뮤니티에서 다양한 지원을 받을 수 있다. 또한 BeagleBone Black은 오픈 소스 하드웨어라서 Beagl.. 2023. 4. 9.
STM32 ] 유저 버튼 고장 수리하기 보드의 유저 버튼이 고장나서 집에 돌아다니는 스위치로 교체해보았다. 기존에 남아있던 버튼 틀은 니퍼로 짤라주고 납땜이 잘되게 하기 위해 단자 접촉부위에 사포질을 하거나 칼집을 내준다. 미리 납을 녹여서 덮어두고 그 위에 솔더링 페이스트 묻힌 버튼을 올려놓고 다시 납땝한다. 예상대로 잘 작동한다. 2023. 4. 9.
SoC와 MCU의 차이 SoC(System-on-a-Chip)와 MCU(Microcontroller Unit)는 모두 하드웨어와 소프트웨어의 기능을 모두 포함하는 집적회로이지만 둘은 목적과 구성, 사용 분야 등에서 차이가 있다. SoC는 CPU, GPU, 메모리, 입출력(I/O) 인터페이스, 네트워크, 그래픽 처리 장치 등을 포함하고 있으며, 대규모 응용 프로그램을 수행할 수 있는 미니어처화된 컴퓨터 시스템이다. 대표적으로 모바일 기기, 스마트폰, 태블릿, IoT 디바이스, 자동차 시스템 등에서 사용된다. 반면에 MCU는 CPU, 메모리, 입출력(I/O) 인터페이스, 타이머, 카운터, ADC 등의 기능을 포함하고 있으며, 대개 저전력, 실시간 제어, 데이터 수집 및 처리와 같은 임베디드 시스템에서 사용된다. 즉, SoC는 주로.. 2023. 4. 9.
SBC(Single-Board Computer) SBC는 Single-Board Computer의 약자로, 컴퓨터의 모든 기능이 하나의 PCB(Printed Circuit Board)에 탑재된 컴퓨터를 말한다. SBC는 일반적인 데스크탑 컴퓨터와 비교하여 크기가 작고 저전력이며, 대개 리눅스나 다른 임베디드 운영체제를 사용하한다. 비교적 저렴한 가격과 다양한 입출력(I/O) 핀을 가지고 있어 다양한 외부 디바이스 및 센서와의 연결이 용이하여 개인용 컴퓨터, 교육 및 학습용, 임베디드 시스템 등 다양한 분야에서 쓰인다. 일반적으로 SBC(Single-Board Computer)에는 SoC(System-on-a-Chip)가 탑재된다. SoC는 단일 실리콘 칩에 CPU, GPU, 메모리, 입출력(I/O) 인터페이스, 네트워크, 그래픽 처리 장치 등을 포함하.. 2023. 4. 9.
Analog Multiplexer/Demultiplexer 아날로그 멀티플렉서(Multiplexer) 및 디멀티플렉서(Demultiplexer)는 다수의 아날로그 입력 신호 중에서 하나를 선택하거나 분배하기 위해 사용되는 IC칩이다. 디지털 멀티플렉서랑 똑같다, 다수의 입력 신호 중에서 하나의 출력 신호를 선택하는 역할을 한다. 다만 신호가 아날로그인 것이다. 입력 신호는 멀티플렉서의 선택 입력에 의해 선택되는데, 선택 입력(Sx Pin)은 이진 형태로 구성된다. 2의 n승 개의 입력이 있는 멀티플렉서는 n개의 선택 입력이 필요하다. 선택 입력을 이용해 하나의 입력을 선택하고 출력으로 전달하므로 멀티플렉서는 다수의 입력 신호를 단일 출력 신호로 변환하는 기능을 수행한다. 반면 디멀티플렉서는 반대로 하나의 입력 신호를 선택 입력을 통해 다수의 출력 신호 중 하나로.. 2023. 3. 31.