Skip to content

Commit

Permalink
Merge branch 'release/v0.4.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanpallant committed Jan 20, 2023
2 parents 3fd0da5 + 00ae9fa commit cd7d428
Show file tree
Hide file tree
Showing 7 changed files with 537 additions and 338 deletions.
18 changes: 7 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,25 @@
name: Build

on: [push, pull_request]
name: Build (and Release)

env:
CARGO_TERM_COLOR: always

jobs:
build:
name: Build (and Release)
runs-on: ubuntu-latest
steps:
- name: Checkout Code
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0

- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: thumbv6m-none-eabi
- name: Add targets
run: |
rustup target add thumbv6m-none-eabi
- name: Build Code
- name: Build neotron-pico-bios
run: |
cargo build --release --verbose
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@

* None

## v0.4.1 ([Source](https://github.com/neotron-compute/neotron-pico-bios/tree/v0.4.1) | [Release](https://github.com/neotron-compute/neotron-pico-bios/release/tag/v0.4.1))

* Wait for interrupts from the BMC before reading PS/2 key codes
* Requires Neotron Pico BMC v0.5.0
* Debug LEDs change every time you get an interrupt from the IO controller
* Doubled the speed of the RP2040's QSPI flash interface
* Documentation updates to make programming your RP2040 easier

## v0.4.0 ([Source](https://github.com/neotron-compute/neotron-pico-bios/tree/v0.4.0) | [Release](https://github.com/neotron-compute/neotron-pico-bios/release/tag/v0.4.0))

* Updated dependencies
Expand Down
11 changes: 7 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ resolver = "2"
readme = "README.md"
license = "GPL-3.0-or-later"
name = "neotron-pico-bios"
version = "0.4.0"
version = "0.4.1"

[dependencies]
# Useful Cortex-M specific functions (e.g. SysTick)
cortex-m = "0.7"
# The Raspberry Pi Pico HAL
rp-pico = "0.5"
rp-pico = { version = "0.6", default-features = false, features = [ "rt", "critical-section-impl", "rom-func-cache" ] }
# Cortex-M run-time (or start-up) code
cortex-m-rt = "0.7"
# The BIOS to OS API
neotron-common-bios = "0.7.0"
# For the RP2040 bootloader
rp2040-boot2 = "0.2"
rp2040-boot2 = "0.3.0"
# For hardware abstraction traits
embedded-hal ="0.2"
# Gives us formatted PC-side logging
Expand All @@ -27,7 +27,7 @@ defmt-rtt = "0.4"
# Send panics to the debugger
panic-probe = "0.2"
# RP2040 PIO assembler
pio = "0.2"
pio = "0.2.1"
# Macros for RP2040 PIO assembler
pio-proc = "0.2"
# Hardware locks for sharing data with interrupts
Expand All @@ -53,3 +53,6 @@ codegen-units = 1
debug = true
# better optimizations
lto = true

[patch.crates-io]
rp2040-boot2 = { version = "0.3.0", git = "https://github.com/rp-rs/rp2040-boot2" }
30 changes: 26 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,19 @@ The Neotron BIOS uses the [defmt](https://crates.io/crates/defmt) crate to provi
* connect Pin 5 on the *Debugger* Pico to SWDIO on the *Neotron* Pico
* connect USB on the *Debugger* Pico to your PC

2. Flash your *Debugger* Pico with https://github.com/majbthrd/DapperMime firmware (e.g. by copying the UF2 file to the USB Mass Storage device)
2. Flash your *Debugger* Pico with https://github.com/raspberrypi/picoprobe or https://github.com/majbthrd/DapperMime firmware (e.g. by copying the UF2 file to the USB Mass Storage device)

3. On your PC, install [*probe-rs*](https://github.com/knurling-rs/probe-run), the programming tool from [Ferrous System's](https://www.ferrous-systems.com) [Knurling Project](https://github.com/knurling).
3. On your PC, install [*probe-run*](https://github.com/knurling-rs/probe-run), the programming tool from [Ferrous System's](https://www.ferrous-systems.com) [Knurling Project](https://github.com/knurling).

```console
user@host ~ $ cargo install probe-rs
user@host ~ $ cargo install probe-run
```

4. Power on your Neotron Pico.

5. Build the Neotron OS

We use the "neotron-os-pico.ld" linker script to link it at `0x1002_0000`.
We use the "neotron-flash-1002.ld" linker script to link it at `0x1002_0000`.

```console
user@host ~/neotron-os $ cargo build --bin=flash1002 --release --target=thumbv6m-none-eabi
Expand Down Expand Up @@ -86,6 +86,28 @@ user@host ~/neotron-pico-bios $ DEFMT_LOG=debug cargo run --release

You should see your Neotron Pico boot, both over RTT in the `probe-run` output, and also on the VGA output.

6a. Multiple probes

If you have multiple probe-rs compatible probes attached to your computer,
you will receive an error message.

You can set the PROBE_RUN_PROBE environment variable to select one of the
available probes, like so:

```console
$ probe-run --list-probes
the following probes were found:
[0]: Picoprobe CMSIS-DAP (VID: 2e8a, PID: 000c, Serial: Exxxxxxxxxxxxxx6, CmsisDap)
[1]: STLink V2 (VID: 0483, PID: 3748, Serial: 0xxxxxxxxxxxxxxxxxxxxxxE, StLink)
user@host ~/neotron-pico-bios $ PROBE_RUN_PROBE='0483:3748' DEFMT_LOG=debug cargo run --release
```

You can also just provide the probe Serial, for example if you have multiple
identical probes.

The documentation for this feature can be found at
<https://github.com/knurling-rs/probe-run#12-multiple-probes>

## Changelog

See [CHANGELOG.md](./CHANGELOG.md)
Expand Down
8 changes: 7 additions & 1 deletion build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,15 @@ fn main() {
// Generate a file containing the firmware version
let version_output = std::process::Command::new("git")
.current_dir(env::var_os("CARGO_MANIFEST_DIR").unwrap())
.args(["describe", "--long", "--dirty"])
.args(["describe", "--tags", "--dirty"])
.output()
.expect("running git-describe");

println!(
"Version is {:?}",
std::str::from_utf8(&version_output.stdout)
);
println!("Error is {:?}", std::str::from_utf8(&version_output.stderr));
assert!(version_output.status.success());

// Remove the trailing newline
Expand Down
Loading

0 comments on commit cd7d428

Please sign in to comment.