研究筆記 - Bus Pirate

最後編輯:2016-08-10 建立:2016-03-31 歷史紀錄

 

WUULONG S緣起

 

  • 零件分享 - 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

 

  • Selftest

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.

 

  • ADC Test

將 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
    • Test run

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.

 

  • Setup GPIO High

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

  • Using MACRO

Macros, user macros

  • Save user macro
    • 好像沒有這個功能
  • Trace firmware code

firmware

  • main.c
  • procMenu.c->serviceuser : CLI parser
  • most of define in base.h
  • ICE Debug
  • GPIO 不夠的問題
    • 不改 Firmware 的技巧是什麼?
    • 改 Firmware, 跳線能做到多少?
    • 改 Firmware 不跳線能做到多少?
    • 外掛 Multiplexer 能做到多少?

 

BP 自動化層級區分

  • 手動
  • 使用內建 system script, user script, script engine
  • 使用 python 自動化執行與報表輸出
  • 機構與制動
    • 開關 120V
    • 按 reset
    • 自動放 IC 到 socket
  • 需外部麵包板級協調電路
  • 需外部硬體協同輔助運作
    • 自動化另外一個板子與本體協同

 

共用自動測試基本情境與需求

  • 開機 100 次,檢查 LED or GPIO
    • 驅動 Relay 開關機,檢查 GPIO
  • 開機用 UART 檢查特定輸出或值
  • 自動 UART /USB 升級,固定執行外部程式

 

輔助器具研究

  • 自動按 Reset Button

摘自 樂高機器人創意寶典 181 種絕妙新組合

 

 

相關專案