728x90

2024/10 56

[C언어] memcpy() 함수

memcpy() 함수는 C 프로그래밍 언어에서 메모리 블록을 복사하는 함수이다. 원본 메모리 블록에서 지정한 크기만큼의 데이터를 목적지 메모리 블록으로 그대로 복사할 때 사용된다. 사용법#include void *memcpy(void *dest, const void *src, size_t n); 매개변수dest : 데이터를 복사할 목적지 메모리 블록의 시작 주소이다.src : 복사할 원본 메모리 블록의 시작 주소이다.n : 복사할 바이트 수를 나타낸다.반환값복사된 목적지 메모리 블록의 시작 주소(dest)를 반환한다. 예제1)#include #include int main() { char src[] = "Hello, World!"; char dest[20]; // src 배열의 내용을 d..

C언어 2024.10.10

[C언어] memset() 함수

memset() 함수는 C 프로그래밍 언어 메모리의 특정 영역을 원하는 값으로 초기화(세팅)할 때 사용되는 함수이다.이 함수는 동적 메모리 할당이 아닌 정적 메모리 할당 또는 자동 메모리 할당이라고 부른다.함수의 이름 보면 뜻을 알 수 있다. memory + setting 메모리를 특정 값으로 세팅한다. 사용법#include void * memset(void* ptr, int value, size_t num); 매개변수ptr : 초기화할 메모리의 시작 주소이다.value : 메모리에 설정한 값이고, unsigned char로 변환되어 사용된다. 0~255 사이의 값을 넣으면 된다.num : 초기화할 바이트 수이다. 메모리에서 몇 바이트를 이 값으로 채울지 지정한다.반환값초기화된 메모리의 포인터를 반환한다..

C언어 2024.10.10

[C언어] realloc() 함수

realloc() 함수는 C 프로그래밍 언어에서 동적 메모리를 할당하기 위해 사용되는 함수이다. 이 함수는 표준 라이브러리  에 정의되어 있다. C언어에서 동적으로 할당한 메모리는 free함수를 이용하여 부분적으로 해제할 수 없다. 대신 realloc 함수를 이용하여 할당한 메모리의 크기를 조절할 수 있다. 사용법#include void* realloc(void* ptr, size_t new_size); 매개변수 ptr : 크기를 변경할 기존 메모리 블록의 포인터이다. 만약 이 값이 NULL이면, realloc은 malloc과 같은 방식으로 새로운 메모리 블록을 할당한다.new_size : 새로 요청하는 메모리 블록의 크기(바이트 단위)이다.기능크기 조정: 현재 할당된 메모리 블록의 크기를 new_siz..

C언어 2024.10.08

[C언어] calloc() 함수

calloc() 함수는 C 프로그래밍 언어에서 동적 메모리를 할당하기 위해 사용되는 함수이다. 이 함수는 표준 라이브러리 에 정의되어 있다.  사용법#include void* calloc(size_t num, size_t size); 매개변수num : 할당할 요소의 개수이다.size : 각 요소의 크기(바이트 단위)이다.기능 calloc은 num개의 요소를 각 size바이트 크기로 할당하여, 총 num * size 바이트의 메모리를 요청한다.할당된 메모리의 모든 바이트는 0으로 초기화된다.반환값성공적으로 메모리를 할당하면, 할당된 메모리 블록의 포인터를 반환한다.메모리 할당에 실패하면 NULL을 반환한다. calloc는 malloc과 다르게 메모리를 할당하며 0으로 초기화한다. 메모리 해제#includ..

C언어 2024.10.08

[C언어] malloc() 함수

malloc() 함수는 C 프로그래밍 언어에서 동적 메모리를 할당하기 위해 사용되는 함수이다. 이 함수는 표준 라이브러리 에 정의되어 있다. 메모리 동적 할당이란메모리 동적 할당(Dynamic Memory Allocation)은 프로그램 실행 중에 필요한 메모리를 요청하고 할당받는 과정을 의미한다.이 방식은 프로그램이 시작될 때 고정된 크기의 메모리를 미리 할당하는 정적 할당과는 달리. 실행 중에 필요에 따라 메모리를  동적으로 요청하고 해제할 수 있다. 사용법#include void* malloc(size_t size) 매개변수 size : 할당한 메모리의 크기(바이트 단위)를 지정한다.반환값성공적으로 메모리를 할당하면, malloc은 해당 메모리 블록의 포인터를 반환한다.메모리 할당에 실패하면 NUL..

C언어 2024.10.08

BIOS / BootLoader란?

BIOS란BIOS(Basic Input Output System)는 부팅 과정에서 하드웨어 구성 요소를 초기화하고 테스트하는 등 컴퓨터의 기본 입출력 신호를 제어하는 펌웨어의 일종이다. BIOS는 컴퓨터의 메인 보드에 있는 ROM(Read Only Memory)에 저장되며 일반적으로 컴퓨터 전원이 켜질 때 실행되는 첫 번째 소프트웨어이다.컴퓨터에 연결된 키보드, 램, 디스크 등의 하드웨어가 올바르게 동작하는지 테스트나 초기화를 진행하는 POST(Power On Self Test), 운영 체제 로드를 담당하는 부트 로더를 찾아 로드한다.BIOS 특징저장 위치: BIOS는 ROM, 플래시 메모리, 또는 EEPROM 같은 읽기 전용 메모리에 저장되어 있으며, 사용자가 쉽게 수정할 수 없다. 이는 BIOS의 안..

CS 2024.10.07

JTAG / J-LINK란?

JTAG와 J-Link는 임베디드 시스템 개발에서 사용되는 하드웨어 디버깅과 보드 테스트를 위한 표준 인터페이스이며, J-Link는 이를 지원하는 디버거/프로그래머 장치이다. JTAGJoint Test Action Group의 약자로, 임베디드 시스템 개발 시에 사용되는 디버그 장비이다.JTAG의 작동 원리JTAG 인터페이스는 기본적으로 직렬 데이터 통신을 통해 작동한다. 다음은 JTAG 작동 방식의 기본 개념이다.TAP (Test Access Port):JTAG 시스템의 핵심 요소로, JTAG 디버거와 연결된 모든 장치의 접근점을 제공한다.TAP는 특정 상태 머신을 사용하여 JTAG 장치와 통신한다.상태 머신:JTAG 장치는 TAP를 통해 여러 상태를 전환하며 작동한다. 각 상태는 특정 기능을 수행하며..

CS 2024.10.07

CRC에 대하여

CRC(Cyclic Redundancy Check, 순환 중복 검사)는 오류 검출 기법 중 하나로, 데이터 전송 중 발생할 수 있는 전송 오류를 탐지하기 위해 사용된다. CRC는 송신 측에서 데이터에 체크섬(checksum)을 붙여, 수신자가 데이터를 검증할 수 있도록 한다. CRC의 동작 원리CRC는 생성 다항식(generator polynomial)을 이용한 다항식 나눗셈에 기반하여 오류를 검출한다. 전송하고자 하는 데이터 비트를 다항식으로 표현하고, 이를 미리 정해진 생성 다항식으로 나누어 나머지 값을 계산한다. 이 나머지 값은 CRC 코드로서 전송 데이터와 함께 첨부되며, 수신 측은 동일한 생성 다항식을 사용해 데이터의 무결성을 검증한다. CRC-32CRC-32는 가장 널리 사용되는 CRC 유형 ..

CS 2024.10.07

FlexRay에 대해서

FlexRay는 고속 데이터 통신을 위해 설계된 네트워크 프로토콜입니다. FlexRay의 특징10Mbps 속도를 지원한다.이중 네트워크 구조를 가져 하나의 채널이 실패해도 다른 채널이 정상적으로 동작한다.타임 트리거드 : 특정 시간에 데이터가 전송되는 구조이다.이벤트 트리거드 : 이벤트 발생 시 데이터를 전송하는 방식이다.고정된 시간 슬롯을 사용하여 대역폭을 효과적으로 활용할 수 있다. FlexRay의 토폴로지 순서대로 멀티드롭 버스, 스타 네트워크, 하이브리드 네트워크이다.멀티드롭 버스CAN, LIN과 동일하다.여러 ECU들이 단일 네트워크 케이블에 연결되어 있다.네트워크 끝엔 터미네이터 저항기가 있어서, 신호 반항 문제를 해결한다.스타 네트워크FlexRay 표준은 중앙 활성 노드에 개별 연결되는 스타..

자동차-통신 2024.10.02

TurtleBot3 실습-2

실습-1에서는 터틀봇을 움직여보고 Rviz2에서 로봇을 불러와 동작을 시킨 뒤 Gazebo 환경에서도 같이 움직이는 것을 보았다.이번에는 맵을 라이다로 학습하여 장애물을 인지해서 목표지점을 정하였을 때 길을 찾는 작업을 해보도록 하겠다. 실습환경은 동일하게 Ubuntu 20.04, ros foxy에서 진행된다. Nav_simulation# Terminal 1# TurtleBot3 준비ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py# Terminal 2# 매핑ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True# Terminal 3# 내비게이션 ros2 launch t..

ROS 2024.10.02
728x90