Skip to content

Commit eb204cf

Browse files
Merge pull request #4 from RusPiRo/feature/aarch64
Feature/aarch64
2 parents 99e9b32 + 3df35ae commit eb204cf

28 files changed

+1788
-792
lines changed

.travis.yml

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,28 @@ branches:
66

77
language: rust
88

9+
rust:
10+
# build nightly only for the time beeing
11+
- nightly
12+
913
matrix:
1014
fast_finish: true
11-
1215
include:
13-
- rust: nightly
14-
15-
script: ./travis-build.sh
16+
- name: "build 64Bit"
17+
install:
18+
- sudo apt-get install gcc-aarch64-linux-gnu gcc-aarch64-linux-gnu
19+
- cargo install cargo-xbuild
20+
- rustup target add aarch64-unknown-linux-gnu
21+
- rustup component add rust-src
22+
- sudo chmod ugo+x build.sh
23+
script: sed -i 's/path.*=.*\".*", version/version/g' Cargo.toml && ./build.sh 64 travis
1624

17-
install:
18-
# install cross compiler toolchain
19-
- sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
20-
# install cargo xbuild to proper cross compile
21-
- cargo install cargo-xbuild
22-
# add the build target used for Raspbarry Pi targeting builds
23-
- rustup target add armv7-unknown-linux-gnueabihf
24-
- rustup component add rust-src
25-
- sudo chmod ugo+x ./travis-build.sh
25+
- name: "build 32Bit"
26+
install:
27+
- sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
28+
- cargo install cargo-xbuild
29+
- rustup target add armv7-unknown-linux-gnueabihf
30+
- rustup component add rust-src
31+
- sudo chmod ugo+x build.sh
32+
# remove the path in the dependencies of the cargo file to ensure we use the version from crates.io
33+
script: sed -i 's/path.*=.*\".*", version/version/g' Cargo.toml && ./build.sh 32 travis

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Changelog
2+
## :carrot: v0.3.0
3+
- ### :bulb: Features
4+
Refactor the boot strapping code to support `Aarch32` and `Aarch64` build target architectures.
5+
6+
The boot strapping code is run at the very first moment the Raspberry Pi boots up and the GPU
7+
hands over execution to the CPU. The boot strapper could be built to run in `singlecore` mode.
8+
9+
The boot strapping switches all cores into exception level EL1(aarch64)/SVC(aarch32) and
10+
initializes the MMU with a default 1:1 mapping accross the whole available memory.
11+
12+
The boot strapping also sets up exception handling and provides a generic default exception
13+
handler that is ready to be implemented by the user of this crate.
14+
15+
The miniUart of the Raspberry Pi is initialized and attached to the global CONSOLE which enables
16+
users of this crate to use the macros `print!`and `println!` to conviniently write to the uart console. The feature
17+
set of both macros is equivalent to the `rust_std` versions.

Cargo.lock

Lines changed: 211 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
[package]
22
name = "ruspiro-boot"
33
authors = ["André Borrmann <[email protected]>"]
4-
version = "0.2.1" # remember to update html_root_url
4+
version = "0.3.0" # remember to update html_root_url
55
description = """
6-
Baremetal boot code for the Raspberry Pi 3 to conviniently start a custom kernel within the Rust environment
7-
without the need to dangle with all the initial setup like stack pointers, getting MMU setup and all cores kicked off
8-
for processing.
6+
Baremetal boot strapper code for the Raspberry Pi 3 to conviniently start a custom kernel within the Rust environment
7+
without the need to deal with all the initial setup like stack pointers, getting MMU setup and get all cores kicked off
8+
for processing. Supports Aarch32 and Aarch64 builds.
99
"""
1010
license = "Apache-2.0"
1111
repository = "https://github.com/RusPiRo/ruspiro-boot"
12-
documentation = "https://docs.rs/ruspiro-boot/0.2.1"
12+
documentation = "https://docs.rs/ruspiro-boot/0.3.0"
1313
readme = "README.md"
1414
keywords = ["RusPiRo", "raspberrypi", "boot", "baremetal", "multicore"]
1515
categories = ["no-std", "embedded"]
1616
edition = "2018"
17+
links = "ruspiro-boot"
18+
build = "build.rs"
1719

1820
[badges]
1921
travis-ci = { repository = "RusPiRo/ruspiro-boot", branch = "master" }
@@ -25,19 +27,19 @@ maintenance = { status = "actively-developed" }
2527
cc = "1.0.38"
2628

2729
[dependencies]
30+
ruspiro-register = { path = "../register", version = "0.3" }
31+
ruspiro-gpio = { path = "../gpio", version = "0.3" }
32+
ruspiro-interrupt = { path = "../interrupt", version = "0.3" }
33+
ruspiro-uart = { path = "../uart", version = "0.3" }
34+
ruspiro-console = { path = "../console", version = "0.3" }
35+
ruspiro-timer = { path = "../timer", version = "0.3" }
36+
ruspiro-cache = { path = "../cache", version = "0.3" }
2837

2938
[features]
30-
default = ["ruspiro_pi3"]
31-
ruspiro_pi3 = []
39+
ruspiro_pi3 = [
40+
"ruspiro-gpio/ruspiro_pi3",
41+
"ruspiro-uart/ruspiro_pi3",
42+
"ruspiro-timer/ruspiro_pi3"
43+
]
3244
singlecore = []
3345
with_panic = []
34-
with_exception = []
35-
36-
[package.metadata.docs.rs]
37-
all-features = false
38-
no-default-features = true
39-
#default-target = "armv7-unknown-linux-gnueabihf"
40-
#rustc-args = [
41-
# "-C target-cpu=cortex-a53",
42-
# "-C target-feature=+a53,+fp-armv8,+v8,+vfp3,+d16,+thumb2,+neon"
43-
# ]

0 commit comments

Comments
 (0)