IT/임베디드

2022년 8월 10일 수업

가성비몬 2022. 8. 10. 18:10

Router : layer 3, IP Address

Switch : layer 2, MAC address

Layer 3 Switch : Hardware

GSM

3GPP ITEF

소프트웨어 최적화 : Assembly language

 

CPU BUS RAM, Peripheral

ZIGBEE

 

OSI 7 Layer : Open Systems Interconnection

 

Physical layer : 유선 : (ADSL(2M)/VDSL(10M), 광랜) 및 동축 ,

무선 : 이동통신, 블루투스, 와이파이

구리선

 

전송매체에 0, 1로 구성된 전기신호를 바꾸는 게 Layer 1, 2

 

Physical, Data Link, Network, Transport, Session

Bits, Frame, Packet, Segmant, Data

 

RFC TCP

 

CPU 입력 신호 : VCC(POWER), CLOCK(심장), RESET(LOW->HIGH)

 

2.4GHz : Bluetooth, Wifi 신호를 구분하는 것은 Start of Frame으로 구분

수신단에서 Frame

 

.s -> Assembly

 

/* Call the application's entry point.*/

bl main : 분기

bx lr

.size Reset_Handler, .-Reset_Handler

 

Bandwidth, Throughput, Goodput

 

LAN(Local Area Network) : ethernet

 

UTP, STP

 

전송매체 : Layer1의 종류에 따라 Layer2도 달라진다

 

 

 

Layer2 : Hardware + software

Data Link (MAC layer) -> Network

전송매체를 제어하기 위해 존재하는 계층임

패킷(packet)을 프레임(frame)화하여 전송매체를 통해 데이터 전송 : 헤더를 붙인다.

네트워크에서 데이터 링크를 자료 보낼 때 매채 마다 다른 프레임 사이즈에 맞춰서 보냄.

 

uname r

ipconfig a

 

리눅스 우분투를 설치할 때는 최신보다 전단계를 설치한다.

 

mtu 크기는 중요하다.

 

 

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.121.132 netmask 255.255.255.0 broadcast 192.168.121.255

inet6 fe80::e80:c0f5:17da:3694 prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:85:41:50 txqueuelen 1000 (Ethernet)

RX packets 293149 bytes 441576775 (441.5 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 40860 bytes 2542508 (2.5 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1000 (Local Loopback)

RX packets 331 bytes 30687 (30.6 KB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 331 bytes 30687 (30.6 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

 

 

NIC : Network Interface Card

 

ISO, IEEE, ITU, ANSI

MAC : Media Access Control

Data LayerPhysical Layer를 제어한다.

 

전송매체 공유

Controlled Access : 데이터가 오고가는 순서를 정해야한다.

Contention-Based Access : Ethernet, WI-FI

 

Full Duplex : 동시에 데이터 송수신 가능

Half Duplex : 데이터 송신 또는 수신 단 방향으로만 가능

(한 순간에 송신 또는 수신만 가능)

 

FDD : Frequency Division Duplex

TDD : Time Division Duplex

 

논리적 망 구성(logical network topologies)

- Point-to-Point (1 vs 1) ex)P2P

- Multi-Access ex)Ethernet

- Ring ex)Token ring

- Star

- Mesh : Bluetooth

 

Local Network : 내가 속해 있는 / Remote Network : 내가 속해 있지 않은

(IP Address가 같다) (IP Address가 다르다)

 

 

Subnet Mask . . . . . . . . . . . : 255.255.255.0

ipconfig /all

DNS Servers . . . . . . . . . . . :

 

Local에서는 MAC address를 보고 내건지 아닌지 판단한다.

 

헤더 구성은 소프트웨어가 한다.

MAC에서 시작과 끝을 알려주는 이유는 종류를 점검하고 에러를 체크하려고.

UART

USART : TIMER를 동기화 시킴. 시작과 끝을 알기 쉬움.

 

strlem

strcpy

ctrcmp

strchr

strstr

 

100 byte 쓸 것을 4byte만 쓸 수 있게

포인터 : 메모리 주소를 저장하고 있는 변수

쓰고 버려도 되면 변수, 함수를 불러서 뭐라도 채워서 반환하려면 포인터

함수를 변경하면 값이 변하니까 편하다.

포인터 변수 4byte

 

변수를 선언하면 메모리 할당

값을 넣으면 그 메모리 안에 들어간다.
&을 붙이면 공간의 시작주소를 가져올 수 있다.

 

int *p

*p = 100;

 

포인터를 쓸 때는 반드시 초기화를 해야한다.

포인터를 선언하려면 메모리 공간을 할당해야한다.

할당하려면 OS가 던져줌.

 

int *p; // 정수형 pointer, 4bytes

p = (int *) malloc(sizeof(int)); // 할당한 메모리 공간은 정수형 포인터

*p = 100;

pritnf(“%d”, *p);

free(p); // 반환

 

If this is the case, use ":recover" or "vim r pointer.c“

 

vi

vim

gedit

 

warning, error는 다 잡아야한다.

 

++p : 실행 전에

p++ : 실행 뒤에

 

v = *p++ : address 증가

v = (*p)++ : value 증가

 

p80번지면

(p+1)84번지

함수 이름도 포인터이다.

 

메모리는 낮은 주소에서 높은 주소로 증가한다.

포인터를 쓰면 로컬에서 변수를 적게 사용해도 된다.

 

task를 사용할 때는 size를 정해줘야 한다.

4k를 사용하고 싶은데 stack3k면 시스템이 죽는다.

 

stack

heap

 

10바이트를 넘어가면 malloc을 쓰자

 

PC : Program Counter

 

STM32 2가지 종류의

watchdog 타이머를 제공.

- IWDG(Independent Watchdog)

- WWDG(Window Watchdog)