Jekyll Form

  • 반드시 파일명은 *.md으로 해야 함.
  • date가 미래면 안됨. 서버시간 이전 Post만 보여줌
    ---
    layout: post
    title: "Jekyll Form"
    date: 2019-04-22 00:30:00 +0900
    comments: true
    tags: [tags1, tags2]
    ---
    

Windows10에서 VSCODE로 aws에 sFTP로 접속하는 방법

이전 게시물에서는 Arch Linux에서 VSCodeHome ServersFTP로 접속하는 방법

현재 게시물에서는 Windows 10에서 VSCodeAWS ServersFTP로 접속하는 방법

[
	{
		"name": "sciomagelab",
		"host": "sciomagelab.com",
		"port": 22,
		"type": "sftp",
		"username": "ubuntu",
		"path": "/home/ubuntu",
		"autosave": true,
		"confirm": false,
		"privateKey": "C:\\key\\sciomagelabAWS.pem"
	}
]

RK3399 USB TYPEC 분석

서론

  • 일반적으로 firefly RK3399 펌웨어 업데이트를 위해
    1. USC Type-C 커넥터를 Host 컴퓨터에 연결하고
    2. 이미지를 Flash함
  • 위 두 상황에 대해서 하드웨어와 소프트웨어 관점에서의 분석을 함

본론

어떻게 연결되나

  • USB-TypeC 커넥터는 개발보드 제조사에서 제공하는 Position 파일에서 확인 가능
  • J9, USB_TYPEC_115H0, TYPEC-24M-A1M1A5-07LH으로 명명됨
  • 눈에 보이는 커넥터 부터 차근차근 알아 보기로 함

1. 커넥터

1-1. 일반적인 USB C타입

일반적인 USB TYPE-C에 대해 먼저 알아 봄

  • A1 ~ A12, B1 ~ B12 총 24핀
  • GND : 4개
  • VBUS : 4개 (+V 라고도 불림, 5V DC)
  • D+ : 2개 (USB 2.0 데이터 신호선)
  • D- : 2개 (USB 2.0 데이터 신호선)
  • TX/RX 1/2 +/- : 8개 (USB 3.0)
  • SBU : 2개 (새컨드 버스)
  • CC : (2개, 컨피그래이션 채널, 장치연결감지, 파워 딜리버리)

추가 설명

  • DFP(downstream facing port) : 호스트
  • UFP(upstream facing port) : 디바이스
  • DRP(Dual-Role Port) : OTG

커넥터 핀맵

A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
GND TX1+ TX1- VBUS CC1 D+ D- SBU1 VBUS RX2- RX2+ GND
GND RX1- RX1- VBUS SBU2 D- D+ CC2 VBUS RX2- TX2+ GND

1-2. 데이터 시트에서의 핀

  • VBUS_1 ~ 4 : VBUS_TYPEC
  • CC1 ~ 2 : TYPEC_CC1 ~ 2 : U37
  • SBU1 ~ 2 : TYPEC0_SBU1 ~ 2 : RK3399
  • DM1 ~ 2 : TYPEC0_DM
  • DP1 ~ 2 : TYPEC0_DP : RK3399
  • SSXXX_X : TYPEC0_XXXX : RK3399
  • GND1 ~ GND4 : GND
  • HOLE_1 ~ 2
  • GND_E1 ~ 8 : GNE

1-2-1. UBUS

  • UBUS는 5V DC, 전원에 해당하는 것 같음
  • VBUS_TYPEC와 연결 돼 있음
  • Power Tree를 보면, SY6280AAAC과 연결 됨
  • SY6280AAAC는 5.5V 1A USB 파워 분배 소자임

1-2-2. CC

  • CC1과 CC2는 TYPEC_CC1으로 FUSB302MPX과 연결 됨
  • FUSB302MPX는 프로그래머블 Type-C PD 컨트롤러임
  • 소스와 싱크(=호스트와 디바이스, =DPF와 UFP)간 연결 감지
  • PD : 파워딜리버리, 20V 5A 100W 고속 충전 가능

여기서 Rd, Rp라는 용어가 나옴

  • Rd : pulldown resistors
  • Rp : pullup resistors

1-2-3. SBU

  • TYPEC0_SBU1을 통해서 RK3399로 연결됨

1-2-4. DM(D-), DP(D+)

  • TYPEC0_DM을 통해서 ESD5304D을 지나 RK3399로 연결됨
  • ESD5304D는 TVS(Transient Voltage Suppressor, =과도전압억제)
  • 노이즈 없애는 TVS를 통해서 RK3399로 연결된다고 보면 될 듯
  • USB 2.0 기존의 데이터 라인

1-2-5. RX/TX 1/2 +/-

  • TX1 +/-
  • TX2 +/-
  • RX1 +/-
  • RX2 +/-, 총 8개
  • ESD5304D을 지나 RK3399로 연결됨

하드웨어는 이정도… 다시 소프트웨어를 보는게 좋겠음.

소프트웨어

  • 소스 : https://github.com/linuxerwang/rkflashkit.git

1. main()

  • wait_for_one_device()에서 하드웨어 연결 상태 확인
  • list_devices()로 디바이스 목록을 갖고 옴

하 이건 또 뭐야 usb bulk

  • 소스를 보면 usb bulk라는게 나옴
  • 뜬금없이 USB에 대한 공부가 될 수 있음

일반적인 USB에 대한 정보

  • Data 전송방식은 다음 4종류
    • Control : PnP Data 전송, 주변 기기 제어에 사용
    • Interrupt : 주기마다 소량의 Data
    • Bulk : 비주기적 대량 Data 전송
    • Isochronous : 일정 주기마다 일정 Data, 소리/화상
  • Bulk 전송 상세
    • 많은 량을 정확히 전송
    • 에러 발생시 재전송
    • 전송량은 보장하지만, 대역폭/지연은 보장하지 않음
    • 단일방향 통신, 양방향 통신시 Bulk Pipe2개 필요

RK3399에 대하여

  • TRM Part2 4.4Register Description을 보면…
    • .. 모르겠다…

생각을 좀 바꾸어서…

  • 생각 해 보면 무턱대고 USB를 연결하고 이미지를 쓰는게 아님
  • PWRKEY를 길게 누르고 RESET을 짧게 누르고.. 해야 하잖아

그럼 버튼을 좀 자세히 볼까

  • KEY1 : ST-1112RA
  • KEY2 : ST-1112RA

KEY1

  • 버튼이 닫히면, RECOVER가 Low였다가, High가 됨 (풀다운)
  • RK3399ADC_IN1이 High가 됨
  • 왜 ADC로 들어오지?

KEY2

  • PCIE_RESE :
  • RESET_L :
  • MCU_EN :
  • PE_RST :
  • OTP_RST :
  • 생각보다 여러개에 관여를 함

SAR ADC는 또 뭐야;;

참고 사이트

  • FierFly RK3399 데이터시트
    • https://www.t-firefly.com/download/Firefly-RK3399/docs/Chip%20Specifications/Rockchip_RK3399_Datasheet_V0.7_20160219.pdf
  • TRM Part1
    • https://dl.vamrs.com/products/rock960/docs/hw/datasheets/Rockchip_RK3399TRM_V1.3_Part1.pdf
  • TRM Part2
    • https://dl.vamrs.com/products/rock960/docs/hw/datasheets/Rockchip_RK3399TRM_V1.3_Part1.pdf

RK3399 Flash Tool 분석

Flash Tool 분석

출처 : http://en.t-firefly.com/doc/product/info/263.html

FireFly RK3399 -> Flash Image -> Linux

오픈소스는 두 종류가 있음

  • rkflashtool(멍령 실행) : https://github.com/Galland/rkflashtool_rk3066
  • rkflashkit(명령실행 + GUI) : https://github.com/linuxerwang/rkflashkit

A. rkflashtool

  • 그래도 명령어 실행만 하는 rkflashtool가 조금 더 간단 할 것 같음
  • 공식 사이트에 있는 링크를 보면 RK3066을 지원 한다고 돼있음
  • RK3066, RK3318지원도 있지만 RK3399는 지원 한다고 안나와있음

B. rkflashkit

  • 어쩔 수 없이 rkflashkit으로 분석
  • 2017년 11월 11일에 RK3399 지원 커밋(49d21c7)이 있음
  • Python과 GTK2로 개발 되어 있다고 함

rkflashkit 설치

install

git clone https://github.com/linuxerwang/rkflashkit
cd rkflashkit
./waf debian

오류와 해결

  • Arch Linux + Python + GTK2 가상환경 문제로 빌드 오류가 너무 많이 남
  • GTK가 꼭 필요한게 아니니 CLI 소스를 분석 하려 함
  • ./src/rkflashkit/climain.py파일이 있음
  • 다음 코드를 소스 맨 밑에 두고 python climain.py로 실행 하면 됨
    if __name__ == "__main__":
      # execute only if run as a script
      _main = CliMain()
      _main.main(sys.argv)
    

본격 분석

  • Python 코드이기 때문에 분석에 큰 어려움이 없음
  • 소스를 타고 들어가면 rktalk.py를 참조 하게 됨

Vendor/Product ID : 2207:330C

  • USB_CMD : 31Byte
ADD ID
0 U
1 S
2 B
3 C
4 (CID)
5  
6  
7  
8  
9  
10  
11  
12 (FLAG)
13 (COMMAND_0)
14 (COMMAND_1)
15 (COMMAND_2)
16 (COMMAND_3)
17 (OFFSET_0)
18 (OFFSET_1)
19 (OFFSET_2)
20 (OFFSET_3)
21  
22  
23 (SIZE)
24  
25  
26  
27  
28  
29  
30  
31  

vscode

1. Arch에서 VSCODE 설치

윈도우, 우분투 등 OS에 맞게 설치

yay -S community/code

2. ftp-simple 플러그인 설치

  • vscode 에서 좌측 하단 네모 아이콘
  • ftp-simple 검색 및 설치

3. 설정파일

f1키, 창에서 ftp-simple : Config

[
	{
		"name": "Name",
		"host": "domain.com",
		"port": 22,
		"type": "sftp",
		"username": "dkdk",
		"password": "password",
		"path": "/home/dkdk/src/blog",
		"autosave": true,
		"confirm": false,
		"privateKey": "/home/dkdk/.ssh/KEY_FILE"
	}
]
  • port : 22(sftp), 21(ftp)
  • type : 22(sftp), 21(ftp)
  • confirm : Overwrite confirm
  • privateKey : (Option) privateKey path

설정 후 ctrl + Alt + S 단축키로 사용


   Tags
blog ( 3 )
vs ( 1 )
ms ( 1 )
arch ( 1 )
rk3399 ( 2 )
flashtool ( 1 )
usb ( 1 )
type-c ( 1 )
aws ( 1 )
vscode ( 1 )
jekyll ( 1 )
kt ( 1 )
요금 ( 1 )
vim ( 1 )
key ( 1 )
keymap ( 1 )
coursera ( 1 )
google ( 1 )
ai ( 1 )
aws ( 1 )

About Me

I'm Junhyung