Fix the broken Travis CI:
1. Update the `tock` submodule to a version that includes
https://github.com/tock/tock/pull/2024, which fixes the OpenTitan BootROM
download code, as well as https://github.com/tock/tock/pull/2038, which fixes
a HiFive1 kernel bug.
2. Update the setup-qemu make target to track changes in Tock's makefile.
3. Point `test_runner` to the new QEMU location.
4. Disable the callback test. HiFive1 doesn't have a working timer driver. The
callback test only worked before because of some other callback, which
doesn't seem to occur with the new kernel.
diff --git a/Cargo.toml b/Cargo.toml
index cb8e160..9ac3f91 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,7 +9,11 @@
alloc = ["libtock_core/alloc"]
custom_panic_handler = ["libtock_core/custom_panic_handler"]
custom_alloc_error_handler = ["libtock_core/custom_alloc_error_handler"]
+# In the QEMU-emulated HiFive1 target, we do not have connected GPIO pins or a
+# working timer interface. These features allow the test's user to disable these
+# tests in environments where they will not pass.
__internal_disable_gpio_in_integration_test = []
+__internal_disable_timer_in_integration_test = []
[dependencies]
libtock_core = { path = "core" }
diff --git a/Makefile b/Makefile
index 0227e3d..d47b155 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,8 @@
.PHONY: test-qemu-hifive
test-qemu-hifive: kernel-hifive
PLATFORM=hifive1 cargo rrv32imac --example libtock_test --features=alloc \
- --features=__internal_disable_gpio_in_integration_test
+ --features=__internal_disable_gpio_in_integration_test \
+ --features=__internal_disable_timer_in_integration_test
cargo run -p test_runner
.PHONY: examples
diff --git a/examples-features/libtock_test.rs b/examples-features/libtock_test.rs
index 9a64e67..ac1e541 100644
--- a/examples-features/libtock_test.rs
+++ b/examples-features/libtock_test.rs
@@ -51,6 +51,7 @@
test.formatting()?;
test.heap()?;
test.drivers_only_instantiable_once()?;
+ #[cfg(not(feature = "__internal_disable_timer_in_integration_test"))]
test.callbacks(timer).await?;
#[cfg(not(feature = "__internal_disable_gpio_in_integration_test"))]
test.gpio(gpio)?;
@@ -113,6 +114,10 @@
)
}
+ #[cfg_attr(
+ feature = "__internal_disable_timer_in_integration_test",
+ allow(dead_code)
+ )]
async fn callbacks(&mut self, timer_context: &mut DriverContext) -> TockResult<()> {
let mut callback_hit = false;
let mut with_callback = timer_context.with_callback(|_, _| callback_hit = true);
diff --git a/tock b/tock
index 3218d5b..6e38588 160000
--- a/tock
+++ b/tock
@@ -1 +1 @@
-Subproject commit 3218d5baa8459537b5fcfdbe8b5bc967a0f4a41e
+Subproject commit 6e38588c73dbd78d274c00ae7fb7789b78cf6856