3/29/2022

ESP32 WIFI 관련자료 정리

1. WIFI의 관련정보의 정리 

최근에 WIFI MCU를 하게되어 이전에 정리했던 WIFI 자료와 다 같이 정리하기로 했다. 
그리고, 자꾸 WIFI 관련문제사항들이 발생하여, WIFI 원인분석이 필요한 부분들은 간단히 정리한다. 

WIFI 사용되어지는 용어정리 
WIFI에서 사용되어지는 기본적인 용어와 관련내용을 간단히 정리


1.1 WIFI Layer 2 와 WIFI Driver 정보 

WIFI Driver를 분석하고 내용알려면, 대충은 Layer2는 어떻게 동작하는지는 알아야한다. 
그리고, WIFI Driver 역시 각 Chip Vendor마다 지원되는 기능도 다르다. 
이전에는 Full Mac/Soft Mac 으로 WIFI Chip 어디까지 Control하느냐에 따라 이를 구분하고, 또, 지원되는 모드도 다 달라서 사용하기가 좀 그랬다.  
사실 요즘 WIFi Driver를 거의 잘 보지를 못해서 현재는 잘모르겠으며, 오래전에 정리한 것을 링크만 연결한다. 

WIFI Layer2 와 Ethernet Encapsulation
WIFI의 핵심인 Layer2 Packet 종류와 관련내용들 정리
이부분을 더 알고 싶다면, 돈을 내시고 IEEE 802.11 협회에 가입하셔서, Spec을 보시길 권장하며, 나도 옛날꺼 밖에 없으며, 이것도 지인을 통해 얻은 것이다. 

Linux WIFI Driver 관련정리 
옛날에 대충정리해서 지금보니 엉망이라 다시 정리를 해야 할 것 같다. 

Linux WIFI Tool 이용 
별로 쓸모가 없을거 같으나, 일단 Linux의 Tool 사용을 위해서 참고만 하자


1.2 WIFI 2.4G Channel 관련자료 

가장 많이 사용하는 WIFI의 2.4G 대역의 Channel을 간단히 알아보고 혼선 및 특징을 알아보자. 
더불어 요즘 WIFI 2.4G이외에 다른 ISM Band도 추가해서 사용하는데, 관련부분도 좀 알아보자. 

WIFI Wiki
역시 Wiki가 설명이 잘되어있으며, 정말 감사하다 

  • WIFI 2.4GHz (802.11b/g/n/ax 나라별 사용하는 Channel) 
각 Channel의 간격은 5MHz 이지만, Ch14만 12MHz
WIFI Bandwith는 보통 20MHz/40MHz로 각 AP에서 HP를 통해 설정가능 
ChannelF0 (MHz)Frequency
range
(MHz)
North
America
[3]

Japan
[3]

India
[4]
Most of
world
[3][5][6][7]
[8][9][10][11]
124122401–2423YesYesYesYes
224172406–2428YesYesYesYes
324222411–2433YesYesYesYes
424272416–2438YesYesYesYes
524322421–2443YesYesYesYes
624372426–2448YesYesYesYes
724422431–2453YesYesYesYes
824472436–2458YesYesYesYes
924522441–2463YesYesYesYes
1024572446–2468YesYesYesYes
1124622451–2473YesYesYesYes
1224672456–2478NoBYesYesYes
1324722461–2483NoBYesYesYes
1424842473–2495No11b onlyCNoNo


WIKI설명을 보면 
간섭의 보장 받기 위해서 2MHz는 Guard band로 사용한다고 하며, 보통 16.25 ~ 22MHz 사이로 사용한다고 한다. 
하지만, WIFI 와 LTE는 OFDMA방식이므로, 아래와 같이 Channel 간의 중복을 허용한다. (궁금하시면, OFDM 보시길)
  1. Ch6 Center Frequency:  2437 -  (22/2) = 2426 으로 Ch4의 1Mhz가 부족 
  2. Ch6 Center Frequency:  2437 + (22/2) = 2448 으로 Ch8의 1Mhz가 부족  
  https://en.wikipedia.org/wiki/List_of_WLAN_channels

Overlap되지 않는 Bandwith는 아래와 같다하며, 
좌측 20MHz 기반으로 중간을 보면 1/5/9/13으로 사용

https://en.wikipedia.org/wiki/List_of_WLAN_channels

WIFI 2.4G Channel 간섭문제 


ISM Band 
ISM Band는 주로 Industrial/Scientifc/Medical 목적으로 무료로 사용가능한 주파수 대역을 말한다
나의 경우, ISM Band는 LoRa나 TI의 Simplicity를 통해 알게되었는데, 400/900MHz 대역만 있는줄 알았는데, 아래를 보니, 아니였다. 
최근 IoT RF에 해당하는 프로토콜의 관련주파수 대역이기도 하다. 

ISM Band 와 LoRA 
좀 이상한게, LoRA Gateway 경우는 800MHz 대역을 분명 사용한 걸로 기억을하는데, 이 부분은 나중에 Semtech Datasheet를 다 확인해 봐야겠다. 
내 기억으로는 LoRA Gateway의 경우 1개의 SX1301로 2개의 SX1257(Transciever) Control 한다. 
이유는 동시에 여러 Channel Bandwith(200MHz)를 확보하기 위해서 두개 사용한 걸로 기억한다. 
만약, LoRA device로만 사용한다면, Transciver 한개면 충분하다. 


2. ESP32 의 WIFI 자료분석  

ESP32에서 제공하는 WIFI의 기능들을 간단히 알아보도록 하자. 

  • ESP32 WIFI Guide 
ESP32 WIFI Feature들을 간단히 정리해서 알아보자. 
  • Support station-only mode, AP-only mode, station/AP-coexistence mode : 각 3개모드 제공 (STA/AP/AP+STA)
  • Support IEEE 802.11b, IEEE 802.11g, IEEE 802.11n and APIs to configure the protocol mode (802.11bgn 지원 및 Configuration 가능)
  • Support WPA/WPA2/WPA3/WPA2-Enterprise and WPS : 암호화 부분 거의 제공 
  • Support AMPDU, HT40, QoS and other key features: WIFI Layer 2관련내용으로, Bandwith, QoS 관련내용 
  • Support Modem-sleep: Power Management 기능 
  • Support the Espressif-specific ESP-NOW protocol and Long Range mode, which supports up to 1 km of data traffic: ESP사 전용 Protocol로 Lora 같이 ISM Band 사용할거 같음(LR)
  • Up to 20 MBit/s TCP throughput and 30 MBit/s UDP throughput over the air
  • Support Sniffer: Smart Config 때문에 필요(WIFI STA/AP+STA) 
  • Support both fast scan and all-channel scan:  fast scan은 좀더 알아봐야 할거 같음 
  • Support multiple antennas: MIMO???
  • Support channel state information: 이 부분은 좀더 확인 


2.1 ESP32 의 WIFI 관련정보 

  • ESP32 WIFI 성능개선법 
ESP32의 경우 기본적으로 LWIP 와 WIFI를 연결하여 사용되어지며, 각 Buffer도 세부조절이 가능하다. 
한마디로 적절하게 설정해서 성능을 향상하라는 것이며, 아래의 각 설정에 대해서 세부적으로 알아보도록하자. 
각 설정에 따른 성능표를 제공하고 있으므로, 이를 참조하자.  

  • ESP32 WIFI PSRAM기반의 Buffer 설정 
WIFI Buffer를 PSRAM을 사용한다고 하는데, 각 설정하는 법과 성능확인 
WIFI Buffer를 Static or Dynamic 설정인데, 동적할당도 문제가 생기면 동일하게 한계는 있는 것 같다. 
WIFI Buffer 와 LWIP Buffer 는 밀접한 관계이므로 각 설정을 알아두도록하자 

  • WIFI STA 의 Beacon Timeout 
ESP32의 WIF STA일 경우 WIFAP가 살아있는지 확인을 위해서 60개 becaons을 받아 AP의 존재여부를 확인하는데, 
이때,  Layer 2의 Beacon이 Timeout이 발생한다면, Layer 2의 Probe Reqeust를 보내 확인 AP의 연결상태를 확인한다는 내용이다. 
결론적으로  WIFI STA 주기적으로 Beacon을 받고 Timeout 되며 Probe Reqeust로 재확인하고 실패하면, WIFI STA는 DISCONNECTED로 됨 

  • ESP32 Low-Level TX API 
ESP32에서 제공해주는 Layer2의 Management Packet 사용가능한 API
beacon/probe (request/response)/action/Qos 지원

  • ESP32의 WIFI STA의 Scan방식 
WIFI STA일 경우, Active/Passive Scan 다 지원하며 default가 active scan 방식이라며, 각 다양한 Scan방식을 확인 가능
  1. All-Channel Background Active Scan
  2. All-Channel Background Passive Scan
  3. All-Channel Foreground Active Scan
  4. All-Channel Foreground Passive Scan
  5. Specific-Channel Background Active Scan
  6. Specific-Channel Background Passive Scan
  7. Specific-Channel Foreground Active Scan
  8. Specific-Channel Foreground Passive Scan 

  • ESP32 WIFI Channel State Information
Channel 상태 정보라고 하는데, Sub carrier를 같이사용하여 이용하는 것 같다.  

  • ESP32 의 WIFI AP 설정 
AP를 설정할 경우, Channel은 Country Code에 의해 변경되어지며, 이는 미국/유럽 및 나라마다 사용하는 채널이 조금씩 다름 

  • WIFI HT20/40
WIFI의 Bandwith 설정 


ESP32에서 제공하는 WIFI/BT의 RF Calibration 


ESP WIFI Mesh
ESP에서 제공해주는 기능으로 Mesh기능으로 추후에 이부분을 개인적으로 좀 더 해보도록하겠다. 


2.2 ESP32 WIFI Sniffer Mode

ESP32에서 WIFI Sniffer를 사용하는 이유는 아래의 SmartConfig 기능이 때문일 것이다.

  • WIFI SmartConfig 란?
TI에서 개발되어진 WIFI Provisiong 특허기술이라고 하며, 최근 회사에서 사용해서 알게되었다.
보통 WIFI STA 의 경우,  WIFI AP에 접속하려면, SSID/PW 정보를 WIFI STA에서 직접 입력 후 이를 Provisiong, 즉 암호화해서 전달해준다.
WIFI STA에서 Provisiong은 Layer 2부터 변경해서 하는데, 상위 특허기술은 내 생각에는 획기적이라고 생각들었다. (역시 TI, 특허도 오픈하고) 

ESP32, SmartConfig가 지원되는 WIFi STA 되면,  WIFI AP 접속을 다른 WIFI STA에서 쉽게 제어가능하다. 
ESP Touch 의 Android 앱을 설치한 후 핸드폰(WIFI STA)에서 UDP로 SSID/PW를 Broadcast전송하다.
이를 ESP32가 Sniffer Mode에서 상위 UDP기반의 SSID/PW를 받아 WIFI Provisiong 진행한다.


SmartConfig (WIFI Provisioning)


SmartConfig 필수 조건사항 
  1. ESP32 or ESP8266:  ESP32의 WIFI STA Mode 설정과 WIFI Sniffer Mode 지원
  2. Android (WIFI STA Mode)기기: ESP Touch App 설치 

ESP Touch APP과 ESP32 동작순서  
  1. ESP Touch APP  SSID/PW 입력 , 이 정보를 UDP 전송 
  2. ESP32은 WIFI STA/Sniffer 기능으로 상위 UDP 정보(SSID/PW)획득
  3. ESP32은 받은 SSID/PW기반으로 WIFi STA Provisiong 진행 
  4. ESP32의 WIFI STA 은 WIFI AP 접속완료  
한마디로 Provisiong 전에 UDP로 몰래 빼어보내고, 이 정보 받아 실제 WIFI Provisiong 진행한다는 것이다. 
https://www.espressif.com/en/products/software/esp-touch/overview

ESP32 SmartConfig (Sniffer기능 필수), WIFI STA으로 가능 

ESP32 SmartConfig 소스 
아래의 소스를 보면 동작원리를 대충알게되어진다. 

ESP32 SmartConfig Example 


2.3. WIFI STA Monitor(Sniffer) 모드

ESP32가 Packet Sniffer 모드를 지원한다고 해도, 외부에서 ESP32의 Packet을 Sniffer하고 싶어할 것이다. 
이를 위해서 다른 Linux Board or Android Board or Laptop 에서 설정하는 법을 간단히 소개한다. 
만약 Linux or Android에서 하고 싶다면 wifi driver에서 설정 monitor 변경 후 tcpdump를 사용하여, Wireshark에 연결하면 될거 같다. 
iwconfig 이용하여 monitor (promiscous)로 변경가능하지만,  WIFI Driver에서 미제공 및 HW가 안되는 경우가 있으므로 주의해야 한다. 

tcpdump 와 Wireshark 사용법 

  • 확인사항
각 WIFI STA 모드에서 Monitor모드가 지원되는 지 반드시 확인 

  • Rasperry Pi4의  WIFI 설정확인 (Monitor 미제공확인)
원래 Rasperry Pi4에서 iwconfig로 monitor 하려고 했으나, Raspberry Pi4의 WIFI는 monitor가 미지원되는 것으로 확인
이전에는 WIFI Monitor는 USB WIFI Dongle로 진행했던거 같으며, Odroid 때도 동일한 것 같음(Odroid는 WIFI가 동글로제공) 

  • Laptop 기반으로 wireshark로 설치 
우선 나의 Laptop의 WIFI가 monitor mode가 지원되어 아래와 같이 진행

Laptop 의 ifname 변경 
ifname이 너무 길어서 아래와 같이 간단히 변경 
$ sudo ip link set name eth0 dev enp7s0
$ sudo ip link set name wlan0 dev wlp0s20f3

Laptop 의 Ubuntu 20.04 Wireshark 설치 

/usr/bin/dumpcap 의 권한문제 발생하여 아래와 같이 변경 
$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install wireshark
$ sudo chmod +x /usr/bin/dumpcap
$ wireshark

Laptop 의 WIFI Monitor변경 
Laptop의 WIFI가 Monitor가 지원되는 것을 확인
$ iwconfig  // Manage Mode 확인 
$ iw list | grep monitor // WIFI Phy 정보확인 및 monitor 지원여부확인 

$ sudo ifconfig wlan0 down
$ sudo iwconfig wlan0 mode monitor
$ sudo ifconfig wlan0 up

$ wireshark       //WIFI Monitor 모드로 동작확인  

WIFI Packet Capture (WireShark)
아래는 참고만 하시면 되겠다. 


3. Android의 WIFI 정보정리 

Android에서 사용하는 기본 WIFI 정보들이며, Google에서 쉽게 설명이 제공되어 있어 다음과 같이 링크로 연결 

  • Android WIFI Overview
Google에서 제공하는 WIFI Overview로 관련부분에 대해 설명이 잘나와있다. 
  https://source.android.com/devices/tech/connect/wifi-overview

  • Android WIFI Scan 
WIFI AP Scan부분이 궁금하여 관련부분을 찾았으나, 현재 자세한 설명은 없어 아래에서 Android WIFi Scan은 Passive 방식 
현재 Android WIFI Scan은 default로 Passive Scan 방식이라고 함 
 
  • WIFI AP/STA 동시 실행 
  

3.1. Android/Linux WIFI 의 구조정리 

오래전에 Android WIFI의 AP/STA/ Direct 의 경우 각각의 구조를 정리한 것이지만, 현재와 많이 다를 것 같다. 
구조만 참고하자. 

Android WIFI STA의 구조 

Android WIFI AP의 구조 


3.2. WIFI Driver Porting 방법 

오래전 집에서 Odroid 기반으로 WIFI Driver를 간단하게 Porting한 것으로 자료를 대충정리했지만, 참고하시길 

3/21/2022

VS Code Git 사용법 및 Merge

1. VS Code에서 Git 사용법 및 Merge  

VS Code기반으로 개발을 하다보니, Git도 자연스럽게 VS Code로 전부 해야 할 것 같아 관련자료들을 수집해보고, 테스트 해본다. 
VS Code에서 보면 주로 Source Control 와 GitLens로 이용하여 Git을 Control 하고 사용하는 것 같다. 

개인적으로 보면 GitLens는 잘 동작해서 좋기는 한데, 복잡해서 별로 사용하고 싶지가 않다.
난 소스트리 처럼 간단하고 심플한 기능으로 쉽게 동작되는 것이 너무 좋다. 
그래서 가능하다면, VS Code의 기본기능인 Source Control 이 GitLens보다 더 심플해서 이 기반으로 정리하려고 한다.  
항상 느끼지만, Git을 사용하다가 사용안하면 자꾸 명령어도 까먹는다. 


1.1 VS Code Version 기본 사용법  

  • VS Code 의 Source Control 준비 
VS Code의 Source Control 이동 후 Remote도 확인 가능하도록 아래와 같이 View를 확장 

아래그림 A. 버튼을 눌러 아래와 같이 Remote/Local 을 동시보도록 확장설정
  1. Source Control Repositories:  사실 Local 정보, 전체 Repository 를 Control, Remote Repostory를 쉽게 확인가능 
  2. Source Control: Local Source Git 정보, 주로 현재 소스 Control을 함 


상위그림 B. Git Graph: 각 Commit된 것을 Graph로 보여줌
상위그림 C. Branch:  Remote의 Branch로 정확하게 Checkout 기능


주의사항
상위 C. Branch를 선택하면 다른 Branch 와 tag가 나오는데, 이를 변경시 Checkout이 되어 소스가 변경되어진다. 


1.2 Git Checkout 방법 및 주의사항

  • Git Checkout 하기전 확인
상대방이 나 몰래 Remote에 Push를 했을 경우, 현재 나의 Local에는 이게 반영이 안되었으므로, 
반드시 Git Pull or Git Sync(Git Pull and Push)를 해줘야한다. 
그래야 SOURCE CONTROL REPOSITORIES 가 항상 Remote 와 동일해진다. 
Git 항상 다른 사람과 같이 작업하므로 이부분은 모든 부분에서 확인해야함 

  • Git Checkout 이란?
현재 수정 중 혹은 수정완료 후, 갑자기 다른 Commit or Branch 소스로 변경해서 각 소스를 확인해야 하는 경우가 발생한다. 
이때 다른 Git Commit or Git Branch으로 Local 소스변경하는 것이 Git Checkout이다. 


보통 VS Code에서 CheckoutGit Graph 기반상위 C.Branch 를 이용하여 사용하는 것이  가장 편한걸로 생각되어진다.

이때 새로 생성된 폴더와파일은 제거가 되지 않는 경우가 많으므로, 주의하도록 하자 


  • 방법-A  상위그림 C.Branch 선택시 할 경우 
Checkout 동일한 기능이지만, (Branch/Tag) 단위로만 이동되어지며, 쉽게 해당 Local 소스 변경되어진다. 
이전에 소스수정중이라면 반드시 주의해야하며 Backup용으로 새로받아 진행해도 된다. 

  • 방법-B  상위그림 B. Git Graph 기반의 만약 Commit 단위로 Checkout 
상위 B. Git Graph를 실행하여, 해당 원하는 Commit으로 찾아가 오른쪽 메뉴로 Checkout  현재 Local 소스변경하여 확인한다. 
이 역시 소스 수정중이라면 반드시 주의해야한다.   
 


이외에도 다양한 방법이 있겠지만, 나의 경우는 이게 편하다. 

1.3 Git Stash 기능 

Checkout을 하여 다른 것을 보고 싶은데, 현재 Commit을 해야할 File들이 있다면 이때 Git Stash를 이용하자.
이 임시파일들을 Git의 Stash에 저장하고, Checkout하고 나서 변경되어진 Commit or Branch에 이를 적용가능하다. 

  • Git Stash 의 예
내가 소스를 수정중인 File들을 임시적으로 저장하는 기능이 바로 Git Stash 기능이며, 나의 경우 
주로 Git checkout 을 한 다음 그 Version 이 Git Stash이를 이용하여 적용을 한다. 
VS Code에서 사용할 경우, STASHES라는 곳에서 확인가능 


2. VS Code에서 Git Merge 방법정리  

  • Git Merge 하기전 확인
상대방이 Remote에 Push를 했을 경우, 현재 나의 Local에는 이게 반영이 안되었으므로, 
반드시 Git Pull or Git Sync(Git Pull and Push)를 해줘야한다. 
그래야 SOURCE CONTROL REPOSITORIES 가 항상 Remote 와 동일해진다. 
Git 항상 다른 사람과 같이 작업하므로 이부분은 모든 부분에서 확인해야함 

  • Git Merge 방법 
Git Merge에도 방법이 있으며, 아래와 같이 간단히 정리한다.  
  1. 현재 Branch의 특정 Commit들만 (Cherry-pick)적용하여 다른 Branch에 Merge 적용 
  2. 현재 Branch 와 다른 Branch Merge   (각 Branch 단위로 Merge 진행)

2.1 VS Code 에서 특정 Commit 만 Merge 방법 

git cherry-pick command를 사용하며 특정 Commit 만 Merge방법 

Cherry Pick Merge라고 하며아래와 같이 특정 Commit만 찾아 Merge를 진행. 
  • 좌측 release branch  : 
    • develop branch에서 필요한 것만 가져와서 최종 Release 할것 
  • 우측 develop branch : 
    • Commit F  : 넘어감 
    • Commit E  : 이것만 반영  
    • Commit D : 넘어감 
    • Commit C : 원래 Commit C 반영할 차례(빨간색)지만, Commit E만 반영할 예정 
    • Commit B : 이미 Release 반영 
    • Commit A : 이미 Release 반영 

Commit D는 생략 
Commit E 만 release 에 merge 하고 싶을 경우 아래와 같이 cherry-pick 사용 


https://geekwebcast.com/git-cherry-picking-with-vs-code-part-1/


https://geekwebcast.com/git-cherry-picking-with-vs-code-part-1/


상위그림 B. Git Graph 화면으로이동 
  1. Branch Show All
  2. Show Remote Branches 체크 확인  
  3. Refresh Button (Sync)  

만약 특정 Branch만 보고자 하면 해당 Branch만 선택

  • Git Graph 에서 원하는 Commit을 찾기  
    1. 상위 Git Graph를 두군데서 확인가능 (Remote 와 Local)
    2. 항상 현재 사용중인 Branch가 맨 좌측에 위치 (현재 develop)
    3. Local 와 Remote 의 Commit History가 다르다면, Synchronize Change를 맟춰줘서 동일하게 보도록한다.
Git Graph에서도 항상 Current Branch가 맨 왼쪽에 나옴  

  1. Git Graph에서 원하는 Develop Branch에서 원하는 Commit을 찾음 
  2. 우측 눌러 Cherry-pick 선택 


Cherry Pick 선택하면 Yes Cherry Pick 선택 후 진행 (옵션무시)


조건사항-1. Cherry Pick Merge를 진행하는데, 소스상에서 겹치는 부분이 없다면, 
아래와 같이 Sync Changes 2 (Cherry Pick 갯수) 확인 
바로 자동으로 Merge진행 



조건사항-2. Merge를 진행하는데, 소스상에서 겹치는 부분이 있다면,
아래 Branch Merge와 거의 동일 


모든 기준은 상위에서 설정한 Current Branch기준 
Current Branch에 Merge 된 것을 확인 


세부내용 출처 (아래 링크 참조) 


2.2 VS Code Branch Merge 방법 

Git Merge를 할 경우, 
Bracn Merge 이든, Cherry-Pick 이든, 1개 File에서 기존 것 과 새로운 것이 겹치면 항상 선택을 해야한다. 
Merge Changes-> 각 파일  
  1. Accept Current Change: 기존 그대로 유지 
  2. Accept Incoming Change: 새로 적용된 것으로 변경 
  3. Accept Both Change: 두개를 다 적용 
  4. Comare Changes: 변경사항 비교 
    

1. Merge Changes 확인 



2. Merge Changes -> .gitignore 확인 
  1. 대부분 새로운것을 대체하여 사용하므로 Accept Incoming Change로 변경
  2. 기존것을 유지하고자 하면 Accept Current Change 진행  



3. Github 의 Release 방법(Tag) 

VS Code에서 Tag를 할수도 있겠지만, 나의 경우는 Github를 사용할 경우, 직접 Github에서 Tag를 하는 것을 선호하는 편이다.
이유는 Release시 Git에서 Tag하는 것 보다 편하며, 직접 필요한 파일도 추가가능할 뿐아니라, 추후 수정관리하기도 좋다.
 
최종 Release 할 경우, Target Branch을 선택하여 정해야 하므로 
미리 VS Code에서 본인의 Git History(View Graph로 확인)

  • Github Release Menu
  1. Github의 소스에서 Release로 이동 
  2. 우측 draft a new releae 선택 

  • Draft a new release Menu
  1. 좌측 choose a tag 버튼선택  
  2. choose a tag 의 빈공간 (Find or Create a new tag)
    1. release/v1.xxxx or v1.xxxx 새로이름 Tag 생성
  3. Target 선택 (release 할 branch or commit 위치) 
  4. Release Title 작성
    1.  Release v1.x.x 
  5. 내용은 Markdown이 되므로 되도록 Markdown Rule로 적용가능
    1. ** v1.x.x **

    2. ** Features and Enhancements **
    3.    A. updated something 
    4.    B. added new function related to something

    5. **Fix Bugs **
    6.    A. fixed the bug related to something 
  6. Preview로 반드시 확인  
    1. 상위 작성된 Markdown Preview 확인 
  7. Attach binaries  (옵션)
    1. 기본으로 Assets 에 Source는 zip 과 tar.gz 제공
    2. 이외 Binary를 추가로 넣을 경우, Releae Binary 와 OTA Binary  



Asset (Target기반으로 Source Code zip/tar.gz 파일제공 ) 

상위 내용은 추후  Release 후에도 수정도 가능하므로 실수해도 괜찮다.  


4. Git 기반의 기타기능들 

VS Code 기본 메뉴에서 Explorer 에서 각 File을 우측클릭메뉴 기능 

  • VS Code File 우측 메뉴
일반 File 과 비교할 경우 
  1. compare with selected 
  2. select for compare 
Git 관련 Command 
  1. commit changes  (다른 commit 과 branch와 비교) 
  2. open file history  ( File 변경사항들만 있는 Commit 전부확인)
  3. open Timeline  (Commit 과 File Save History까지 확인가능)
  4. Git: View File History ( 전체를 쉽게 보지만, Git Graph를 더 추천)



5. VS Code의 필요기능정리  


VS Code를 사용하면 , 많은기능들이 제공하는데, 보통 단축키로 제공으로만 제공해주는 것들이 많은 것 같다. 
매번 까먹어서 다시 링크로 넣어두도록 한다. 

  • VS Code 관련 단축키 확인 
Code 정렬시 사용하며, 좌측/우측 (가장많이 사용)
Line Shift   ( Ctrl+[ , Ctrol+] )

  • VS Code 의 laucnch.json 사용법
VS Code의 Run and Debug에 연결하여 사용가능하다.
.vscode 안에 넣어두면된다. 

  • VS Code의 Task.json 사용법
Powershell 기반으로 이용가능하므로 이용하도록하자.