Commit Graph

126 Commits

Author SHA1 Message Date
Uwe Bonnes f5dd3006fb STM32: Generate same serial number as internal DFU bootloader. 2017-05-11 21:52:24 +02:00
Uwe Bonnes b7235da97f dfucore.c: Announce no writable bootloader pages when device is read proteced
or bootloader is write protected.

Device read protection or write protection on first 4 bootloader pages
can only be removed by mass erase. Triggering mass erase with a program
running from flash is doomed for failure.
User can force bootloader update, at their own risk to brick the device.
2017-05-07 13:19:37 +02:00
Uwe Bonnes b09a522f37 STM32F103: Use flash size from device for DFU string.
Complements #204.
STLinkV2-1 has F103CB on board! F103C8 on older Stlinks can use upper flash
with hopefully acceptable error rate.
For F103C8 devices, user has to give the force option to dfu-utils.
2017-05-07 13:19:37 +02:00
Uwe Bonnes 5af76a1b74 dfu_f1/dfu_upgrade: Do not set read protection.
As the first 4 pages of the bootloader will always keep write protection
once read protection is applied, with the second update of the bootloader
only the higher pages where updated effectivly.
In most cases this resulted in an inaccessible device!
2017-04-29 14:58:41 +02:00
Uwe Bonnes d796571438 Implement DFU_UPLOAD. 2017-04-15 14:26:03 +02:00
Uwe Bonnes 1d8ebcd75f Handle SET_ADDRESS according to DFUSE specs. 2017-04-14 15:16:59 +02:00
Gareth McMullin 394fd4894b Increase st-link flash allowance to 128K.
Although the devices are only documented to have 64K flash,
they have been obeserved to have a full 128K, although the undocumented
half may be untested and have problems.
2017-04-13 09:01:26 +12:00
Gareth McMullin 7730d3b198 Don't enable usb uart on v2 when debugging 2016-11-22 12:45:59 +13:00
Piotr Esden-Tempski fdeb6471a8 Added missing #include guard. 2016-10-19 14:56:52 -07:00
Piotr Esden-Tempski 8a009ca6ae Corrected jtagtap_next signature.
The parameter is TDI (as in input) not TDO. The header signature and
comment are correct.
2016-10-19 13:53:04 -07:00
Gareth McMullin 966f360515 debug: Use semihosting if available or output via usbuart. 2016-09-29 21:31:13 -07:00
Gareth McMullin 45e322b9a3 Handle usart errors. 2016-08-22 09:57:52 +12:00
Gareth McMullin 5832d8a42a Clean up common SWD stuff. 2016-07-13 08:31:09 +12:00
Gareth McMullin 3c44cce935 Make generic jtagtap function weak and stop including the c file. 2016-07-13 08:31:09 +12:00
Gareth McMullin 8b4342394f Overhaul of timeouts so they may be nested. 2016-06-28 14:35:43 +12:00
Piotr Esden-Tempski 20c994eece Added black magic verbose/debug mode switch. 2016-06-22 17:28:26 -07:00
Gareth McMullin 8d9d6f692c Fix platform_delay 2016-04-19 13:23:04 -07:00
Gareth McMullin cd1d72257f Cleanup of SRST handling.
- Remove connect_assert_srst global.
- Attach functions always release reset.
- Platforms provide a method to poll the reset pin.
- Reset on scan is all internal to command.c
- Reset is released on a failed scan.  Fixes #111
2016-04-19 13:12:16 -07:00
Piotr Esden-Tempski c0c8bade6f [native] Make the native bootloader bit more flashy.
This change has also a practical reason. When flashing and testing the
hardware this change makes it easier to make sure all the LEDs work. Now
when the DFU bootloader is idle it is scanning the LEDs making it easy
to see if one of them has an issue.

In addition to that, the bootloader now indicates when there is data
being flashed using the DFU interface. In cases when one has more than
one device connected and accidently starts flashing a wrong device this
is very useful feature to have.
2016-02-14 23:47:57 -08:00
Gareth McMullin 5ab8564ff6 Clean up handling of lost targets using new exceptions mechanism. 2015-03-22 14:05:12 -07:00
Gareth McMullin c731c6ece3 Make F4 conditionals check STM32F4, not F4DISCOVERY. 2015-03-03 21:39:29 -08:00
Gareth McMullin 3e466f2d23 Factor out timing routines common to all STM32 targets. 2015-03-02 21:59:04 -08:00
Gareth McMullin b07ffffcee Factor out common cdcacm.c from stm32 and tm4c.
Cleaned up interface to enter bootloader and read serial number.
2015-03-02 10:16:33 -08:00
Gareth McMullin 4d4813de87 Clean up includes everywhere.
All source files include general.h first and before anything else.
This inlcludes platform.h and platform_support.h
No header file needs to include to include any of these, but should include
any others needed for it's own declarations.
2015-03-01 22:16:04 -08:00
Gareth McMullin 9d80641261 Move common platform include to a common directory. 2015-03-01 20:15:31 -08:00
Gareth McMullin 476f83b69a Move common USB stuff out of platform header files. 2015-02-28 22:48:26 -08:00
Gareth McMullin 5eff0ab5d6 Factor out common GPIO code in STM32 platforms. 2015-02-28 22:09:50 -08:00
Gareth McMullin fd9eef821e Revert USB double buffered OUT handling on STM32F1.
This introduced a bug where the endpoint can get stuck, forever sending NAK.
2014-10-16 13:50:56 -07:00
Gareth McMullin a5549d630c Whitespace cleanup. 2014-10-16 13:50:56 -07:00
Gareth McMullin 84fc40085e Send a null packet on end of USB transfer if last data packet is full. 2014-08-06 12:38:57 +12:00
Gareth McMullin fad6eb3c14 Fix parity support on USB UART interface. 2014-07-30 19:57:18 +12:00
Richard Eoin Meadows c1b1d45155 TRST only exists on hardware version 0 2014-05-28 12:45:21 +01:00
Gareth McMullin 72ae78a185 Updated libopencm3. Fixes broken bootloader, issue #43. 2014-05-08 11:02:35 -07:00
Frantisek Burian 12aeaad441 [locm3] Use the new clock-enabling mechanisms in locm3. 2014-02-13 18:21:16 +01:00
bon@elektron.ikp.physik.tu-darmstadt.de 0c9d5d8166 Add dfu bootloader update application and use absolute delay for stlink
Hello,

appended 3 patches
- adds a dfu-bootloader appliaction
- uses absolute delays when waiting for pull-up delays on the STLINK
(hopefully fixes issue #30)

Updating the dfu-bootloader by additional application is helpfull for the
STLINK, as for flashing the bootloader by SWDb otherwise jumpers need to be
soldered or external SWD is not possible.
Use like:
- dfu-util -s 0x08002000:leave -D dfu_upgrade.bin
- dfu-util -s 0x08000000:leave -D blackmagic_dfu.bin
- Push reset buttom and reconnect to enter new dfu bootloader
- dfu-util -s 0x08002000:leave -D blackmagic.bin
--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
>From fae5022c304a8866f056ea66660ac7ce3809dcf8 Mon Sep 17 00:00:00 2001
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Date: Sun, 20 Oct 2013 15:00:36 +0200
Subject: F1: Prepare to update dfu bootloader via DFU with additional
 application.
2014-01-24 04:59:09 +08:00
Gareth McMullin 8835df1822 Merge remote-tracking branch 'origin/usbuart_highrate' 2013-12-04 16:16:08 +13:00
BuFran e67192348f FIX: usbd_init compatibility fix
Updated compatibility with libopencm3 commit 113e5c22e6390ba072148315e83a5faa5ff7ce86
2013-10-05 12:23:23 +08:00
BuFran c28350f242 FIX: u{8,16,32} -> uint{8,16,32}_t to be compatible with new library
The use of u8, u16, u32 has been deprecated in libopencm3.
Update it with standard uint8_t, uint16_t, uint32_t types
2013-10-05 12:23:23 +08:00
Gareth McMullin 8c877d6dfa Fix trailing whitespace everywhere. 2013-06-17 15:53:32 +12:00
Paul Fertser e0fc21a2a7 adiv5_swdp: allow to connect to a sleeping target by pulling SRST
This patch introduces a new command, "connect_srst [enable|disable]"
which allows to enable special mode in which SRST would be pulled low
before the SWD scan till attaching to a target.

Since on Cortex-Mx the SRST signal doesn't gate JTAG and SWD, it's
possible to connect to a target while holding reset, ask it to stop at
reset vector and only then deassert reset, thus allowing to attach to
the kind of firmware that goes immediately to sleep or disables
debugging by other means early on start.

Tested on an STM32VLDiscovery board with STM32F100 configured to go to
STOP mode and executing WFI in the very beginning of main().

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2013-05-14 12:32:44 +12:00
Gareth McMullin e3f3171a33 usbuart: Fix build error and clean up whitespace. 2013-04-27 13:14:22 -07:00
Allen Ibara 43f7e7a3cf Changes to the USBUART to make it less likely to drop characters at higher baud rates.
USB UART seems to work fine at 115.2Kbps or 230.4Kbps, but starts to drop characters
as the data rate goes higher. This commit changes the usbuart ISR to fill a software
FIFO, and adds a low priority timer interrupt to run deferred processing to drain a
FIFO and send USB CDCACM packets, rather than calling the usb send within the UART
ISR.

Tested on native platform, up to 1.5MBps.
2013-04-27 12:56:58 -07:00
Gareth McMullin 6659d87e9b Remove DFU bootloader self protection.
It can still be enabled by building with -DDFU_SELF_PROTECT
2013-04-16 16:54:52 -07:00
Gareth McMullin 61d464bf09 dfu: Fix warnings. 2013-04-04 20:16:13 -07:00
Gareth McMullin 87dad080e1 Fix build for f4discovery host. 2013-03-17 10:17:05 +13:00
Gareth McMullin e880c553fb Restore trace timer interrupt handler. 2013-03-12 19:14:11 +13:00
Gareth McMullin 7c2e994381 Split out platform specific bootloader parts to separate files. 2013-03-12 19:04:10 +13:00
Gareth McMullin 55f161208d Further split-up of DFU bootloader. 2013-03-12 15:00:15 +13:00
Gareth McMullin 14e5e8b0b6 Separated clean and dirty bootloader sections. 2013-03-12 09:57:28 +13:00
Vegard Storheil Eriksen e8f9d52d2f gdb_if: Fix USB flow control.
The introduction of the double buffering broke USB flow control, causing
loss of data when a new packet arrived with the previous still present in
the double buffer.

With this patch the endpoint is kept in NAK until the double buffer is empty.
2013-03-06 20:36:49 +01:00
Uwe Bonnes ff8de39774 usbuart: Don't try to send until configured. Enumeration may hang else 2013-02-15 17:55:36 +01:00
Uwe Bonnes dee82a0d4f Document changes between ST-Link V1 and V2 and implement needed changes 2013-02-15 17:39:27 +01:00
Uwe Bonnes 327ee49a67 usps_f407: add another platform 2013-02-03 14:22:14 +01:00
Uwe Bonnes 31f39339fd stm32/usbdfu.c: Rearrange code to clarify the tasks to be done 2013-02-03 14:14:48 +01:00
Uwe Bonnes 96ae3886ff stm32:cdcacm/usbdfu: Print version and build information in the product string 2013-01-25 13:01:57 +01:00
Uwe Bonnes 8415fc829b stm32/cdcacm.c: remove unneeded includes 2013-01-23 17:28:34 +01:00
Uwe Bonnes 73d120577b usbdfu: Write protect the bootloader sector on F4 2013-01-22 19:04:51 +01:00
Uwe Bonnes 8033fb2529 STLINK: Allow to force bootloader by starting with the RESET button pressed 2013-01-21 11:02:44 +01:00
Uwe Bonnes 749fb318e7 gdb_if: Use a doubled buffer scheme for reading data from USB
Needed, as the OTG driver erases the data read after eventually calling the callback
2013-01-21 11:02:44 +01:00
Uwe Bonnes 1fa961841d Product and DFU String now tell the hardware they run on 2013-01-21 11:02:44 +01:00
Uwe Bonnes 04624af4e5 f4discovery: Adapt from the "native" file and add or change code where needed
- stm32_mem.py has problems with erasing the big pages, but dfu-util works
- serial GDB remote server doesn't work. It neither works for the STM32F107,
  so maybe there is a problem with the usbd_f107_driver.
2013-01-21 11:02:44 +01:00
Uwe Bonnes 8b1ec3151f usbuart, jtagtap, swdptap: Factor out GPIO setup 2013-01-21 11:02:44 +01:00
Uwe Bonnes 7e91f68efa f4discovery: Create a platforms directory for the F4 on the F4 Discovery board 2013-01-21 11:02:44 +01:00
Uwe Bonnes 15d7077115 traceswo: Move (now-constant) traceswo.c to platforms/stm32 2013-01-21 11:02:44 +01:00
Uwe Bonnes 72ca77af53 stm32_can: Changes to get blackmagic to work 2013-01-21 11:02:44 +01:00
Uwe Bonnes 313a24b316 usbdfu: Allow for different, but constant flash page sizes 2013-01-21 11:02:43 +01:00
Uwe Bonnes 1eb9bfc650 platforms/stm32: Move more platform dependencies to platform.h 2013-01-21 11:02:43 +01:00
Uwe Bonnes 30d8aa1eb7 Move (now-constant) cdcacm.c to platforms/stm32 2013-01-21 11:02:43 +01:00
Uwe Bonnes 533608a2f4 Move usbuart to the stm32 directory 2013-01-21 11:02:43 +01:00
Uwe Bonnes 16ac8e0478 stlink: Add DFU capability 2013-01-21 11:02:43 +01:00
Uwe Bonnes 7188a4a8cb Move usbdfu to platforms/stm32 directory 2013-01-21 11:02:43 +01:00
Uwe Bonnes 35d6adc236 native/usbuart: Move platform dependant parts to platform.h 2013-01-21 11:02:43 +01:00
Uwe Bonnes ebb48245aa stlink: Use a seperate linker file as stlink has only 64 kByte 2013-01-21 11:02:43 +01:00
Gareth McMullin ad9c76e97f Update to current libopencm3 usb api. 2013-01-10 22:01:21 -08:00
Gareth McMullin 54f4467c0f Added stlink platform for Discovery boards and ST's ST-Link hardware. 2012-06-10 19:06:37 +12:00
Gareth McMullin 89bcdcc60a Moved stm32 generic platform files out of native platform dir. 2012-06-10 17:34:26 +12:00