임베디드 35

리눅스 네트워크 이더넷 Linux network ethernet

개요이더넷은 옛날 방식이고, 인터넷은 최근 방식일까?정답은 X이다, 이더넷과 인터넷은 다른 개념으로 서로 연결될 수도, 아닐 수도 있다.보통 규모가 작은 LAN에서는 이더넷 통신을 한다.이더넷은 MAC 주소로 통신을 하며, 허브가 IP를 부여하는 방식이다. 인터넷은 TCP / IP 프로토콜을 사용하여 IP주소 기반 통신을 하지만이더넷은 CSMA / CD 프로토콜을 사용하여 MAC주소 기반 통신을 한다. 이와 같은 이유로 이더넷 카드, 이더넷 케이블과 같은 이더넷을 위한 장비가 따로 존재한다.사실상 LAN 규모의 대표적인 통신이 표준이므로, 이더넷 카드 및 이더넷 케이블을 랜카드, 랜케이블이라고 부른다.  CSMA / CDLAN에서 통신을 할때는 연결되어 있는 모든 노드에게 데이터를 보낸다.5개의 장치 A..

리눅스 네트워크 기초 Linux network

개요네트워크 프로그래밍은 TCP/IP 소켓 통신을 이용한 개발이다.모든 것은 TCP/IP 소켓 통신 하나로 시작해서 끝이 난다. 네트워크 분야는 H/W와의 밀접한 관련이 있다.그래서 S/W 개발자일지라도, 네트워크 장비 관련 지식이 필요하다. TCP/IP 소켓 통신을 이용한 멀티 쓰레드 기반 채팅 Application 을 개발하는 실습을 진행한다.  네트워크노드와 링크로 구성한 데이터 교환망이다.노드는 컴퓨터 장치들을 의미하며, 링크는 연결을 의미한다. 컴퓨터나 다른 장치들을 연결하여 데이터를 주고 받을 수 있는 구조를 의미한다. 알고리즘에서 그래프 문제를 풀땐 노드끼리 연결할땐 간선이 필요한 것을 알 수 있다.노드는 랜카드, 간선은 케이블이라고 생각하면 케이블은 양방향 간선 이기 때문에 2대의 랜카드와..

[C] C언어 비트 연산

개요임베디드 개발자는 비트연산을 사용해서, 장치를 제어하기 때문에 비트연산을 공부해야 한다. MCU를 예를 들면 하나의 칩 안에 CPU / 메모리 / Disk 까지 모두 들어가 있다.MCU의 여러개의 “PIN” 중 하나에다가 장치를 전선으로 연결한다.각 Port의 PIN의 상태를 비트로 관리하고 각 상태마다 장치의 작동 상태를 제어할 수 있다.  n 비트 표현 방법bit = 0과 1 을 나타내는 최소 단위1101 = 4bit100111 = 6bit기본적으로 32bit를 기준으로 이야기하지만, 32bit는 너무 길어서 8bit or 16bit 내에서 연습을 한다. 수를 2진수 8bit로 표현하기0xA = 0b000010100xC = 0b00001100수를 2진수 10bit로 표현하기0x1E = 0b0000..

[C] C언어 진수 변환

진수 변환을 공부하는 이유진수 변환은 임베디드 장치로부터 나온 Data를 분석하는 과정이다.장치는 2진수 → 16진수로 표현한다.개발자는 16진수 → (2진수) → 10진수로 빠르게 변환해서 이해해야 한다.  16진수를 쓰는 이유컴퓨터는 기본적으로 2 진수를 사용하고, 사람은 10진수를 사용한다.사람이 알아보기 힘든 2진수를 10진수로 변환하는데 계산이 오래 걸린다.2진수를 보다 알아보기 쉽게 쓰기 위해 16진수를 사용한다. 예를 들어 1Byte로 표현할 수 있는 0b00001111는 16진수로 0x0F로 나타낼 수 있다.만약 int타입의 변수를 이진수로 나타내면 32Bit로 나타내야 한다.long long등의 타입을 나타낸다면 읽어야할 이진수가 너무 길기때문에 사람이 이해하기 너무 어렵다.  진수 표기..

[C] C언어 메모리 주소와 포인터, 변수 배열 문자열 포인터

개요변수와 주소의 관계에 대해 학습하고 이해한다. 배열의 주소와 배열 이름의 관계에 대해 학습하고 이해한다.  변수의 메모리 주소int x = 10 변수가 있다.프로그램이 실행되어 메모리에 적재되면, 변수를 위한 공간이 메모리에 생긴다.그 공간을 나타내는 이름이 변수이름, 그 공간을 나타내는 시작 값을 주소라 한다.변수 이름은 개발자( 사람 ) 을 위한 것이고, 주소는 컴퓨터를 위한 값이다.모든 변수들은 주소가 존재한다. x에 10을 대입하고 return까지 트레이스 후 조사식을 확인하면 &x를 통해 변수 x의 메모리 주소를 알 수 있다. 배열의 메모리 주소배열의 경우 배열의 이름이 바로 “배열의 시작 메모리 주소”이다. 배열 a의 주소와 a[0]의 주소가 같은 것을 볼 수 있다. 메모리 주소int a ..

임베디드 S/W 개발과 Application

Application란?운영체제 안에서 동작하는 프로그램을 App 이라고 한다. 모바일 app의 경우 안드로이드라는 운영체제 안에서 동작되는 프로그램이므로, App이다.마리오카트와 같은 게임도 닌텐도 OS에서 동작되는 프로그램이기에 App이 맞다. 그럼 리눅스에서 C언어로 개발하는 프로그램도 App일까?리눅스 운영체제 안에서 돌아가는 프로그램이기에 App이 맞다. 임베디드 개발자의 구분임베디드 S/W 개발자를 아래와 같이 나눌 수 있다.Application Level 개발자Middleware Level 개발자Low Level 개발자 Application level 개발자임베디드 S/W 개발자라고 무조건 Firmware 같은 Low Level 개발만 하지 않는다.임베디드에서 사용되는 운영체제는 다음과 같다..

임베디드 2024.09.29

리눅스 심볼릭 링크 Linux Symbolic link

개요심볼릭 링크에 대해 간단히 학습한다.심볼릭 링크를 이용해 나만의 명령어를 제작한다.  심볼릭 링크윈도우의 바로가기 파일을 의미한다.  심볼릭 링크 만들기1. ~/test7 디렉토리 생성mkdir ~/test7cd ~/test7echo ABC > btsvi bts./bts  2. bts 의 바로가기 파일을 만든다.ln –s [원본파일명] [복사본파일명]ln –s ./bts ./bbqls –al bbq의 파일 타입이 l, bbq -> bts로 명시된 것을 확인할 수 있다.  심볼릭 링크 특징바로가기 파일을 수정하면 원본에 영향을 미친다.echo hifaker >> bbqcat ./bbqcat ./bts bbq 파일에 hifaker라는 문자열을 추가했다.하지만 bbq뿐만 아니라 bts 파일에도 hifake..

리눅스 다양한 쉘 명령어 Linux Shell Command

개요가장 자주 사용되는 shell 명령어들을 학습한다.  echo echo [텍스트] 텍스트를 화면에 출력한다. 연속된 띄워쓰기를 하나만 인정한다. 문자 그대로 출력한다.(")가 쉘에서 문자열을 감싸는 역할을 하기 때문에 무시되었다.(#)가 쉘에서 주석 역할을 하기 때문에 무시되었다.  date현재 시간을 확인할 수 있다.  uptime현재시간, 시스템 시간과 커널이 부팅 된 후(up) 지난 시간 을 나타낸다.그 외, 접속자 수와 CPU 시스템 부하율을 나타낸다.  dmesg커널의 로그 메시지를 출력하는 명령어부팅 이후 일어난 모든 커널의 로그를 시간 순으로 출력한다.   history입력한 모든 명령어가 출력된다.![숫자] 를 이용해 해당 번호의 명령어를 다시 실행할 수 있다.   .c파일에서 shel..

리눅스 쉘 파일 관리 명령어 Linux Shell

개요파일 관리 명령어를 학습하여 파일을 관리하는 방법을 숙달한다.  cat cat [파일명] 파일 내용을 출력하는 명령어ex) 터미널에 cat /proc/cpuinfo를 입력하면 cpu 정보를 확인할 수 있다. 내용을 파일로 저장하는 방법 > : 파일에 내용 쓰기>> : 파일에 내용 덮어 쓰기cat /proc/cpuinfo > abccat /proc/meminfo >> abc  findfind [경로] -name [파일명] –type [옵션] 파일을 찾는 명령어경로에 “/” 를 넣으면 모든 곳에서 검색 → sudo 권한 필요 파일만 찾기 : find [경로] –name “파일명” –type f디렉토리만 찾기 : find [경로] -name “파일명” –type d   grepgrep [텍스트]문자열 검색..

리눅스 빌드 시스템(5) Makefile 제작 Linux Makefile

목차리눅스 빌드 시스템(1) gcc Linux Build System gcc리눅스 빌드 시스템(2) make Linux Build System make리눅스 빌드 시스템(3) cmake Linux Build System cmake리눅스 빌드 시스템(4) make 문법 개요Makefile 을 단계별로 작성하며 상세 작성 법을 배우고 다른 사람이 작성한 Makefile 을 이해할 수 있도록 숙달해야 한다.  Build Home 디렉토리에 test6 디렉토리를 생성하고 c, h, Makefile을 생성해 준다.  이제 각 함수의 함수 파일에 코드를 작성해 준다.  func1.c#include "common.h"void func1(){ printf("Func1 TEST START\n"); printf("====..

728x90