Robert Fisk
0e42cf71dd
Correctly resume operation after HID device unplug/replug
8 years ago
Robert Fisk
e63525f868
Don't freakout when wakeup-from-sleep fails during keyboard report out.
8 years ago
Robert Fisk
7a1fe0fb65
Fix for mouse movement before waking from suspend
8 years ago
Robert Fisk
46ecbd410d
After an epic battle, suspend/resume/wakeup is now supported.
...
It turns out that suspend support on the STM32 USB core is buggy as
heck. Host mode cannot resume after suspend, and device mode cannot
receive resume or send wakeup signalling.
I managed to fake resume support by keeping Downstream and our connected
device running at full power, and simulating a wakeup event to the host
by disconnecting/reconnecting Upstream from the host.
8 years ago
Robert Fisk
32ca5cdcf9
HID class handles host restart correctly
8 years ago
Robert Fisk
c68151698b
Bugfixes for keyboard support: works!!!
8 years ago
Robert Fisk
bc2bf01cbe
Keyboard support implemented, but not tested
8 years ago
Robert Fisk
9b2b8972a4
Incomplete and untested implementation of keyboard support
8 years ago
Robert Fisk
5c18898611
Bugfix to allow reconnecting HID devices
8 years ago
Robert Fisk
975f2d00af
Fix dynamic crystal frequency detection based on board revision
8 years ago
Robert Fisk
85f965eaa0
Fix for occasional timeout on writes...
...
...Downstream was not always changing state correctly after closely
spaced interrupts.
Also improve flash-write-lockout function to avoid dependency on
optimisation level.
8 years ago
Robert Fisk
637f67fc14
Implement dynamic crystal frequency selection based on board revision.
...
Also fixed minor issue in hardware revision-detection function.
8 years ago
Robert Fisk
8c30d81521
Tweak USB descriptor string
8 years ago
Robert Fisk
05f71ca098
Implemented FIFO support in Downstream host, significant speed increase!
...
Each USB transaction passed to the driver now consists of multiple
64-byte packets. 8 packets when receiving, 4 packets when transmitting.
The STM32 silicon bugs out when more than 4 packets are scheduled to
write at a time :(
Reads 1.0MB/sec, writes 967kB/sec, not CPU limited :)
9 years ago
Robert Fisk
f9b7416df0
Sleep instead of busy-wait, approx 50% power reduction!
9 years ago
Robert Fisk
5d393a0100
HID class: handle host restart gracefully
9 years ago
Robert Fisk
6c96824da8
Implement multi-PID support so that Windows will recognise each device
...
class as a separate device.
9 years ago
Robert Fisk
650d10f22c
Support disconnect/reconnect of attached HID device
9 years ago
Robert Fisk
c78f5b1150
HID parser and wheel support works!
9 years ago
Robert Fisk
6f944a33db
Fixed click-drag issue.
...
TODO: find out why 8-byte device interrupt endpoints totally fail.
WTF???
9 years ago
Robert Fisk
b80b99d9ec
Fixed enumeration issues with low-speed devices:
...
- Unexpected second port-connected interrupt on cold boot with low-speed
device connected.
- Retry on failure to get device descriptor. (We still fail after three
attempts, but that is better than failing after the first one!)
Also changed eclipse project to use external builder.
9 years ago
Robert Fisk
b08c70fe02
Fixed bug in Upstream MSC. I have no idea why it worked before...
9 years ago
Robert Fisk
9918cfcb19
Mouse WORKS!11111 ...but only in boot mode, so no scroll wheel :(
9 years ago
Robert Fisk
b7298c5f65
Restructure & bugfix Upstream HID. Still some issue with Downstream...
9 years ago
Robert Fisk
4d9e26b6ef
Upstream HID bugfixes.
9 years ago
Robert Fisk
cda254c8bb
Downstream HID SPI interface done, untested.
9 years ago
Robert Fisk
56e8b99ae5
Downstream mouse support working!
9 years ago
Robert Fisk
e8a445a071
Work on Downstream HID support. Also a bunch of random tweaks.
9 years ago
Robert Fisk
4c40373a32
Upstream HID mouse support probably done, not tested yet.
9 years ago
Robert Fisk
c3c4d47145
Mouse Upstream code half-done.
9 years ago
Robert Fisk
4615f2c740
Tweak product strings again
9 years ago
Robert Fisk
6886ccd2d4
Tweak device descriptor strings
9 years ago
Robert Fisk
08068c25d4
Initial commit of ST Cube HID drivers
9 years ago
Robert Fisk
0d2d4d6341
Implement flash write lockout by spamming the unlock register, then
...
checking that the correct unlock sequence fails.
9 years ago
Robert Fisk
9d966d4e89
Tidy up misc files and settings
9 years ago
Robert Fisk
e94aea019e
Moved OpenOCD config to its own folder
9 years ago
Robert Fisk
e308d3350b
USG v1.0 beta WORKS!!!!!11
...
So apparently the STM32F401's SPI DMA is even more buggy than the 405's.
Worked around an intermittent stall/timeout by busy-waiting Upstream's
packet length transmission and reception, instead of DMA-ing it like the
packet body. Ugh...
9 years ago
Robert Fisk
25ff531917
Tweaks to 1.0 firmware. Not completely working yet :(
9 years ago
Robert Fisk
e29ef84861
Modify firmware for v1.0 hardware with STM32F401RC micro:
...
- Processor-specific header
- Startup file
- Linker script
- Project settings
- Debugger config script
- Debugger project settings
- Board revision detection routines
9 years ago
Robert Fisk
1262c5337a
All tabs to spaces
9 years ago
Robert Fisk
08e6846cc5
Add missing option to clock configuration
9 years ago
Robert Fisk
21de622469
Added hardware check on bootup: fault LED will light if Upstream
...
firmware is placed on Downstream hardware or vice versa.
9 years ago
Robert Fisk
2983da24b2
Changed Upstream and Downstream SPI transfers back to DMA. DMA works
...
correctly now, either because SPI is in 16-bit mode, or because I found
all the other bugs!
Doubled SPI baudrate to 10.5Mbps. Transfer speed now limited (again) by
Downstream's lack of FIFO buffering in the USB host controller.
Also disabled DMA transaction half-complete interrupt in
stm32f4xx_hal_dma.c, as it wasn't doing anything useful.
9 years ago
Robert Fisk
cd663a0651
Two bugfixes for Upstream's SPI packet handling:
...
- Use asynchronous free packet callback for Upstream_MSC_BeginRead
- Upstream_MSC_BeginWrite freed packet too early
9 years ago
Robert Fisk
5e85aa069d
Remove generated files from Upstream/Debug/ folder
9 years ago
Robert Fisk
431a527e24
Tidy up commented DMA init code
9 years ago
Robert Fisk
58308c4a89
Added Mozilla Public License information to file headers.
...
Mozilla Public License v2.0 is compatible with the various licenses used
by ST and ARM.
9 years ago
Robert Fisk
2e3293e84f
Increase SPI interface speed 4x, to 5.25Mbps. Required modifications to
...
SPI peripheral library. At this speed SPI requires ~60% CPU time at -Og
optimisation level. This could be further improved by trimming down the
SPI interrupt. But...
Speed is now limited by Downstream's single-packet-per-URB restriction,
to about 460kB/s. USB Middleware does not implement TX FIFO empty
interrupt, so a bit of work is required here.
9 years ago
Robert Fisk
08c8c7a6d6
Code tidyup - remove unused SPI Tx-only and Rx-only routines
9 years ago
Robert Fisk
d48815d8d9
IT. WORKS. !!!!!!!
9 years ago
Robert Fisk
ce03845623
Completed moving Upstream to interrupt-based SPI.
...
Although I am not entirely convinced this is necessary, as the SPI data
stall issue only appeared with optimisation off (-O0). Perhaps re-visit
this if Upstream needs more free CPU time later...
9 years ago
Robert Fisk
b9cc31d036
Crazy hardware issues, about to revert Upstream SPI from DMA to
...
interrupt transfers
9 years ago
Robert Fisk
48a6c2e2a4
Bugfixes for Downstream, including one in the USB host stack!
...
Downstream now enumerates and accepts attached USB storage devices.
9 years ago
Robert Fisk
750c2f3a21
- Implement notification of Downstream USB device removal, and
...
corresponding Upstream disconnection
- Improve Upstream handling of TxOk signal from Downstream
- Misc tweaks
9 years ago
Robert Fisk
f24714cd8c
Revisit Upstream project to:
...
- Implement Upstream state machine, with Downstream-dependent device
emulation
- Add fault LED flashing
- Improve fault handling and freakouts
- Misc bug fixes
9 years ago
Robert Fisk
0e1fed6047
Full implementation of Downstream MSC interface, including significant
...
modifications to USB host MSC.
Also, minor tweaks to Upstream.
9 years ago
Robert Fisk
b9b6123642
Commit of Downstream before diving into USB MSC class driver
...
modifications.
Also correct project settings to compile for Cortex M4 architecture.
9 years ago
Robert Fisk
b271e038a3
More refactoring in Upstream project
9 years ago
Robert Fisk
4350666330
Refactor a bunch of stuff in Upstream project to avoid endless confusion
...
with Downstream project.
Also fixed a couple of things in upstream_spi.c and
upstream_interface_msc.c but due to file rename the diff is not
obvious...
9 years ago
Robert Fisk
7b4e4b3c14
Continued polishing work on Downstream project.
9 years ago
Robert Fisk
503d79de56
Streamlining Downstream project
9 years ago
Robert Fisk
8f41552214
Updated STM32 library from v1.4.0 to v1.7.0
...
Significant changes to:
- stm32f4xx_hal_spi.c
- stm32f4xx_hal_gpio.c
- stm32f4xx_ll_usb.c
- usbd_core.c
- usbd_ctrlreq.c
9 years ago
Robert Fisk
18e2218280
Fixed Eclipse's Debug and Release configurations
9 years ago
Robert Fisk
69d1490faa
Upstream debugged and working again, emulating a 128MB storage device.
...
Implemented mock downstream_interface_msc.c for debugging purposes.
Multiple bugfixes and tweaks to:
- downstream_interface_msc.c
- downstream_spi.c
- usbd_core.c
- usbd_msc.c
- usbd_msc_scsi.c
- stm32f4xx_hal_pcd.c
9 years ago
Robert Fisk
aa72df1bbf
Minor tweaks to downstream interface
10 years ago
Robert Fisk
d3da69eb07
Draft implementation of downstream SPI interface. Significant mods
...
required to USB MSC class, mainly in usbd_msc_scsi.c. Currently
untested!
10 years ago
Robert Fisk
5acf8bbb88
Add OpenOCD config file for Olimex STM32-H405 development board.
10 years ago
Robert Fisk
6d7d86b2f5
Initial commit!
...
Upstream (device) firmware builds, emulates a small USB block device
filled with zeroes.
10 years ago