View
2
Download
0
Category
Preview:
Citation preview
강의를 시작하기 전에!
• CoIDE 설치 – 그냥 다음 다음만 누르시면 됩니다.
• Gcc 설치 – 맨 마지막 단계에 환경 변수 추가하는 체크박스를 클릭한 후 완료해 주세요.
• CDM 설치 – 압축해제 후 PC 시스템에 맞는 프로그램 설치 (32/64bit)
허 봉춘씨의 파란만장한IoT 보드 만들기
강 사
안진희
정석균
Ethernet 시작하기
• 이름: 허봉춘
• 나이: 30세
• 학력: 그냥 저냥 전자과 대졸(평점 3.3)
• 생김새: 동네 아저씨
• 학생 경력: 교내 경진 대회에서 AVR 라인 트레이서 입상.
• 직장 경력• 중소 기업에서 2년째 근무 중
• 2년째 AVR로 RS232로 장비 제어하는 것만 하고 있음.
• 거주지: 회사 근처의 월세 40만원짜리 월세에 살고 있음.
• 가족 관계: 아버지, 어머니, 여동생.
• 할 줄 아는 것: AVR 코딩, 회로 그리기, Artwork.
HUR BONG CHUN! 그는 누구인가!
봉춘씨의 뇌 구조
나도 좀 발전하고 싶다.
AVR만 해서 나중에먹고 살 수 있을까?요세 IoT대세라던데.
배고프다.이직하고
싶다.
아~ 조금 더 많은 걸경험하고 내 자신을발전시켜서 야근 많
이 안 하면서 돈 많이주는 회사로 이직해
서 여자 친구도 좀 사귀고 맛있는 것도 좀사먹고 싶은데 선배새끼는 계속 갈궈서
짜증이 난다.
• IoT가 대세라던데… IoT가 뭐지?• 사물 인터넷? 아~ 죄다 인터넷에 연결하는 거네.
• 오~그럼 보일러 같은 거 핸드폰으로 끄면 좋겠다. 끄는 걸 자꾸 까먹어서 지난 달
가스 값이 ㅠㅠ
• 그럼 어떻게 인터넷이 되게 하지?
• 뭐? 임베디드 이더넷?
아~ 나도 발전하고 싶다. 대강 훑어볼까?
늘 발전!하고 있는 피카츄!
• RJ-45 - 이건 커넥터 잖아~ 패스~
• Transformer – 트랜스포머는 뭐 필요한가 보다~ 하는 거지 ㅎㅎ
• PHY? – 그게 뭐시다냐…
• MAC? – Mac 주소 이야기 하는건가?
• TCP/IP Stack – 포팅을 해야 한다고???
• Application – HTTP, FTP, DHCP, SMTP…… 내가 만들어야 한다고???
흐음.. 임베디드 이더넷을 하려면?
봉무룩
MCU
MAC
PHY
Transformer RJ-45
Application
TCP/IP
“언제 공부해서 언제 하냐!ㅠㅠ 아~ 그냥 포기해야 겠다.”
뭐? W5500? 그게 뭔데?
오! MAC PHY TCP/IP 다 들어 있어!오! 나 SPI 알아. 나 해봤어.오! ~좋아! 이거 가능성이 있겠는데?
W5500 더 알아 볼까?
그 유명하다는 아두이노에 W5100이 있었군.오~ Ethernet Shield 2에는 W5500이 들어 갔구나.이거(W5500) 어느 정도 성능 검증된 것 같은데?이거(W5500) 써도 되겠네~WIZwiki? 이건 뭐지?
W5100 Arduino Ethernet Shield
W5500 Arduino Ethernet Shield 2
회로랑 뭐 다 있네~ 이거 보고 하면 되겠네.Github? 이건 또 뭐야?
http://wizwiki.net/wiki/doku.php?id=products:w5500:migration
https://github.com/Wiznet/ioLibrary_Driver
와우 예제 코드도 종류별로 다 있네~
오호라 ~ 그러면 W5500 칩 내부를 한번 볼까 ?!
• Fully Hardware TCP/IP 이더넷 솔루션 !
: WIZnet의 가장 저렴하고 가장 최신의 칩 !!
- W3100<W3100A(+)<W5100<W5300<W5200
- TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
- 8 SOCKETs
- Integrated Ethernet PHY
- SPI Mode 0/3 (Up to 80MHz)
- 48LQFP
W5500은 ?
W5500 Block Diagram
- SPI Mode 0 / 3 - Host Connect (VDM or FDM)
VDM
FDM
W5500 – Host I/F SPI(1)
- SPI VDM FDM은 뭐지..- 자 ! 이것은 MISO/MOSI 신호가 SCLK의
Rising edge때 수신(Sampling)되며, Falling edge 때 송신(Toggling)된다 !
• W5500 SPI Frame은 아래와 같이 구성되어 통신한다 !
• SPI Operation Mode
Variable Data Length Mode (VDM) : SCSn으로 제어되며 ! Data 전송길이를
1 ~ N byte로 정하여 전송되는 모드 !
Fixed Data Length Mode (FDM) : OP Mode에서 정해진 List에 따라 Data
전송길이가 결정되어 전송되는 모드 !
W5500 – Host I/F SPI(2)
생각보다 어렵지 않은데 ~ ?!
W5500으로 IoT 보드 한 번 만들어 보자!
그까이꺼 대강 뚝딱 만들면 되지!!
그래! 결심했어!
우리 봉춘씨가 기분 좋은 상상을 하며 이렇게 웃고 있겠죠?
!!대공개!! 허 봉춘씨의 프로젝트 진행 계획!
1. 컨셉 작업
2. 소자 선정
3. 개발 비용 및 제작 단가 산출
4. 회로 설계
5. 아트웍
6. 샘플 보드 발주 및 납땜
7. 펌웨어
8. 개발
1. 컨셉 작업 – Brain Stormming
• 뭘 만들지?• W5500으로 Ethernet에 연결이 가능하고 새로운 MCU를 사용해서 보드를 만들어 보자.
• 어떻게 만들지?• 내가 직접 회로설계랑 아트웍이 가능하니 직접 하드웨어를 만들고 펌웨어도 직접 작성해
보자.
• 무엇을 배울 수 있을까?• Embedded Ethernet 하드웨어 설계와 Embedded Ethernet 펌웨어 작성을 배울 수 있어.
• 보드에 얼마를 투자할 수 있을까?• 나는 월급이 적으니까..… 원가를 1-2만원에 맞추고 싶은데? 좋아! 박리다매야 박리다매!
• 보드에 시간을 얼마나 투자할 수 있을까?• 아 맨날 야근하고… 시간은 늘 부족해… 귀찮기도 하고. 그렇다면 하루에 1시간씩 투자해
보자.
1. 컨셉 작업 - 목표
W5500 사용
보드 원가 2만원 이하
Embedded Ethernet
구현
새로운 MCU 사용
MCU W5500RJ45+
TransformerSD CARD
MACEEPROM
USB USB to UART
1. 컨셉 작업 – 블록 다이어그램
2. 소자 선정 ( 스펙추가 )
• W5500• Hardwired TCP/IP, 32Kb internal memory, 8 Socket, 80Mhz SPI Interface.
• STM32F103VC• Cortex M3, 256Kb flash, 48Kb SRAM, LQFP100, Max 72Mhz.
• FT2232D• USB to USART, USB to JTAG 2 channel virtual comport.
• 24AA02E48T• 2K Serial EEPROM, Official Mac address, I2C interface.
• Micro USB
• Micro SD Card
• External Pin Header
3. 개발 비용 및 단가 산출
허 봉춘: 2만원에 맞출 수 있나? 단가를 알아 봐야겠네…
◈ USB 케이블은 검색해보면 440원, 랜 케이블은 280원 정도입니다. 봉춘씨 참고하세여~
품 목 단 가 비 고
W5500 3,200원
STM32F103VC 3,200원 음 적당한 가격 같아! 아는 업체 견적
FT2232D 5,500원 헐 겁나 비싸! ㅠㅠ 아는 업체 견적
24AA02E48T 250원 오 이건 싸네! ㅎㅎ 아는 업체 견적
나머지 소자 3,000원 나머지 해봐야 한 3천원 넘겠어?
PCB 2,250원 한판에 18만원 정도 했으니까.. 80장은 나오겠지?
SMT 1,000원 잘 모르겠다. 한 천원 하지 않을까?
합 계 18,400원 오예~ 2만원 안 넘는다.~~
4. 회로 설계
허 봉춘: 좋아! 이제 회로 설계를 해볼까? W5500부분부터 해야지~ 레퍼런스~ 랄라~
- http://wizwiki.net/wiki/doku.php?id=products:w5500:refschematic
4. 회로 설계
허 봉춘: 이제 MCU쪽! 리셋, 부트 버튼도 달고~ VCC에 Decoupling CAP도 달고~ 룰루~
4. 회로 설계
허 봉춘: FTDI USB! 이것도 Datasheet에 레퍼런스 회로가 똭! 이것도 똑같이 그려야징~
MICRO USB
3.3V REGULATOR
EXTERNAL POWER SELECT
4. 회로 설계
허 봉춘: 그리고 마지막으로 Output Pin좀 빼고~ 다양하게 Mount Hole 장착! 마무리!
EXTERNAL OUTPUT
W5500 : SPIPC0~PC3 : ADCPA0~PA3 : USART2 FULLPB8~PB9 : I2C1 OR CANPB10~PB11 : I2C2/USART3PB12~PB15 : SPI2/I2SPA11~PA12 : USBPD0~PD1 : CANPD5~PD6 : USART2
PCB MOUNT HOLE
EXTERNAL CONNECTOR
아트웍시 주의사항
• TX+/-와 RX+/- 신호는 최대한 짧게 연결 하고, Trace의 길이를 최대한 같게 함. (25mm 이하)
• TX+(or RX+)와 TX-(or RX-) 신호는 최대한 가깝게 나란히 지나가도록 연결.(간격 1mm)
• TX+/-와 RX+/- 서로 크로스되지 않도록 연결.
• TX+/-와 RX+/- 신호의 저항과 캐패시터는 트랜스포머와 W5500사이에 배치하고 연결.
• TX+/-와 RX+/-는 서로 거리를 두고 연결. GND로 분리.(간격 0.7mm)
• TX+/-와 RX+/- 다른 신호 및 전원과 거리를 두고 연결. GND로 분리. (간격 0.7mm)
• RJ45 아래에는 CHGND를 깔거나 GND를 깔지 않음.
아트웍 좋은 예
5. 아트웍허 봉춘: 지킬껀 지켜가면서 아트웍 완성 !!
허 봉춘: 자! 이제! 샘!플!발!주!!!!!!!!!!!!!!!!!!!!!!!! 슈웅~ 투쿵~ 철컥철컥! 출격!
* Sample pcb 제작 가격은 업체마다 틀리지만 보통 5개 정도에 7~8만원 정도 합니다. 참고하시기 바랍니다.
6. 샘플 납땜 및 디버깅.
허 봉춘: 아놔! ㅠㅠ RJ-45 핀이 다 같은게 아니었어. 레퍼런스 완전 똑같이 할 걸. ㅠㅠ
만신창이 ㅠㅠ
• 봉춘씨의 IoT Sample 납땜 결과- RJ-45를 레퍼런스와 다른 종류를 사용하였습니다.- Mac 주소 EEPROM의 NC핀과 VCC핀이 뒤바뀌었습니다.- 리셋 버튼과 Boot0핀이 너무 가깝습니다.- USB Port 고정용 Hole을 뚫지 않았습니다.- SD Card socket 고정용 Hole 사이즈가 너무 작습니다.
하드웨어 개발에서는 한 번에 성공하리란 힘들죠~ 다시 한번 제작!
6. 샘플 납땜 및 디버깅.
허 봉춘씨는 다시 한 번 회로와 아트웍을 수정하여 보드를 완성하였습니다.
• 봉춘씨의 IoT EVB 디버그- 레퍼런스와 같은 RJ-45를 사용했습니다.- EEPROM의 NC와 VCC를 정상적으로 연결했습니다.- 리셋 버튼과 Boot0 버튼의 거리를 벌렸습니다.- USB Port 고정용 Hole을 뚫었습니다.- SD Card socket 고정용 Hole 사이즈를 변경했습니다.- 기타 Mount Hole 위치 및 Copper거리를 변경했습니다.
자! 이제부터는 펌웨어 단계입니다. 지금부터는 여러분들이 허 봉춘씨입니다. 레드~썬!!
7. 보드 테스트 !
- Ethernet connector LED 확인 !!Ehernet Connector(RJ-45)에서
LED 초록색은 계속 켜져있고 !LED 노란색은 깜빡 해야한다 !
- 정상 동작 보드 판단 기준 !1. 빨간색 테두리(전원) LED on 확인2. Ethernet connector LED on 확인
7. 보드 테스트 !
반드시 확인되어야 할 것 !
1. 제어판 -> 시스템 접속 !
2. 장치관리자 접속 !
3. 포트(COM & LPT)에서USB Serial Port가 2개 접속되어 있는지 확인 !
1
2
3
8. 펌웨어 개발 환경.
• CoIDE + gcc 사용.
• GCC tool chain 설정.• Project->Select Toolchain Path
• gcc가 설치된 디렉토리 중 bin 폴더 선택
8. 펌웨어 – New Project.
• Project->New Project 선택 -> 프로젝트 이름 입력.
• Chip 선택
8. 펌웨어 – New Project.
• ST->STM32F103x->STM32F103VC 선택(OR 검색)
• 완료!
8. 펌웨어 – New Project.
□ C Library□ Retarget printf□ CMSIS core□ CMSIS Boot□ RCC□ GPIO□ USART□ MISC
8. 펌웨어 – New Project.
디버거 설정: Configuration tab -> Debugger tab
8. 펌웨어 – New Project.
컴파일 후 다운로드 해 봅시다. 보드에 정상적으로 다운로드가 되나요?
정상적으로 다운로드 되면 이렇게 메시지가 나오죠~
8. 펌웨어 – 실습 #1 LED ON/OFF
• LED ON/OFF• 새로운 보드가 정상적으로 동작하는 것을 확인할 수 있는 가장 기본적인 펌웨어는 LED ON/OFF입니다.
• GPIO를 이용해 LED를 ON/OFF를 스스로 할 수 있다면 50%는 끝난 거라는 말이 있을 정도로 기본 중에 기본입니다.
• LED는 PE0, PE1 연결되어 있어요 !
8. 펌웨어 – 실습 #1 LED ON/OFF
8. 펌웨어 – 디버깅을 해보자 !
Serial Port 2개 중 ,
1개는 JTAG ! (Debugger !)1개는 UART (Serial 메시지 확인 !)
8. 펌웨어 – 디버깅을 해보자 !
Main문 시작 지점
마우스로 더블 클릭 하면 Break point 아이콘이 생김.-> Main문 동작 시작 후 18번 지점에서 동작 멈춘다.
2. Dubugger main문 Break point 설정하기1. Dubugger 실행
위 아이콘을 클릭 하면Debug mode로 접속 !
8. 펌웨어 – 디버깅을 해보자 !
3. Dubugger 변수 값 알아보기
- 위 코드에서 for문은 Delay 용도로 사용된다.- for문의 ‘i’변수의 값을 알아보자.
- Tool의 하단 오른쪽 부분에 Variables에서- Add Global Variables…를 클릭 !- ‘i’를 체크하고 “OK”를 클릭한다.
3-1. 알아볼 변수 셋팅 !
8. 펌웨어 – 디버깅을 해보자 !
3-2 Dubugger 실행 후 변수 값 확인 !
Debug Start
Debug Stop
1) Tool 상단에 아이콘을 클릭 하면 Debug 시작한다.2) 아이콘을 클릭하여 Debug가 멈춘다.3) 코드를 보면 시작 지점과 끝 지점이 표시된다.4) 설정한 변수의 현재 값이 출력된다.
Start 지점
Stop 지점
‘i’ 변수 ‘i’ 변수 값
8. 펌웨어 – 실습 #2 W5500 포팅
• 포팅이란 단어만 나와도 머리가 아프시죠? 두통에 고생하시는 “허 봉춘”님들(?)을 위해서선물을 준비했습니다.
IoT 강의 -> PROJECT ->1. PORTING
8.펌웨어 – 실습 #2 W5500 포팅
• 사실 어렵지 않아요!!!
• MCU와 연결• SPI – 4 Lines
• INTERRUPT – 1 Lines
• RESET – 1 Lines
MCU
SPI
CS
RESET
INT
SPI, RESET, INT
W5500 SPI Frame
- ioLibrary에서 W5500 SPI Frame을 자체적으로지원한다.
- 사용자는 간단한 함수 호출로 사용 가능하다.
8.펌웨어 – 실습 #2 W5500 포팅 (ioLibrary)
8. 펌웨어 – 실습 #2 W5500 포팅
GPIO Initialization
• SPI Pin Enable
• CS Pin Enable
• Reset Pin Enable
• INT Pin Enable
SPI Initialization
• SPI
Configuration
• SPI Enable
Connect to ioLibrary
• SPI Read(), SPI
Write()
Registration.
• CS Registration.
W5500HardwareInitilize() W5500Initialze()
8. 펌웨어 – 실습 #2 W5500 포팅
void W5500HardwareInitilize(void){
/*Initialize Structure*/GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;
/*Enable clock related peripherals*/RCC_APB2PeriphClockCmd(W5500_SPI_RCC,ENABLE);RCC_APB2PeriphClockCmd(W5500_GPIO_RCC,ENABLE);
/*Initialize CLK Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_CLK_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(W5500_CLK_PORT,&GPIO_InitStructure);
/*Initialize MOSI Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_MOSI_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(W5500_MOSI_PORT,&GPIO_InitStructure);
/*Initialize MISO Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_MISO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(W5500_MISO_PORT,&GPIO_InitStructure);
/*Initialize CS Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_CS_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(W5500_CS_PORT,&GPIO_InitStructure);
/*Initialize Reset Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_RESET_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(W5500_RESET_PORT,&GPIO_InitStructure);
/*Initialize INT Pin*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = W5500_INT_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(W5500_INT_PORT,&GPIO_InitStructure);
/*Initialize SPI*/SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(W5500_SPI, &SPI_InitStructure);
SPI_Cmd(W5500_SPI, ENABLE);
W5500HardwareReset();}
8. 펌웨어 – 실습 #2 W5500 포팅
GPIO Initialization
• SPI Pin Enable
• CS Pin Enable
• Reset Pin Enable
• INT Pin Enable
SPI Initialization
• SPI Configuration
• SPI Enable
Connect to ioLibrary
• SPI Read(), SPI
Write()
Registration.
• CS Registration.
W5500HardwareInitilize() W5500Initialze()
8. 펌웨어 – 실습 #2 W5500 포팅
void W5500WriteByte(unsigned char byte){
while (SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET);SPI_I2S_SendData(W5500_SPI, byte);while (SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_RXNE) == RESET);SPI_I2S_ReceiveData(W5500_SPI);
}
unsigned char W5500ReadByte(void){
while (SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET);SPI_I2S_SendData(W5500_SPI, 0xff);while (SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_RXNE) == RESET);return SPI_I2S_ReceiveData(W5500_SPI);
}
void W5500Select(void){
GPIO_ResetBits(W5500_CS_PORT,W5500_CS_PIN);}
void W5500DeSelect(void){
GPIO_SetBits(W5500_CS_PORT,W5500_CS_PIN);}
SPI Read Byte 함수
SPI Write Byte 함수
W5500 Select 함수
W5500 Deselect 함수
8. 펌웨어 – 실습 #2 W5500 포팅
void W5500Initialze(void){
unsigned char temp;unsigned char W5500FifoSize[2][8] = {{2,2,2,2,2,2,2,2,},{2,2,2,2,2,2,2,2}};
W5500DeSelect();
/* spi function register */reg_wizchip_spi_cbfunc(W5500ReadByte, W5500WriteByte);
/* CS function register */reg_wizchip_cs_cbfunc(W5500Select, W5500DeSelect);
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)W5500FifoSize) == -1){
printf("W5500 initialized fail.\r\n");}
do{//check phy status.if(ctlwizchip(CW_GET_PHYLINK,(void*)&temp) == -1){
printf("Unknown PHY link status.\r\n");}
}while(temp == PHY_LINK_OFF);}
SPI Read Write 함수 등록
Chip Select 함수 등록
8. 펌웨어 – 포팅 완료! 아싸!…… 근데 이제……
근데 이제 어떻게 뭘 해야 하지?
• Socket을 열라고? Socket이 뭔데? 8개 까지 동시에 가능하다고는 했는데…
• Port 번호가 필요하다고? Port가 뭔데?
• UDP는 어떻게 하지? 뭐 커넥션이 필요 없고… 뭐 설정하는 함수가 있나?
• TCP는 어떻게 하지? 음… 커넥션이 필요하고… 이것도 이 정도만 알아.. ㅠㅠ
8. 펌웨어 – socket이 뭐지..?
• 상상해봐요. 지금 봉춘씨들은……• 인터넷으로 음악을 들으면서
• 친구와 채팅도 하고 있습니다.
• 그러다가 잠깐 인터넷 쇼핑도 좀 하고
• 아웃룩으로 온 E-mail도 확인 합니다.
Internet 음악카카오톡 채팅인터넷 쇼핑E-mail 확인
Internet 음악 주는 서버
카카오 서버
쇼핑몰 서버
E-mail 서버
PC
8. 펌웨어 – socket이 뭐지..?
• 눈치 채셨죠? 네 맞습니다. Socket은 프로그램들의 연결 통로라고 보시면 됩니다.
• 각각의 프로그램은 Socket으로 구분되고 Port는 그 Socket의 번호에 해당합니다.
• 일반적으로 BSD 소켓이 사용되고 있고 WIZnet도 BSD 형식으로 코드를 제공합니다.
Internet 음악카카오톡 채팅
인터넷 쇼핑E-mail 확인
Internet 음악 주는 서버
카카오 서버
쇼핑몰 서버
E-mail 서버
PC
SOCKET
SOCKET
SOCKET
SOCKET
SOCKET
SOCKET
SOCKET
SOCKET
• UDP (User Datagram Protocol)은 비 연결지향 프로토콜이라 불러요.
• Data를 보내면 그에 따른 응답이 오지 않는 특성을 가지고 있죠..
• 실시간 멀티미디어 정보를 처리하기 위해 주로 사용해요~
8. 펌웨어 – UDP는 뭐지?
연결 없음 , UDP Data 전송
• TCP(Transmission Control Protocol)은 연결지향 프로토콜이라 해요.
• Data를 보내면 그에 따른 응답이 오는 특성을 가지고 있죠 !
• 데이터의 신뢰도가 중요하다고 판단될 때 사용하는 방법이랍니다.
8. 펌웨어 – TCP는 뭐지?
TCP 연결 TCP Data 전송
8. 펌웨어
모르시겠다구요? 좋습니다.
그럼 지금부터 맨땅에 헤딩 들어갑니다.
8. 펌웨어 – 실습 #3 UDP echo
SOCKET OPEN
RECEIVE
SEND
socket(); 소켓 열기
recvfrom(); 데이터 받기
sendto(); 데이터 보내기
8. 펌웨어 – 실습 #4 TCP LED ON/OFF
SOCKET OPEN
LISTEN
ESTABLISH
socket(); 소켓 열기
RECEIVE
LED ON/OFF
SEND
listen(); 연결 듣기
getSn_SR(); 상태 확인
recv(); 데이터 받기
send(); LED 컨트롤 완료 보내기
led1Ctrl(); LED 온 오프
Recommended