2022년 8월 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 Layer는 Physical 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 증가
p가 80번지면
(p+1)은 84번지
함수 이름도 포인터이다.
메모리는 낮은 주소에서 높은 주소로 증가한다.
포인터를 쓰면 로컬에서 변수를 적게 사용해도 된다.
task를 사용할 때는 size를 정해줘야 한다.
4k를 사용하고 싶은데 stack이 3k면 시스템이 죽는다.
stack
heap
10바이트를 넘어가면 malloc을 쓰자
PC : Program Counter
STM32 는 2가지 종류의
watchdog 타이머를 제공.
- IWDG(Independent Watchdog)
- WWDG(Window Watchdog)