158 Commits

Author SHA1 Message Date
fenugrec
2df0d420e9 Simplify BOARD_XYZ macros (no more numeric values)
There is currently no reason to assign a numeric value to each BOARD_*
macro.
Fix #83 GH
2022-01-06 17:54:49 -05:00
fenugrec
f58de5e678 config.h : document CAN_S_PIN for silent mode
fix GH #81
2022-01-06 17:48:15 -05:00
fenugrec
1b1c3bb8ff usb RX_FIFO size: remove nonapplicable PMA comment
on F4 with the USB_OTG peripheral, the RX FIFO must be sized according
to different rules vs the USB_FS peripheral of the F0.
2022-01-06 17:42:50 -05:00
fenugrec
c189c45c78 CMake : HAL CMakeLists doesn't need hal_include.h
probably accidentally added with F4 support commit
2022-01-06 17:40:55 -05:00
fenugrec
6b451da2f0 CMake: clean up -mcpu=XYZ compile flags
also remove duplicate link options for F072 targets
2022-01-06 17:38:41 -05:00
fenugrec
2c4d046df5 LED : handle 32-bit tick overflow properly
32-bit milliseconds gives a 49.7-day wrap period which would break the
blinking patterns.

Fix GH #78, and hopefully makes the code cleaner / less error-prone.

Currently the sequence is specified with a uint8 but we still clamp
deltas to INT32_MAX in case the tick resolution ever changes.

Clamping the interval to INT32_MAX should ensure that for the
next (UINT32_MAX - 1) ticks, the macro SEQ_ISPASSED(now, wait_until)
produces the correct logic. Example :

now = 0
delta = INT32_MAX (7FFF....)
wait_until = now + delta = INT32_MAX (7FFF...

// 0 ticks later
(now - wait_until) == -7FFF FFFF ; SEQ_ISPASSED = false

// 1 tick later
(new_now - wait_until) == -7FFF FFFE  ; SEQ_ISPASSED = false

// 7FFF... ticks later
(new_now - wait_until) == 0; ok, now SEQ_ISPASSED is true

// new_now == UINT32_MAX - 1 == FFFF FFFE, almost rollover
(new_now - wait_until) == 7FFF FFFF ; ok, SEQ_ISPASSED is still true

// new_now == UINT32_MAX == FFFF FFFF,
(new_now - wait_until) == 8000 0000 == -7FFF FFFF; this fails because
the sign changed !
2022-01-06 12:54:41 -05:00
Ricky Lopez
d306798923 Add STM32F4 support
Specifically, the STM32F407VE.
Even more specifically, [this](https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0.html) dev board
2022-01-06 12:31:05 -05:00
fenugrec
e6b972441b Update USB stack to 1.11.2 (HAL + middleware)
Also remove some useless math/DSP headers.
The USB code really needed updating, considering the following entries from ST's
release notes (
https://raw.github.com/STMicroelectronics/STM32CubeF0/master/Release_Notes.html
) :

-Bug fix: USB_ReadPMA() and USB_WritePMA() by ensuring 16-bits access to
USB PMA memory
-Bug fix: correct USB RX count calculation
-Fix USB Bulk transfer double buffer mode
2021-04-25 19:43:55 -04:00
Brian Silverman
2225fc0290 Clean up the USB interrupt interactions
This might fix candle-usb/candleLight_fw#58. It definitely makes it
so I no longer observe similar behavior with multiple hosts running
gs_usb.
2021-04-25 19:11:29 -04:00
fenugrec
d66fda39f8 Add git version string to USB config descriptor
There was already provisions for this in the code. Tweaked CMake to
generate version.h automatically every build.
2021-04-06 12:03:13 -04:00
fenugrec
138e6cb433 Add basic assert checks
Avoid using <assert.h> because the standard assert() pulls in
fprintf and its of dependencies, as well as including __FILE__:__LINE__
strings for each assert() call. All this has an unacceptable memory
cost, as well as being useless since there is nothing to printf *to*.

Currently assert_basic() was added to check calloc() return values;
in case of failure we simply halt the core with BKPT(0). This could be
improved and refined.
2021-02-17 16:00:09 -05:00
John Whittington
1468b693a9 add Entree board to supported boards 2021-02-16 11:11:32 -05:00
John Whittington
05fe629e5c add user data section to linker scripts
This had probably been accidentally reverted in
2ebc665109887bfe95a4ad63ebe5e1d7d13c0fef ? flash_data_rom ended up on the same flash page as other unrelated data, which meant flash_flush() would've erased too much.

Also reduce nvm area to 1k and use variables to calculate area. (F042
devices only have 1kB pages vs 2k for the F072)
2021-02-16 11:08:11 -05:00
fenugrec
68df7d5448 README: add note about F042 limitations 2020-12-29 10:25:50 -05:00
fenugrec
3e556d9046 forgot to commit cmake/FindDFUSuffix.cmake 2020-12-13 10:41:07 -05:00
fenugrec
3d52db0a97 Add PR #63 comment, and __ISB() after disable_irq 2020-12-13 10:38:29 -05:00
fenugrec
031edba8ce README : more info about reflashing 2020-12-07 16:11:47 -05:00
fenugrec
9d00e884c7 cmake : forgot to specify ldscript to linker 2020-12-06 12:51:46 -05:00
Hubert Denkmair
b796282765 move USB descriptor callback table to ROM 2020-12-06 12:51:46 -05:00
Hubert Denkmair
b94a26f016 move all usb descriptors to ROM
copy to USBD_DescBuf when requested
(serving from ROM seemingly not supported?)
2020-12-06 12:51:46 -05:00
Hubert Denkmair
f380b5eafd rename USBD_StrDesc to USBD_DescBuf
(will reuse not only for strings)
2020-12-06 12:51:46 -05:00
Hubert Denkmair
c3efe48018 shink usb descriptor string buffer to save some RAM 2020-12-06 12:51:46 -05:00
Hubert Denkmair
e921aeac87 remove useless linker option 2020-12-06 12:51:46 -05:00
Hubert Denkmair
1712fecf5e enable link-time optimizations 2020-12-06 12:51:46 -05:00
Hubert Denkmair
643d64a9df fix uninitialized variable warning 2020-12-06 12:51:46 -05:00
Hubert Denkmair
0aa13404d8 since Reset_Handler is now part of the main executable, no need for a OBJECT library any more 2020-12-06 12:51:46 -05:00
Hubert Denkmair
b5cc61b331 fix critical section handling
thanks to @ndushman for pointing this out
2020-12-06 12:51:46 -05:00
Hubert Denkmair
39c3d0c52a remove old unused linker script 2020-12-06 12:51:46 -05:00
Hubert Denkmair
df9113fb6b set appropriate stack sizes 2020-12-06 12:51:46 -05:00
Hubert Denkmair
c88dc27653 call __initialize_hardware_early from reset handler for USB DFU handling 2020-12-06 12:51:46 -05:00
Hubert Denkmair
c6d180edaa add interrupt vetor table 2020-12-06 12:51:46 -05:00
Hubert Denkmair
338a0e22a0 add all header files to HAL cmake SOURCES 2020-12-06 12:51:46 -05:00
Hubert Denkmair
fef1d397b5 use startup files and linker scripts from LibreUCpp 2020-12-06 12:51:46 -05:00
Hubert Denkmair
d7332a3173 update LICENSE infos for STM32 USB library 2020-12-06 12:51:46 -05:00
Hubert Denkmair
ed6152f1a2 upgrade HAL to STM32CubeF0-1.11.0 2020-12-06 12:51:46 -05:00
Hubert Denkmair
f3d86a7e73 update usb device library to STM32CubeF0-1.11.0 2020-12-06 12:51:46 -05:00
fenugrec
7f9a0ea331 CAN errors : comment some funcs + defines 2020-12-06 11:58:45 -05:00
Brian Silverman
ceeac236c4 Better bit error reporting
It reports more information with more accurate ordering with respect to
other frames sent and received.

Fixes candle-usb/candleLight_fw#59
2020-12-06 11:41:53 -05:00
Brian Silverman
8b3a7b4565 Always queue frames to the host in order
The other logic could sometimes send frames out of order. See comments
on GH issue 27,
https://github.com/candle-usb/candleLight_fw/pull/27#issuecomment-549633588
where running "canfdtest" sometimes fails after a few seconds.

I don't see why the logic was different in the first place either. The
main loop executes pretty fast, so always putting the frame in the queue
makes all the logic simpler.
2020-12-02 17:30:07 -05:00
fenugrec
d2cb1592a0 add some links to README 2020-11-22 09:11:07 -05:00
fenugrec
88ed027020 cmake : clean .bin files, and run dfu-suffix
dfu-util warns when flashing a .bin file that has no "dfu suffix". Now
we use dfu-suffix, if available, to add the dfu suffix; otherwise keep
the original dfu-util command line as a reflash target; fixes #56 GH.

Also add .bin files as BYPRODUCTS so that 'make clean' picks them up
too.
2020-11-01 15:15:34 -05:00
fenugrec
9cf7eccf3d Add new boardtype : cannette
F042-based, galvanically isolated.
2020-10-30 21:55:27 -04:00
fenugrec
2416f260bb enable power-on LED blinkage on all boards
what's not to like ?
2020-10-30 21:55:12 -04:00
Ethan Zonca
465e957db9 Update CANable-specific LED initialization 2020-10-30 21:50:08 -04:00
fenugrec
c4e02c1396 readme : document "make flash-<target_fw>" target 2020-10-30 21:47:05 -04:00
fenugrec
99a8eac354 add "make debug" target for openocd 2020-10-30 15:38:20 -04:00
Benjamin Ward
271be5ce20
Add Copperforge VulCAN to list of supported devices 2020-09-19 20:28:42 -04:00
Brandon Ros
28a31e6fd3 Clarify stm32f0x2 support 2020-04-08 20:13:48 -04:00
Andy Hempel
0c04aaa45d Adds Travis-Ci GITHUB Token via ENV
Change to one deploy archive with all binaries

Change to one deploy archive with all binaries

Add repo and branch restriction
2019-12-02 18:17:11 -05:00
Andy
b6fb1d7d5d Adds Travis-Ci and deploy on tags 2019-12-02 18:17:11 -05:00