Keir Fraser
45821dee07
New intrinsic "unreachable()" to indicate unreachable code points
...
This allows better compiler optimisation, while also including an
ASSERT() for debug builds.
Refs #7
2024-11-03 10:26:15 +00:00
Keir Fraser
8b8d4a61cf
WRITE_FLUX: Hard-sector index detection
...
Expected sector timing is specified to the WRITE_FLUX command. This
allows detection of short sector times, which indicate the true
track start ("track index"). This allows write cueing as for
soft-sectored disks.
2024-09-28 00:58:30 +01:00
Keir Fraser
5b0857791f
New delay parameter: index_mask
...
Allows configuration of post-trigger INDEX mask time in microseconds
(0-65535). Some drives may need much longer than the default, if
there is sensor-switch bounce on trailing edge of the INDEX pulse.
Fixes keirf/greaseweazle#7
2024-09-24 18:38:36 +01:00
Keir Fraser
d45f4243f2
Implement asynchronous operation delays between seek/head/read/write
...
Also implement the pre- and post-write delays required by many floppy
drive specs.
Refs keirf/greaseweazle#491
2024-09-23 12:23:41 +01:00
Keir Fraser
c5b6894a64
CMD_GET_INFO: New field 'usb_buf_kb'
2023-08-17 17:09:44 +01:00
Keir Fraser
34daf529c7
Allow 16-bit cylinder number.
2023-08-16 19:56:34 +01:00
Keir Fraser
1a35995046
AT32F403A: Extend SRAM to 224kB
2023-08-16 19:56:22 +01:00
Keir Fraser
80b899925c
AT32F4: Support new board V4.1
2023-07-21 11:01:58 +01:00
Keir Fraser
ee02a86e80
time: Proactive pull from FlashFloppy for 32-bit timebase update period
...
Make the period proportional to systick rate by updating the timebase
every 2^23 systicks. This will always be safe, no matter how high the
systick rate.
2023-07-14 14:24:03 +01:00
Keir Fraser
09f777ea49
AT32F403A: Run main firmware at 216MHz. Clock USB from auto-calibrated HSI clock.
2023-01-05 10:30:42 +00:00
Keir Fraser
eef5390657
Define AHB, APB1, APB2 bus speeds as numeric constants for all supported chips.
2022-11-14 16:56:57 +00:00
Keir Fraser
89c67939b6
at32f4: Make the f4.h header file stand alone.
2022-11-14 16:46:29 +00:00
Keir Fraser
fd07efedcf
GETINFO_FIRMWARE: Return MCU information
2022-07-18 10:29:43 +01:00
Keir Fraser
b593fa973c
Reserve BUSTYPE ID 3 for Adafruit_Floppy project
2022-04-19 21:30:45 +01:00
Keir Fraser
04343e64e3
GET_INFO: New subtypes GET_DRIVE and GET_CURRENT_DRIVE
2022-02-26 15:48:09 +00:00
Keir Fraser
a938da99ac
intrinsics: Remove unused definitions
2021-11-11 08:39:34 +00:00
Keir Fraser
08916f8129
STM32F1, AT32F4: Dynamic USB buffer sizing.
...
Also tweak firmware update with useful error messages if updates
don't fit in SRAM (bootloader updates) or Flash (main firmware updates).
2021-10-04 10:35:09 +01:00
Keir Fraser
ec553a0d4e
Support new board V4 Slim
2021-08-12 13:35:28 +01:00
Keir Fraser
7fca1c9315
Implement 64:32->32 division and use it to avoid arithmetic overflow in time_from_samples()
2021-07-20 14:32:01 +01:00
Keir Fraser
4b82ef4741
gw bandwidth: Check integrity of USB comms during bandwidth test.
2021-06-28 14:27:34 +01:00
Keir Fraser
b5a02294ce
New board: F1 Plus (Unbuffered)
2021-06-27 19:18:17 +01:00
Keir Fraser
910a5635b4
AT32F415: Increase clock speed to 144MHz
2021-06-22 10:27:16 +01:00
Keir Fraser
5f05d8f487
AT32F403: Work around broken double-buffered endpoints using an ISR to
...
quickly post new buffers.
2021-06-22 09:51:58 +01:00
Keir Fraser
9dac3e110e
AT32F403: Increase core clock speed to 144MHz.
2021-06-22 09:51:17 +01:00
Keir Fraser
c894f9f02b
New firmware command CMD_NOCLICK_STEP. Used by WinUAE floppy bridge.
2021-06-09 15:54:17 +01:00
Keir Fraser
9846c544f6
testmode: Add a WDAT oscillation test
2021-05-12 10:50:59 +01:00
Keir Fraser
2f7b96f718
testmode: Add a test-headers command
2021-05-12 09:30:51 +01:00
Keir Fraser
6f4c89f735
AT32F4: Identify MCU and board at startup, blink a fail code on error.
...
Insert required delays for F403 clock bringup.
'gw info' now identifies V4 boards by name.
2021-05-11 10:02:05 +01:00
Keir Fraser
4b82a229b1
AT32F4: Support both AT32F403 and AT32F415
2021-05-10 15:40:32 +01:00
Keir Fraser
c6e86add16
F1: Introduce new submodel "F1 Plus"
2021-05-01 16:11:03 +01:00
Keir Fraser
d5c0650df4
Implement a test mode for F7 (v3, Lightning Plus) and AT32F4xx models.
2021-05-01 09:01:03 +01:00
Keir Fraser
001cf97ca8
AT32Fxx: Implement firmware update
2021-04-29 10:53:11 +01:00
Keir Fraser
a2085a96d5
AT32F415: Port floppy interface
2021-04-29 09:23:15 +01:00
Keir Fraser
cfa91ce5f1
Initial port of Greaseweazle to AT32F415.
2021-04-27 15:11:16 +01:00
Keir Fraser
2809d34c28
Rearrange MCU namespace so that STM32 is one subtype.
...
This will allow fitting AT32 alongside, which is an "almost" STM32 clone
with a slightly different and confusing naming scheme.
2021-04-27 15:11:16 +01:00
Keir Fraser
fb93abea9e
New firmware command CMD_GET_PIN to read an interface pin's voltage level.
2021-04-26 12:26:30 +01:00
Keir Fraser
bfb167b2a0
f7: Support new submodel: v3 "Thunderbolt"
2021-03-26 09:54:49 +00:00
Keir Fraser
f8176f1029
Fix documentation of erase_flux command in the protocol header file.
2021-03-03 16:11:00 +00:00
Keir Fraser
de9c26d23f
Rename auto_off -> watchdog
2021-02-23 10:02:48 +00:00
Keir Fraser
2b78b953b7
ReadFlux: Allow max_index_post_ticks to be specified by the host.
...
Also: Improve USB protocol docs.
2021-02-22 15:37:55 +00:00
Keir Fraser
f8e7484233
Support new board F7 Slim
2021-01-13 09:51:21 +00:00
Keir Fraser
b28157d4c5
Rename side -> head all the way down into firmware.
2020-12-10 16:03:57 +00:00
Keir Fraser
b69b4cdef1
Read and Write Flux commands are extended.
...
1. Read flux can be terminated on a number of ticks as well as number of IDX.
2. Write flux can be started immediately rather than index cued.
2020-12-05 17:52:45 +00:00
Keir Fraser
3276cf7c38
f7: Flash status LED if external oscillator doesn't start.
2020-12-03 16:39:36 +00:00
Keir Fraser
b7ddee0bda
Support flippy drive access to cylinder -8
2020-11-19 08:49:33 +00:00
Keir Fraser
419df4825a
usb: Define new astable write region and use it to move NFA logic onto the host.
...
The write protocol handling is reworked on the firmware side.
2020-10-27 12:58:12 +00:00
Keir Fraser
0f78a93f66
Rename FLUXOP_NOFLUX -> FLUXOP_SPACE
2020-10-27 09:51:16 +00:00
Keir Fraser
e7062e3ad8
usb: Send periodic noflux opcodes during long periods of no flux.
...
This new no-flux opcode replaces the long-flux opcode:
long-flux = no-flux + regular-flux
Also rearrange the code a bit to avoid repetition.
2020-10-21 12:38:46 +01:00
Keir Fraser
9b4b69da85
usb: Place index timings in-band within the flux read stream.
...
This removes the low limit on max index timings per read request.
2020-10-21 10:29:51 +01:00
Keir Fraser
73c3875252
Support F7 Lightniung Plus board.
2020-08-23 17:49:54 +01:00