Merge #203 203: Add a CI tool that prints a size diff for incoming PRs. r=jrvanwhy a=jrvanwhy The diff is computed by building the examples with `make examples` both in the PR's target branch and the merge result, and running `diff` on the result. This is built using GitHub Actions because upstream Tock is moving to GitHub Actions (see https://github.com/tock/tock/pull/1815, and [this core WG discussion](https://github.com/tock/tock/blob/master/doc/wg/core/notes/core-notes-2020-04-24.md#ci-infrastructure-travis-to-github-actions)). Co-authored-by: Johnathan Van Why <jrvanwhy@google.com>
diff --git a/Makefile b/Makefile index d205cc7..36921bb 100644 --- a/Makefile +++ b/Makefile
@@ -11,6 +11,8 @@ @echo "libtock-rs currently includes support for the following platforms:" @echo " - hail" @echo " - nrf52840" + @echo " - nucleo_f429zi" + @echo " - nucleo_f446re" @echo " - opentitan" @echo " - hifive1" @echo " - nrf52" @@ -102,6 +104,22 @@ flash-hail: PLATFORM=hail cargo run $(release) --target=thumbv7em-none-eabi --example $(EXAMPLE) $(features) +.PHONY: nucleo_f429zi +nucleo_f429zi: + PLATFORM=nucleo_f429zi cargo build $(release) --target=thumbv7em-none-eabi --examples $(features) + +.PHONY: flash-nucleo_f429zi +flash-nucleo_f429zi: + PLATFORM=nucleo_f429zi cargo run $(release) --target=thumbv7em-none-eabi --example $(EXAMPLE) $(features) + +.PHONY: nucleo_f446re +nucleo_f446re: + PLATFORM=nucleo_f446re cargo build $(release) --target=thumbv7em-none-eabi --examples $(features) + +.PHONY: flash-nucleo_f446re +flash-nucleo_f446re: + PLATFORM=nucleo_f446re cargo run $(release) --target=thumbv7em-none-eabi --example $(EXAMPLE) $(features) + .PHONY: nrf52840 nrf52840: PLATFORM=nrf52840 cargo build $(release) --target=thumbv7em-none-eabi --examples $(features)
diff --git a/README.md b/README.md index 52ea0b6..72506cd 100644 --- a/README.md +++ b/README.md
@@ -4,7 +4,11 @@ Rust userland library for Tock (WIP) -Tested with tock [Release 1.4.1](https://github.com/tock/tock/commit/7e37bf67761d83fd585cace4fb201e2864d300b1). +Generally this library was tested with tock [Release 1.5](https://github.com/tock/tock/releases/tag/release-1.5). +Since then changes have been made that might not work with the Tock +release 1.5, but instead target Tock master. For example this library +might support newer boards (Apollo3), changed boards (HiFive1 revB) or +new drivers (HMAC). The library works in principle on most boards, but there is currently the [showstopper bug #28](https://github.com/tock/libtock-rs/issues/28) that prevents
diff --git a/boards/layout_nrf52.ld b/boards/layout_nrf52.ld index 419a0bc..40cdb10 100644 --- a/boards/layout_nrf52.ld +++ b/boards/layout_nrf52.ld
@@ -3,7 +3,7 @@ MEMORY { /* The application region is 64 bytes (0x40) */ FLASH (rx) : ORIGIN = 0x00030040, LENGTH = 0x0005FFC0 - SRAM (rwx) : ORIGIN = 0x20002000, LENGTH = 62K + SRAM (rwx) : ORIGIN = 0x20004000, LENGTH = 62K } /*
diff --git a/boards/layout_nucleo_f429zi.ld b/boards/layout_nucleo_f429zi.ld new file mode 100644 index 0000000..8261e9c --- /dev/null +++ b/boards/layout_nucleo_f429zi.ld
@@ -0,0 +1,17 @@ +/* Layout for the Nucleo F429zi, used by the examples in this repository. */ + +MEMORY { + /* The application region is 64 bytes (0x40) */ + FLASH (rx) : ORIGIN = 0x08040040, LENGTH = 255K + SRAM (rwx) : ORIGIN = 0x20004000, LENGTH = 112K +} + +/* + * Any change to STACK_SIZE should be accompanied by a corresponding change to + * `elf2tab`'s `--stack` option + */ +STACK_SIZE = 2048; + +MPU_MIN_ALIGN = 8K; + +INCLUDE layout_generic.ld
diff --git a/boards/layout_nucleo_f446re.ld b/boards/layout_nucleo_f446re.ld new file mode 100644 index 0000000..6536b30 --- /dev/null +++ b/boards/layout_nucleo_f446re.ld
@@ -0,0 +1,17 @@ +/* Layout for the Nucleo F446re, used by the examples in this repository. */ + +MEMORY { + /* The application region is 64 bytes (0x40) */ + FLASH (rx) : ORIGIN = 0x08040040, LENGTH = 255K + SRAM (rwx) : ORIGIN = 0x20004000, LENGTH = 176K +} + +/* + * Any change to STACK_SIZE should be accompanied by a corresponding change to + * `elf2tab`'s `--stack` option + */ +STACK_SIZE = 2048; + +MPU_MIN_ALIGN = 8K; + +INCLUDE layout_generic.ld
diff --git a/examples-features/libtock_test.rs b/examples-features/libtock_test.rs index 5fe9e59..9a64e67 100644 --- a/examples-features/libtock_test.rs +++ b/examples-features/libtock_test.rs
@@ -1,5 +1,6 @@ // Libtock regression tests to be used with real hardware. -// Requires P0.03 and P0.04 to be connected (on a nRF52 DK). +// Requires P0.03 and P0.04 to be connected (on a nRF52 DK) and +// P0.01 and P0.03 to be connected (on a nRF52840dk). #![no_std] extern crate alloc;
diff --git a/tools/flash.sh b/tools/flash.sh index ea75dee..1a7d74c 100755 --- a/tools/flash.sh +++ b/tools/flash.sh
@@ -20,6 +20,11 @@ binary_name=cortex-m4.elf tockload=n ;; + "nucleo_f429zi"|"nucleo_f446re") + tockloader_flags="" + binary_name=cortex-m4.elf + tockload=n + ;; "nrf52"|"nrf52840") tockloader_flags="--jlink --arch cortex-m4 --board nrf52dk --jtag-device nrf52" binary_name=cortex-m4.elf