반응형 IT 톺아보기/이런저런 공부17 C 프로그램의 메모리 이해 메모리 할당 유형: Static Memory allocation: 'intx;' 또는 'intar[10];'와 같은 변수를 선언하면 컴파일 시 자동으로 해당 변수의 메모리가 할당됩니다. 이 변수들의 크기와 수명은 고정되어 프로그램이 시작되는 시점을 알 수 있습니다. Automatic Memory Allocation: 함수에서 이런 일이 발생합니다. 함수가 호출되면 로컬 변수가 생성되고 함수가 종료되면 이 변수들이 파괴됩니다. 보통 스택이라는 메모리 영역에서 시스템의 런타임 환경에 의해 처리됩니다. C의 메모리 레이아웃: Stack: 자동변수(함수 파라미터, 로컬변수 등)를 저장하는 곳입니다. 크기가 제한되어 있습니다. Heap: 동적 메모리 할당에 사용되는 메모리 풀이 더 큽니다. 스택과 달리 크기가 고.. 2024. 1. 29. Naver map API를 이용하여 네이버 지도를 화면에 띄우기 페이지를 구성하면서 지도 API를 이용하여 무언가를 만들면 재밌는게 있지 않을까?하고 naver API를 이용해 페이지에 네이버 지도를 띄워보는 코드를 구성해보았다. 해당 작업을 수행하는 데 있어서 적어 놓으면 좋겠다는 생각이 들어 글을 남겨 본다. 계정 등록 Naver API를 사용하기 위해서는 가장 면저 API 사용에 대한 신청을 진행 해야한다. 아래의 사이트에 들어가 가장 아래로 스크롤하면 Open API 이용 신청버튼이 있는데 이를 클릭하여 클라이언트 아이디를 발급 받는다. 네이버 지도 API 홈페이지 클라이언트 아이디 발급 이제 우리는 클라이언트 아이디를 발급 받는데 대다수가 공공기관 및 금융기관이 아니기에 콘솔의 AI·Application Service > AI·NAVER API > Appli.. 2024. 1. 8. UART protocol UART란? universal asynchronous receiver-transmitter의 약자로 설정된 데이터 포맷과 전송 속도로 범용적으로 비동기 통신을 위한 컴퓨터 하드웨어 장치이다. 가장 작은 단 비트부터 가장 큰 비트까지 전송되는 정확한 타이밍이 통신 채널에 의해 핸들링 되기 위해 시작과 끝 bit로 프레임된 데이터 bits를 하나씩 보내는 것 전기 신호 레벨은 UART 외부 드라이버 회로에 의해 처리됨 통신 데이터의 경우, 메모리 또는 레지그터에 들어 있어 이를 차례대로 읽어 직렬화하여 통신하고 최대 8bits가 기본 단위 일반적으로 병렬 데이터를 직렬화하여 통신하는 개별 집적 회로 두개의 UART 사이 데이터 통신을 위해서는 두 가닥의 wire만 있으면 된다. 데이터는 Tx핀에서 전송되어 .. 2023. 5. 24. LIN이란? 목차 LIN이란? LIN Bus vs. CAN bus LIN bus는 어떻게 작동하는가? LIN frame format LIN frame fields Inter byte & response space Six LIN frame types LIN이란? 차량에 전자장치가 증가하는 과정에서 많은 부분에 있어 CAN bus를 사용하기에는 많은 비용이 발생했다. 단가를 낮추려고 하는 필요성이 발생하면서 유럽 완성차 업체들이 다른 serial 통신 기술들을 사용하기 시작했고 호환성과 관련한 문제를 해결해야 했다. 이를 위해 1990년 후반, LIN 컨소시엄이 5개의 완성차 업체에 의해(기술을 제공하는 Volcano Automotive Group and Motorola 포함) 설립하게 되었습니다. 현재 사용되는 LTS.. 2023. 5. 8. memmove 사용법 목차 memmove()란 memmove() 사용 예시 memmove()란 해당 기능은 string.h 헤더 파이렝 정의되어 있고 src의 값을dest로 count길이만큼 복사하여 저장하는 함수이다. 만약, object가 중복이 된다면: 마치 char type이 일시적으로 char[] 형태로 변화하여 복사가 되어진다. 그래서 dest에는 Array 형태로 값이 복사됨 memmove() 사용 예시 #include #include int main(void) { char src[20] = "this is memmove func"; char dest[20]; printf("src is ->%s\n", src); /* this is memmove func */ memmove(dest, src, sizeof(char.. 2023. 4. 21. memset 사용법 목차 memset()이란 memset() 사용 예시 value 값 할당 시 주의점 memeset() 사용 시 주의점 memset_s() 함수 memset()이란 C언어에서 메모리 할당에 주로 사용되는 것이 있는데, 그 중 하나가 memeset()이라는 함수이다. 이를 사용하면 메모리의 내용을 한꺼번에 특정 값으로 성정할 수 있어, 초기화 하는데 편리함이 있다. memset()은 string.h에 정의되어 있는 function으로 memory block에 특정한 값을 채우고 크기를 지정해줄 수 있는 함수이다. #include void *memset(void *ptr, int value, size_t num); 위처럼 사용할 수 있고 각, 인수들은 아래와 같이 정의 되어 있다. `ptr`은 우리가 사용할 m.. 2023. 4. 20. CAN Message CAN(Controller Area Network)은 여러 대의 장치 간에 데이터를 교환하는 데 사용되는 네트워크 프로토콜입니다. CAN은 실시간으로 작동하며, 높은 신뢰성과 안전성을 제공하기 위해 설계되었습니다. CAN 메시지는 데이터를 전송하는 데 사용되는 패킷 구조입니다. CAN Message구조 Start of Frame (SOF) Bit 메시지의 시작을 나타내는 비트 항상 1로 설정 모든 node는 SOF의 falling Edge를 기준으로 동기화 Arbitration Field 메시지의 우선순위를 결정 식별자의 값이 낮을수록 우선순위가 높음 12bits Or 32bits identifier로 구성 12bits: ID(11bits) + RTR(1bit) 32bits: ID(11bits) + SR.. 2023. 4. 19. memcpy 사용법 목차 memcpy()란? memcpy() 사용 예시 memcpy가 작동 안하는 경우 memcpy()란? memcpy() 는 “string.h”에 정의되어 있는 기능으로, 원하는 크기만큼 값을 다른 변수에 복사할 수 있는 함수이다. #include void* memcpy(void* dest, const void* src, sizr_t count); 로 되어있고 내부에는 총 3개의 인자를 할당받는다. 할당 받는 각 인자는 아래와 같다. `dest`는 우리가 복사를 받을 ptr이다. `src`는 우리가 복사를 하려고 하는 ptr이다. `count`는 복사할 인자의 크기이다. 쉽게 말해, src 에 저장되어 있는 값을 dest 에 복사하는데, count 크기만큼만 복사하는 것이다. 여기서 char 값을 복사한다.. 2023. 4. 18. CAN 통신 CAN 통신 CAN 통신이란? Controller Area Network의 약자로, 이는 마이크로컨트롤러와 장비 간 통신이 어떠한 주 컴퓨터 없이 가능하도록 설계되어있다. 해당 프로토콜을 보쉬사에서 1986년에 처음 제안하고 개발됐다. 다른 통신과의 차이점은 버스 타입의 브로드캐스트 형식이라는 것이다. 여기서, 브로드캐스트 형식이라는 것은 정보를 모든 노드에 전달한다는 것이다. 정보를 받는 노드들은 센서가 될 수도 있고 마이크로컨트롤러 혹은 게이트웨이(이더넷이나 USB 케이블을 통해 외부 네트워크와 통신하는 할 수 있는)가 될 수 있다. CAN은 메시지 기반 프로토콜로서, 메시지는 메시지 식별자를 포함하고 이를 통해 우선순위를 결정한다. CAN 네트워크에서는 노드 식별을 할 필요는 없지만, 이것을 네트워.. 2023. 4. 17. 이전 1 2 다음 반응형