Skip to content
Benjamin Vernoux edited this page Oct 4, 2016 · 281 revisions

The first place to look for open tasks that you can help with is the Issues List.

The following list will be removed once everything is moved to the Issues List, completed, or obsolete. If you are interested in helping with any of these tasks, coordinate with the person in parentheses. Try IRC first (freenode channel #hydrabus), then email. ###HydraFW v0.8 Work In Progress:

Generic:
HydraBus specific:
HydraNFC specific:
  • Add command sd (sdcard commands)
  • Add Example bbio_hydranfc_init.py for HydraNFC init using Console mode + switch to bbIO mode for SPI2 Init & communication with TRF7970A (HydraNFC shield)
  • Read / Display / Save Mifare Ultra Light tag data (64bytes raw data of the Tag)
  • Emulate Mifare Ultra Light tag (Beta version does not work with phone) (7Bytes UID and 64bytes data support only READ command)
    • emul-mf-ul command add optional filename (same 64bytes raw file previously written to microsd by read-mf-ul)
    • See commit [d569fcd8] 27-May-2016 (https://github.com/bvernoux/hydrafw/commit/d569fcd853415d7d56e54ef773315abb45015285) (modified scan command)
    • This feature is a Beta version and will be rewritten using low level mode SDM TX/DM1 RX in order to be hard real-time & ISO compliant, which will also fix the emulation when using a Phone...
  • Sniffer improvements
  • Sniffer command cleanup
    • Move sniff-dbg and sniff-raw command to sniff sub command debug and raw
  • Clone Mifare Ultra Light tag (Work In Progress bvernoux)
    • clone-mf-ul command add optional filename (64bytes raw file written to microsd same as read-mf-ul)
      • Read Mifare Ultra Light card then Emulate it
      • Add optional filename to save Mifare Ultra Light tag data read (64bytes raw data of the Tag) to microSD

###HydraFW TODO/IDEA:

Generic:
  • Add new utilities:

    • SPI for non intrusive sniffer for MISO/MOSI line (with support of /CS) => Already supported by Binary SPI mode
    • I2C for non intrusive sniffer for SDA line (with support of /CS)
    • Multimeter up to 3.3V/7.2MSPS(12bits) with logging in µSD file in real-time.
  • Bootloader idea using official HydraBus (bootloader) OpenMoko USB ID:

    • USB DFU boot like implemented in actual firmware by keeping UBTN pressed during power ON.
    • Read a configuration file from SDcard(if present) and boot a custom firmware from SDcard(execution in SRAM).
    • other idea TBD.
  • Protection/Debug features(for developer):

    • Implement basic stack overflow/underflow check with canaries between each stack (probably need chibios patch)
    • Implement advanced stack overflow/underflow protection using M4F MPU

To be checked depending on latest ChibiOS v16.1.4 or v16.2.0 USB CDC driver performances.

  • Implement new USB stack(replace the one from chibios) based on STM32Cube USB Host/Device
    • Implement for USB1, USB Composite with:
      • USB CDC(for terminal)
      • Raw Bulk IN/OUT(used for binary mode)
    • Implement for USB2, USB Composite with:
      • USB CDC(for terminal)
      • Raw Bulk IN/OUT(used for binary mode)
      • Mass Storage (using microSD card)
    • Implement Ctrl-C Abort which work like UBTN press to stop waiting.
  • Implement new SD card driver(replace the one from chibios) based on STM32Cube HAL
    • Implement detection & setting of high-speed microSD, in order to set frequency to 48MHz (instead of default 24MHz).
    • Check possibility to avoid IRQ and use DMA for microSD access in order to use microSD to read/write during real-time task (SPI/UART/I2C sniffer, read ADC, read GPIO, NFC sniffer/log...)
  • Implemente Binary Mode (Raw Bulk IN/OUT):
    • In Host tools(Windows/Linux... using libusb) to communicate with binary mode SPI, I2C, UART.
HydraBus specific:
  • I2C binary mode
  • BBIO_1WIRE code
  • Use "SPI1", "UART2" etc instead of 1/2 when specifying device to use the same for "DAC1" & "DAC2"...
  • Generate DAC output advanced mode using waveform and DMA to generate Sin, Square ...
    • Add Offset and Frequency parameter for waveforms.
  • i2c:
    • Slave mode
    • Number of bits (7, 8, 10)
  • spi:
    • Number of bits (any number)
  • Waveform generator
  • Measure time between two pin states using hardware timer
  • New modes:
    • Parallel Bus (2 to 32bits) with mode sniffer, read and write (with option to log data in realtime to MicroSD) (depending on feedback)
    • 1 or 3 Wire with mode sniffer, read and write (depending on feedback)
    • Basic Scope up to 3.3V and up to 7.2MSPS/12bits
    • Nand Flash x8 and x16 support (see Nand support #12)
  • USB 1.x/2.0 LS/FS sniffer mode (using special passthrough mode with logging directly to MicroSD) (see USB sniffer capability #21)
HydraNFC specific:

###Hardware Extension/Shield

  • Extension using EEPROM:
    • Implement support of EEPROM extension detection with same hw & content as Beagle bone defined here

###Development Environment:

  • Tutorial for EmBitz to load project and debug it (Windows only)
  • Tutorial for Eclipse/ChibiStudio to load project and debug it (Windows only)
  • Tutorial for Eclipse to load project and debug it (Linux)

###DONE (please test with HydraFW v0.7):

  • CAN1 and CAN2 with HydraOBD Shield
  • JTAG (with different MCU/CPU and report what work what do not work ...)
  • 2-wire (I have tested mainly the write with different speed need to check the read ...)
  • Logic Analyzer mode (to do more tests)
  • Binary mode (to do more tests)

How to Flash/Use HydraFW

How to Build/Flash/Use HydraFW

Developer Getting-Started with HydraBus and STM32CubeIDE

Hardware

Firmware (hydrafw) performances

Firmware (hydrafw) Application guides

Firmware (hydrafw) guides

How to Help

Clone this wiki locally