研究筆記 - Bus Pirate
緣起
- 零件分享 - SparkFun: Bus Pirate - v3.6a
- 捷克,這真是太神奇了,竟然有人這麼貼心的去解決驗證上的問題
- 當作板子或是做 IC 的時候,常常需要驗證各式各樣的介面
- 當我們買到新的零件的時候,也是首先要確定主板跟零件的介面能夠相符
- 問題是:要不是對硬體規格,或是那些介面很熟的人,要光看 datasheet 就確認沒問題是相當困難的,何況有些介面有很多不同模式,操作電壓,一不對齊,東西就是不動給你看
- 古時候,一般通用介面有一種方法是找,類似 51 的控制器,個別寫 code 去驗證,後來有 Arduion, 剪剪貼貼(主要是有範例)就方便多了。但是基本上,驗證時,最好是拿一個 golden 來驗證,Code 還改來改去哪裡知道是 code 有問題,還是待驗證的東西有問題?
- 這個零件就是正面嘗試解決這樣的問題,支援很多的介面,已經有命令列支援驗證需要的功能,也在 PC 上有程式碼(python,perl)支援驗證需要的程式,連操作電壓都可支援 0-5.5V。
- 驗證人員的福音,請參考
參考
零件主頁:https://www.sparkfun.com/products/12942
Bus Pirate v3.6a Hookup Guide
Bus Pirate wiki
Bus Pirate 101 tutorial
Bus Pirate menu options guide
實驗過程
- Serial Terminal use minicom
- minicom installation
- minicom -s ( for setup )
- 115200 N81, no hardware flow control
HiZ>~
Disconnect any devices
Connect (Vpu to +5V) and (ADC to +3.3V)
Space to continue
Ctrl
AUX OK
MODE LED OK
PULLUP H OK
PULLUP L OK
VREG OK
ADC and supply
5V(5.00) OK
VPU(4.99) OK
3.3V(3.30) OK
ADC(3.31) OK
Bus high
MOSI OK
CLK OK
MISO OK
CS OK
Bus Hi-Z 0
MOSI OK
CLK OK
MISO OK
CS OK
Bus Hi-Z 1
MOSI OK
CLK OK
MISO OK
CS OK
MODE and VREG LEDs should be on!
Any key to exit
Found 0 errors.
將 3.3V 接上 ADC 想量到 3.3V
reset(#) 後 Measure ADC(d) => VOLTAGE PROBE: 0.00V
因為 Power supplies 是 OFF, 需使用 PSU(W)
PSU(W) 在 Default mode 不支援,切換到 1-WIRE 後,Power suppliesn ON(W)
1-WIRE>d
VOLTAGE PROBE: 3.31V
- Try binary mode by using python
bus pirate python library and examples
- Code trace
- i2c-test.py
- i2c = I2C("/dev/ttyUSB0", 115200)
- pyBusPirateLite/I2C.py
- from .BitBang import BBIO => BitBang.py
- if i2c.BBmode():
- class BBIO:
- def __init__(self, p="/dev/bus_pirate", s=115200, t=1):
- self.port = serial.Serial(p, s, timeout=t)
-
- def BBmode(self):
- self.port.flushInput();
- for i in range(20):
- self.port.write("\x00");
- r,w,e = select.select([self.port], [], [], 0.01);
- if (r): break;
- if self.response(5) == "BBIO1": return 1
- else: return 0
i2c-test.py
Entering raw I2C mode: OK.
Configuring I2C.
Reading EEPROM.
0
0
0
0
0
None
Reset Bus Pirate to user terminal:
OK.
DIO>a
AUX LOW
DIO>A
AUX HIGH
將 3V3 PIN 連上 AUX PIN
DIO>@
AUX INPUT/HI-Z, READ: 0
DIO>W
Power supplies ON
DIO>@
AUX INPUT/HI-Z, READ: 1
Macros, user macros
- Save user macro
- Trace firmware code
firmware
- main.c
- procMenu.c->serviceuser : CLI parser
- most of define in base.h
- Embedded Script language - Basic
- Upgrade and debug firmware study
- Pirate-Loader console upgrade application (GNU/Linux, Mac, Windows)
- pirate-loader source
- The code include for mac, but compile may get compile error.
- ICE Debug
- GPIO 不夠的問題
- 不改 Firmware 的技巧是什麼?
- 改 Firmware, 跳線能做到多少?
- 改 Firmware 不跳線能做到多少?
- 外掛 Multiplexer 能做到多少?
BP 自動化層級區分
- 手動
- 使用內建 system script, user script, script engine
- 使用 python 自動化執行與報表輸出
- 機構與制動
- 開關 120V
- 按 reset
- 自動放 IC 到 socket
- 需外部麵包板級協調電路
- 需外部硬體協同輔助運作
共用自動測試基本情境與需求
- 開機 100 次,檢查 LED or GPIO
- 開機用 UART 檢查特定輸出或值
- 自動 UART /USB 升級,固定執行外部程式
輔助器具研究
摘自 樂高機器人創意寶典 181 種絕妙新組合
相關專案