Commit Graph

321 Commits (master)

Author SHA1 Message Date
David Garske a9526bab8f STM32 QSPI Flash support. Refactor SPI to allow different GPIO base/AF for each pin. Adds `DEBUG_UART` support for H7. 2022-12-20 13:31:28 +01:00
David Garske f283929161 Improvements to gap fill. The default gap filling byte is `0xFF`. If using `FLAGS_INVERT=1` uses `0x00`. Can be overridden at build-time using `FILL_BYTE`. Fixes ZD 15356. 2022-12-19 11:38:00 +01:00
Lealem Amedie 18bfcecd6b wolfBoot cmake support 2022-12-07 13:00:10 -08:00
David Garske bfed41889b Improvements to the NXP T2080 support. Adds NOR Flash and IFC configuration. Adds CPLD support. Make `DEBUG_UART` a configure option. 2022-12-06 06:20:48 +01:00
David Garske 2fc899254f Cleanups for NXP T2080 DEOS support:
* Expanded the NXP QorIQ T2080 documentation in `docs/Targets.md`.
* T2080 fixes for boot code placement and generation of .bin.
* T2080 UART driver cleanup.
* Improve bin-assemble fill speed and report items added.
* Make portability fixes to enable building in `mingw32-make`.
* Cleanup the `docs/Targets.md` sections and links.
* Cleanup execute bits on code files.
2022-12-06 06:20:48 +01:00
Daniele Lacamera ba88748b38 Add -fomit-frame-pointer to CFLAGS 2022-10-13 14:22:55 +02:00
Daniele Lacamera a6fdec3901 self-encrypt prototype; tested on stm32l0 2022-09-21 18:49:52 +02:00
Daniele Lacamera 16dc1628af Fixed target 'simulator' 2022-07-21 20:23:13 +02:00
Daniele Lacamera 93dd53ac0f Fixed support for raspberry-pi 2022-07-21 20:18:34 +02:00
Daniele Lacamera 1542a15c90 Keystore: array of public keys generated by keygen 2022-07-19 15:32:28 +02:00
Marco Oliverio c077207b01 feature: simulated target
This commit introduces a simulated target where the internal and optionally the
external flash can be simulated and backed by files. Using this target will
produce an executable wolfBoot ELF image.
2022-07-12 10:13:10 +02:00
Daniele Lacamera acfdd1f676 Added support for RSA3072 2022-05-31 12:13:34 +02:00
Daniele Lacamera cb0a903999 Reverted UPDATE_OBJS:= in Makefile (breaks lib build) 2022-05-20 08:06:07 +02:00
David Garske f63c323677 Cleanups and restore a few changes. 2022-05-20 08:06:07 +02:00
Daniele Lacamera 48466be46c Minor fixes 2022-05-20 08:06:07 +02:00
David Garske 6068a8047c wolfBoot improvements (from elms):
* Add `WOLFBOOT_DUALBOOT` for dynamic fallback
* Refactor header field parsing
* Cleanup compiler warnings and logic extra check
* Option to leave out partition based functions
* Add `WOLFBOOT_FIXED_PARTITIONS` enable using partition enum and related functions
* Wrap all delta update references
* Update raspberry documentation
* EFI refactoring
* Add `keytools_check` target
* Add "library" target
2022-05-20 08:06:07 +02:00
Daniele Lacamera d06178c3a8 Added new signature algo: ECC384 2022-04-01 12:21:42 -07:00
Daniele Lacamera ce8d01864c Added basic test cases with renode 2022-02-11 10:48:47 +01:00
David Garske 5463105eab Adds STM32U5 support. Thank you ST. 2022-01-24 00:07:03 -08:00
Daniele Lacamera 7b7ddb8b7b Fixes to build PSOC6 2022-01-10 09:19:22 +01:00
Daniele Lacamera 2e7b63eae5 Adding support for ED448 verification 2021-12-13 12:05:37 +01:00
Marco Oliverio a187442455 support booting EFI application on x86_64 architecture
Co-authored-by: Daniele Lacamera <daniele@wolfssl.com>
2021-11-30 18:43:50 +01:00
Daniele Lacamera 012bba3ce3 Fixed after review comments 2021-08-20 10:10:51 +02:00
David Garske 9c1daee6b5 Change `make keytools` to force rebuild the tools. 2021-08-19 09:29:11 -07:00
Daniele Lacamera 301bc3e0b6 Test through 'test-delta' target
- changed syntax for test-expect-version to accept a UART_DEV
2021-08-16 12:00:39 +02:00
Daniele Lacamera 38e9cd17f6 Fixed diff/patch.
- Added test
- Removed debug printfs
2021-08-16 11:59:46 +02:00
Daniele Lacamera 68bd170b6c Added delta tool 2021-08-16 11:59:46 +02:00
Daniele Lacamera 572414fba6 Use library version as default WOLFBOOT_VERSION 2021-07-19 17:02:40 +02:00
Daniele Lacamera 6aa5ee96ca Updated submodules, added -Werror 2021-07-15 17:38:12 +02:00
Elms b4f68d0c6b TMS570LC43xx: fix default compiler programs and options 2021-06-23 09:12:17 +02:00
Elms ee0f93fee0 TMS570LC43xx: Add flash from RAM and test-app and cleanup
* add flash demo from RAM
 * clean up linker script and flags
 * Add hercules test-app: link script and minimal c file

`make CCS_ROOT=/c/ti/ccs1031/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS F021_DIR=/c/ti/Hercules/F021\ Flash\ API/02.01.01`
2021-06-23 09:12:17 +02:00
David Garske 31b785fe7e Progress with cross-compiling wolfBoot. Will also be creating CCS project. 2021-06-23 09:12:17 +02:00
Elms b988cd3748 PPC-t2080: Add minimal test app
With debug it will spin for a while and print a count
Also improce config example
2021-06-08 18:14:41 +02:00
Elms c1e000faa0 make: clean up and check_config update
Also add emacs backup files to ignore
2021-06-08 18:14:41 +02:00
Elms 7766613532 test: self-update cleanup
remove clean and distclean from test 34 and 44
remove wolfboot-align
2021-05-14 09:38:31 +02:00
Elms 4c63cfd974 cleanup makefiles 2021-05-14 09:38:31 +02:00
Elms 4d20c34332 distclean cleans tools subdirs 2021-05-14 09:38:31 +02:00
Elms 36c50a7e4a tools: Add bin-assemble for pasting together binary blobs 2021-05-14 09:38:31 +02:00
Elms dd8b35207f make: allow extra config `CFLAGS` 2021-05-14 09:38:31 +02:00
Elms 9d724b3ced make: Permit different bootloader/image order
use objdump more when possible
2021-05-14 09:38:31 +02:00
Elms 08e9796822 make: Add PPC arch and refactor some of Makefile 2021-05-14 09:38:31 +02:00
Daniele Lacamera 6ad218de28 Fix distclean target 2021-02-01 18:31:06 +01:00
David Garske ecfc4b5008 Support for overriding the wolfBoot root (`WOLFBOOT_ROOT`) to allow proper detection of the signing/keygen tools. 2021-02-01 12:44:17 +01:00
Dimitar Tomov f57008ff7f Enable WOLFTPM_USER_SETTINGS to use custom(non-POSIX) options
Signed-off-by: Dimitar Tomov <dimi@wolfssl.com>
2021-01-26 08:13:26 +01:00
Daniele Lacamera cbe002fad7 Merge branch 'update-flags-in-boot-partition' into stm32l5 2020-09-28 17:10:28 +02:00
Daniele Lacamera 75898806eb Added option FLAGS_HOME to store UPDATE flags in the BOOT partition 2020-09-11 11:25:51 +02:00
Daniele Lacamera 61890b0bdb Fixed stm32l5 artifacts 2020-09-09 14:26:30 -07:00
Daniele Lacamera f8d1f1d28a Don't create contiguous factory.bin on STM32L5 2020-09-09 14:26:30 -07:00
David Garske c473a53ebe Improvements to the key tools documentation. 2020-06-24 09:04:24 -07:00
David Garske 0c5b66c39e Fixes for TPM with RSA.
* Requires PR https://github.com/wolfSSL/wolfTPM/pull/101
* Cleanup of software vs. TPM code `wolfBoot_verify_signature` functions (ECC and RSA)
* Adjusted the stack size checks with TPM.
* Added STM32F4 programming/debugging instructions.
* In V=1 mode show the keygen command.
2020-06-23 11:57:09 -07:00
Daniele Lacamera 2f5f2970b2 Removed unused makefile targets 2020-06-18 11:19:15 +02:00
Daniele Lacamera 861259316f include test-enc.mk in main Makefile 2020-06-17 10:39:40 +02:00
Daniele Lacamera 845eef7db0 Encryption: address alignment fixes, stm32wb fixes 2020-06-16 17:52:50 +02:00
Daniele Lacamera 53bf4d04db Encrypt: API design 2020-06-16 17:50:55 +02:00
Daniele Lacamera 1d24d326b1 Experimental: chacha20 encryption for external partitions 2020-06-16 17:50:55 +02:00
Daniele Lacamera c4c786d254
Merge pull request #49 from dgarske/winfixes
Fixes for building C signing tools on Windows (Cygwin/MinGW).
2020-06-01 21:54:14 +02:00
David Garske 93d62112e9
Merge pull request #52 from danielinux/mpu
Added support for memory protection on ARM using MPU
2020-05-26 06:42:01 -07:00
David Garske 2560bdc6d7 Added TPM RSA verify support. Added support for using software SHA-256 hasing with TPM because its much faster. (Note: to use TPM for hashing define `WOLFBOOT_HASH_TPM`). 2020-05-25 08:28:02 -07:00
Daniele Lacamera 7ade0ee2c0 Added support for memory protection on ARM using MPU 2020-05-25 15:14:41 +02:00
David Garske 5a8032d619 Add detection for `tools/keytools/sign.exe` and `tools/keytools/keygen.exe`. Show more commands with `make V=1`. 2020-05-23 11:08:30 -07:00
Daniele Lacamera ed94f79fd9 Using WOLFBOOT_ROOT instead of relative paths in configs 2020-05-22 19:14:38 +02:00
Daniele Lacamera f3d0d8fc83 PSoC6 support: updated configuration, docs added to Targets.md, revert
custom NVM_CACHE_SIZE
2020-05-20 06:53:00 -07:00
Daniele Lacamera 3db37a6b5c Updated NVM_CACHE_SIZE to match different configurations.
Progress on psoc6 HAL, fixed memory mapping and test app
2020-05-20 06:53:00 -07:00
Daniele Lacamera 75638394b1 Initial draft for psoc6 support 2020-05-20 06:53:00 -07:00
David Garske c6f6ce83c2
Merge pull request #40 from wolfSSL/iar
Example workspace/project to build under IAR
2020-04-07 10:53:35 -07:00
David Garske 3f1a18f8a9 Fixed unused warning fixes and missing errno.h in keygen.c. Update tools/keytools Makefile to build keygen. Cleanup to support using C version of "sign" and "keygen" after "make keytools". 2020-04-07 18:27:05 +02:00
Daniele Lacamera 48405e0dcd Make clean: remove temporary file 2020-04-07 10:56:08 +02:00
Daniele Lacamera 7ffcdca098 External, emulated non-volatile memory over UART 2020-04-03 14:27:42 +02:00
Daniele Lacamera 988258099e Fixed regression in ed25519 mode 2020-03-19 13:28:31 +01:00
David Garske c0b534edd7 wolfBoot Aarch64 support (Xilinx Zynq and Raspberry Pi):
* Added Aarch64 boot/startup support
* Added configuration templates for Raspberry Pi 3 and Xilinx ZynqMP UltraScale+
* Added Xilinx Zynq QSPI bare-metal Driver
* Added `NO_XIP` option for full `ext_flash_*` API on all partitions
* Added Xilinx SDK Project Template
* Added support for DTS image partitions
* Added wolfBoot signing tool in Native C (`tools/keytools/sign.c`).
* Added libwolfboot functions `int wolfBoot_fallback_is_possible(void);` and `int wolfBoot_dualboot_candidate(void);`
* Performance improvement to only hash application firmware image once
2020-03-04 12:04:46 -08:00
Daniele Lacamera c32c5da6a1 Renamed KINETIS to MCUXPRESSO, added initial support for LPC family 2020-03-04 08:01:05 +01:00
Daniele Lacamera d33c5acac8 Added support for SHA3 2020-01-07 20:35:31 +01:00
Daniele Lacamera c847529698 Added RSA-4096 bit support 2020-01-07 11:32:09 +01:00
David Garske 79277d60ce Progress on expanding STM32WB testing support. Including external SPI/TPM and RSA. Fixes to prevent STM32WB macro collisions with PKA. Makefile improvements for combinations of PKA, SIGN and WOLFTPM. 2019-12-20 19:08:31 +01:00
Daniele Lacamera 25455744b6 Make Stm32 SPI driver more generic to reuse on other STM32 platforms 2019-12-20 19:08:31 +01:00
David Garske 041ca75793 Added support for TPM2.0 module via wolfTPM. Tested with STM32F4. Build using `make SIGN=ECC256 WOLFTPM=1`. 2019-12-17 10:59:11 -08:00
David Garske ac9e2b8647 Updated SP build options and stack usage warning. 2019-12-17 09:44:02 -08:00
David Garske fae6a974c8 Adds RSA support to wolfBoot using "SIGN=RSA2048". Includes RSA signing script tool in Python and instructions. 2019-12-17 09:44:02 -08:00
Daniele Lacamera f359134de8 Added -ffunction-sections -fdata-sections to CFLAGS to group unused
symbols
2019-11-19 18:10:41 +01:00
Daniele Lacamera 1c6ea8d732 Minor fix to Makefile to ensure config changes are effective 2019-10-16 16:25:16 +02:00
Daniele Lacamera ca9ffbab7c Configuration (via .config), single entry point for options 2019-10-10 20:39:25 +02:00
Daniele Lacamera 93b0aceaea Removed dead code (old crypto front-end) 2019-07-30 17:49:47 +02:00
Daniele Lacamera 34def41dd1 Added support for STM32F7 + DUALBANK_SWAP hw-assisted support 2019-07-17 11:37:43 -07:00
Daniele Lacamera e016722e66 Added support for STM32L0X3
(firmware update successfully tested on STM32L073)
2019-07-15 08:55:15 -07:00
David Garske 92ed57832f Fixes for long jump. Targets.md fix for RAM_CODE typo. 2019-06-12 17:25:38 +02:00
David Garske 0f00f8e700 SiFive HiFive (FE310) RISC-V support
* HiFive1 HAL Support for PLL Clock, UART, RTC and Flash QSPI Erase/Write.
* HiFive1 update demo application for accepting firmware updates over UART.
* Added test-update-server application for pushing firmware image over UART.
* Fixes for building with `make SIGN=ECC256`.
* Improvements to wolfCrypt `user_settings.h`.
* General library cleanup (license headers and formatting)
* Updated the wolfSSL submodule to latest.
* Documentation updates including new `Targets.md` section for hardare instructions.
2019-06-07 13:08:15 -07:00
Daniele Lacamera 0c14005e14 Fixed retrieving partition offset during build
fix for #12
2019-05-29 15:43:22 +02:00
Daniele Lacamera fc547e4a25 wolfBoot can update itself when compiled with RAM_CODE=1
- Added wolfBoot version
- Added extra 16bit header tag to identify the image type and authentication
- Implemented optional in-ram self-update of the bootloader, with version control
and authentication mechanism (not fail-safe)
2019-04-29 20:32:04 +02:00
Daniele Lacamera 937e9d46fb Introducing RAMCODE tag to transfer functions to RAM
- Moved functions in the flash write path to RAM, so their execution
does not depend on flash access

- RAMCODE can be enabled via "make RAM_CODE=1"
2019-04-29 20:32:04 +02:00
Daniele Lacamera 905e6a049a Should fix 'make clean' on MacOS 2019-04-24 20:14:52 +02:00
Daniele Lacamera 94af1b74cb Fixed MacOS compatibility + python3 requirement 2019-04-24 20:14:06 +02:00
Daniele Lacamera 75fc9cc59a C Host key tools rewritten in python (fix for #4) 2019-04-17 07:15:59 +02:00
Daniele Lacamera 97a88ff76c Added sifive-hifive test application with external bsp 2019-04-04 16:33:24 +02:00
Daniele Lacamera b918014203 Multi-platform test application, added K82 to Kinetis port 2019-04-04 16:31:45 +02:00
Daniele Lacamera b5fd49a82a Initial experimental support for RISC-V
- New Makefile to support multiple architectures
- Separate architecture-specific start-up files
- Stub for a hifive1 HAL port
2019-04-01 14:01:14 +02:00
Daniele Lacamera 2cb57e9326 wolfSSL submodule: to commit b528997d30 2019-03-22 08:38:21 +01:00
Daniele Lacamera 6324e8fe37 [CI] SPI tests fixed 2019-03-18 12:21:44 +01:00
Daniele Lacamera 630a10eafa Automated tests for EXT_FLASH/SPI_FLASH 2019-03-15 11:16:34 +01:00
Daniele Lacamera ccf794cf4c Added test makefile targets for test automation 2019-03-13 14:56:33 +01:00
Daniele Lacamera d3d938d087 Kinetis SDK path: fixed command line variable 2019-03-10 14:09:38 +01:00
Daniele Lacamera 8eb8374795 Added NVM_FLASH_WRITEONCE compile option. Optimized write in kinetis HAL. 2019-03-10 12:40:21 +01:00
Daniele Lacamera 472cdd07b3 Kinetis hal: removed clock settings from libwolfboot 2019-03-10 09:49:14 +01:00
Daniele Lacamera 8a8875fc05 Added support for Kinetis SDK 2019-03-05 20:35:04 +01:00
Daniele Lacamera 6b5b1ed854 Added support for Texas Instrument cc26x2 2019-02-25 09:20:33 +01:00
Daniele Lacamera 27a306b7f5 Prevent downgrade attacks by default, unless compiled with
ALLOW_DOWNGRADE=1
2019-02-15 15:16:07 +01:00
Daniele Lacamera 503b008cf5 New feature: allow swapping from external memory (e.g. SPI flash) 2019-02-15 13:41:06 +01:00
Daniele Lacamera 07db864ab1 EXT flash support: image header mapping 2019-02-13 13:08:32 +01:00
Daniele Lacamera 3a455383a1 STM32F4 Test application: modified to turn a led on early at boot to measure
boot time.
2019-01-22 11:58:42 +01:00
Daniele Lacamera e14efd641a ECC verification: added support for ASM optimization, enabled by default
(turn off with NO_ASM=1)
2019-01-21 09:51:12 +01:00
Daniele Lacamera a5b15bc40f Fixed static buffer allocation for ECC signature verification 2019-01-21 06:36:03 +01:00
Daniele Lacamera 41c60f4bd2 Ecc256 signature verification with sp-math support, work in progress 2019-01-21 05:28:59 +01:00
Daniele Lacamera 9410a6fe7b Fixed Makefile to add Cortex-M0 support 2019-01-08 09:08:23 +01:00
Daniele Lacamera 24f8c091ac Fixed nrf52 hal for unaligned byte write operations 2018-11-22 18:52:13 +01:00
Daniele Lacamera 61bbfef35c Separated library functions for in-app use 2018-11-22 16:22:30 +01:00
Daniele Lacamera 9403c711ad Update mechanism implemented, ed25519 signing tool changed 2018-11-22 15:47:41 +01:00
Daniele Lacamera 6b3dfe2e69 Removed dependency on bootutil. Starting from a new clean-room update design 2018-11-21 07:00:35 +01:00
Daniele Lacamera 62fcc55285 Simplified code structure, got rid of some configuration defines 2018-10-23 12:14:50 +02:00
Daniele Lacamera 7f02df51c9 Added SWAP=0 option, fixed some warnings 2018-10-21 10:04:50 +02:00
Daniele Lacamera 34a8ae443d Added NO_VTOR to disable interrupt table relocation 2018-10-20 10:46:07 +02:00
Daniele Lacamera efa8d63200 Using 0x20000 as start of primary partition in the example 2018-10-15 07:39:52 +02:00
Daniele Lacamera ec66c47375 First version of the bootloader 2018-10-11 12:23:58 +02:00