iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 23
0

0. 前言

上篇Lab中有用到一個新的Adapter--Olimex ARM-USB-TINY-H!
本篇主要是簡單介紹一下,順便帶出內建的核心晶片FTDI FT2232H,
預計未來會花2~3個篇幅來解說OpenOCD與FT2232H之間溝通的方式!

不過,一樣,還是提醒一下,筆者非硬體背景出身(還在自學中),這部分的架構筆者也還沒說很熟!?
如果有任何錯誤,歡迎留言告知!
  
  
  

1. ARM-USB-TINY-H Overview

先來看看他有什麼功能:

* Debugs all ARM microcontrollers with JTAG interface supported by OpenOCD
* High speed USB 2.0 with lower latency time, RTCK adaptive JTAG clock up to 30Mhz and higher throughput achieve x3-x5 times faster programming speed than ARM-USB-TINY, can be used with all ARM devices for programming and debugging.

.....剩下不重要

--引用自: ARM-USB-TINY-H

如果還記得「Day 07: RISC-V Introduction」中的這張圖(我們只關心上半部的部分):

https://ithelp.ithome.com.tw/upload/images/20180110/2010732735pXrumMsi.jpg
---引用自RISC-V External Debug Support 0.13

你就會發現這個"Debug Transport Hardware"的前半段是接PC,後半段是接Target上的Debug Transport Module (DTM),也就是說,前半部是用USB跟PC溝通,而後半部是用JTAG跟Target溝通,而這個ARM-USB-TINY-H Adapter的主要功用就是將USB轉成JTAG!

再來看一下"JTAG connector layout"的部分:

https://www.olimex.com/Products/ARM/JTAG/_resources/openocd-jtag-layout.png
---引用自ARM-USB-TINY-H JTAG connector layout

你可以發現他是一個標準的JTAG介面,可以直接輸入Target端中的Debug Transport Module,並支援SRST、TRST、RTCK等功能!
  
  
  

2. FTDI FT2232H Overview

再來就不得不提到ARM-USB-TINY-H中的核心晶片--FT2232H!
一樣先來看一下主要功能:

* USB 2.0 High Speed (480Mbits/Second) and Full Speed (12Mbits/Second) compatible.
* Dual Multi-Protocol Synchronous Serial Engine (MPSSE) to simplify synchronous serial protocol (USB to JTAG, I2C, SPI or bit-bang) design.

....後面不重要

大概就是這樣,講完了!

簡單的說,在這邊主要是透過該晶片所提供的MPSSE(Multi-Protocol Synchronous Serial Engine)技術,將USB 2.0 High Speed訊號(這邊用的是FT2232H),轉成JTAG、SPI、或是其他等等同步序列協議!
當然,這邊主要是使用JTAG協議!

再來介紹一下架構圖的部分:

https://ithelp.ithome.com.tw/upload/images/20180110/20107327aX9L1pOAa9.png
---引用自FT2232H Hi-Speed Dual USB UART/FIFO IC Data Sheet

雖然該晶片提供雙通道的輸出,可以分別當作JTAG、UART等等來使用,不過由於這邊僅需一個JTAG通道,故不需要考慮下半部的部分!

從這個架構圖中可以看到,除了自帶一個EEPROM可以用來儲存包含VID、PID、USB String Descriptors等等資料外,最重要的部分就是黃色框起來的地方,分別是USB Protocol的Controller和MPSSE的Controller,後續的文章中,將會專文介紹到MPSSE的Command Processor!

主要功能解說如下:

  • EEPROM Interface: 用來存放USB VID/PID、Serial Number、USB String Descriptors(包含Manufacturer、Product Description等等)
  • USB Protocol Engine And FIFO Control: 將USB送進來的資料轉成FIFO,負責處理USB通訊協議
  • Dual Port TX Buffer: 將PC端送來的MPSSE Command轉成對應的資料後,儲存在此,準備轉送至Target上
  • Dual Port RX Buffer: 由Target端傳送回來的資料,經MPSSE Controller接收後,轉存至此
  • Multi-purpose UART/FIFO Controller(MPSSE): 最核心的部分啦,我們主要是透過這個Controller幫我們產生出JTAG對應的TMS、TCK、TDI訊號,並接收Target傳回來的TDO訊號!

題外話,Arty板子上也有內建FT2232的晶片,主要是透過FT2232將其連接至板子上的FPGA和SRAM的部分;透過這條通路,可以燒錄所需要的Netlist到板子上,這樣就不需要額外準備FPGA專用的Download Cable!
  
  
  

99. 結語

經過前面幾篇塞好塞滿之後,這篇終於可以稍微喘息一下!
單純是用來銜接前後兩個系列的部分,各位看官可以放輕鬆一下!
  
  
  

參考資料

  1. ARM-USB-TINY-H user's manual
  2. FT2232H Dual High Speed USB to Multipurpose UART/FIFO IC Datasheet Version 2.5

上一篇
Day 22: [Lab] 深入淺出 RISC-V 源碼剖析 (Final) - 執行 & Log分析
下一篇
Day 24: 您不可不知的FT2232H (2/3) - MPSSE Command Processor
系列文
系統架構秘辛:了解RISC-V 架構底層除錯器的秘密!30

1 則留言

0
高魁良
iT邦新手 5 級 ‧ 2018-01-10 16:24:05

QQ,我買了 Arty 之後只有燒錄過兩次...

自從FTDI的Driver被我蓋掉後,Vivado完全抓不到Arty板子,害我還要另外找Download Cable去燒錄........XD

我要留言

立即登入留言