Giter VIP home page Giter VIP logo

longan-nano's People

Contributors

a-gavin avatar almindor avatar aw avatar chenbo-again avatar dcz-self avatar disasm avatar dkhayes117 avatar dotcypress avatar elfmimi avatar fplust avatar gnxlxnxx avatar gschwaer avatar jbornschein avatar lghty avatar romainreignier avatar wucke13 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

longan-nano's Issues

Huge binaries after objcopy

Hi there,
thank you for creating this small project as help to start a rust project. on longan-nano.
Unfortunatelly I have a problem with objcopy trying to use the dfu-util method. Using riscv-nuclei-elf-objcopy -O binary target/riscv32imac-unknown-none-elf/release/examples/blinky blinky.bin results in an 385M sized file! Any other example has a similar result file size.
Does somebody has a clue how to solve this behaviour?

Thank you
Simon

Change RISC-V OpenOCD to Official Fork in README

As of this PR the official RISC-V OpenOCD fork supports the Longan Nano. I personally have had trouble both running and building the currently linked unofficial RISC-V OpenOCD fork in the README on all tagged versions, i.e. current version segfaults in my setup, am unable to build previous versions without compiler errors.

While the unofficial fork is still maintained, given that the official RISC-V OpenOCD fork supports this board, I suggest pointing users to the official fork instead.

examples just do nothing (hang/black) on longan nano lite

Hi, I use the lite version,
and my .cargo/config looks like this:

[target.riscv32imac-unknown-none-elf]
runner = 'riscv64-unknown-elf-gdb -x openocd.gdb'
rustflags = [
  "-C", "link-arg=-Tmemory-c8.x",
  "-C", "link-arg=-Tlink.x",
  "-C", "target-cpu=generic-rv32"
]

[build]
target = "riscv32imac-unknown-none-elf"

The c8 should be the correct model for the lite.
But when I upload the .bin files I created with objcopy

riscv64-unknown-elf-objcopy -O binary target/riscv32imac-unknown-none-elf/release/examples/blinky blinky.bin

and uploaded

$ dfu-util -a 0 -s 0x08000000 -D blinky.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 28e9:0189
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x08000000, size = 8976
Download	[=========================] 100%         8976 bytes
Download done.
File downloaded successfully

After that the target just does nothing (hang?).
No blinking LED.
Same symptoms with the display example.
On platformio I had those symptoms when using the longan-nano configuration instead of the longan-nano-lite.
But here already the right chip is selected.
What else could I try?
How could I diagnose the issue?

[Request] Add an example for interrupt.

Hello, Can you please add an example of interruption? I don't know why I can't make it work properly.

#![no_std]
#![no_main]

// use core::arch::asm;

use gd32vf103xx_hal::exti::{Exti, ExtiLine, ExtiEvent};
use gd32vf103xx_hal::pac::Interrupt;
use panic_halt as _;

use longan_nano::hal::delay::McycleDelay;
use longan_nano::hal::{pac, prelude::*};
use longan_nano::led::{rgb, Led, RED};
use riscv_rt::entry;

#[no_mangle]
#[allow(unused_variables, non_snake_case)]
fn DefaultHandler() {
    unsafe{
        let mut red = &mut *global_red;
        red.on();
    }
}

static mut global_red: *mut RED = 0 as *mut RED;

#[entry]
fn main() -> ! {
    let dp = pac::Peripherals::take().unwrap();
    let mut rcu = dp.RCU.configure().freeze();

    let gpioa = dp.GPIOA.split(&mut rcu);
    let gpioc = dp.GPIOC.split(&mut rcu);

    let (mut red, mut green, mut blue) = rgb(gpioc.pc13, gpioa.pa1, gpioa.pa2);
    red.off();
    green.off();
    blue.off();
    let mut exti = Exti::new(dp.EXTI);
    let line = ExtiLine::from_gpio_line(gpioa.pa0.into_floating_input().pin_number()).unwrap();
    exti.listen(line, gd32vf103xx_hal::exti::TriggerEdge::Both);
    exti.gen_event(line, ExtiEvent::Enable);
    unsafe {
        global_red = (&mut red) as *mut RED;
        loop {
            // asm!("wfi");
        }
    }
}

Unable to flash with dfu-util

I wanted to test the display example. But it does not seem to work.

Steps to reproduce:

cargo build --release --example display --features=lcd

output:

   Compiling semver-parser v0.7.0
   Compiling proc-macro2 v0.4.30
   Compiling unicode-xid v0.1.0
   Compiling syn v0.15.44
   Compiling riscv v0.5.4
   Compiling bit_field v0.9.0
   Compiling autocfg v1.0.0
   Compiling num-derive v0.2.5
   Compiling nb v0.1.2
   Compiling rand_core v0.4.2
   Compiling void v1.0.2
   Compiling vcell v0.1.2
   Compiling gd32vf103xx-hal v0.2.1
   Compiling st7735-lcd v0.6.2
   Compiling longan-nano v0.1.1 (/tmp/longan-nano)
   Compiling embedded-graphics v0.5.2
   Compiling riscv-rt v0.6.1
   Compiling r0 v0.2.2
   Compiling panic-halt v0.2.0
   Compiling semver v0.9.0
   Compiling embedded-hal v0.2.3
   Compiling rand_core v0.3.1
   Compiling rand v0.5.6
   Compiling rustc_version v0.2.3
   Compiling num-traits v0.2.11
   Compiling quote v0.6.13
   Compiling bare-metal v0.2.5
   Compiling cast v0.2.3
   Compiling gd32vf103-pac v0.2.0
   Compiling riscv-rt-macros v0.1.6
   Finished release [optimized] target(s) in 23.93s

As I have connected the Sipeed Longan Nano via USB-C, I had to dfu-util to flash the binary which must be converted before:

riscv-sifive-elf-objcopy -O binary target/riscv32imac-unknown-none-elf/release/examples/display display.bin

A file with ~23K size is the result. The next step was to put the Sipeed Longan Nano into flash mode and flash the bin file:

sudo dfu-util -s 0x08000000:leave -D display.bin

which outputs:

dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 28e9:0189
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x08000000, size = 22888
Download	[=========================] 100%        22888 bytes
Download done.
File downloaded successfully
dfu-util: Error during download get_status

When completed, the Sipeed Longan Nano resets and is not in flashmode anymore.

During the whole process including flashmode, flashing and running the program, the red led next to the boot button is on and the backlight of the display too but all pixels remain black and never change their color which is not expected as it should display Hello Rust! when the program is running.

I do not use openocd as I do not know how to use it as I do not own a JTAG adapter. I only own a USB UART adapter but I think it is not possible to use that instead.

rust-lld: error: no memory region specified for section '.eh_frame', on Ubuntu 16

$ rustup target add riscv32imac-unknown-none-elf
info: component 'rust-std' for target 'riscv32imac-unknown-none-elf' is up to date
~/Desktop/rust-sipeed-longan-nano-master$ rustup default nightly
info: using existing install for 'nightly-i686-unknown-linux-gnu'
info: default toolchain set to 'nightly-i686-unknown-linux-gnu'

nightly-i686-unknown-linux-gnu unchanged - rustc 1.49.0-nightly (1773f60ea 2020-11-08)

~/Desktop/rust-sipeed-longan-nano-master$ rustup target add riscv32imac-unknown-none-elf
info: component 'rust-std' for target 'riscv32imac-unknown-none-elf' is up to date
/Desktop/rust-sipeed-longan-nano-master$ rustup target add riscv32imac-unknown-none-elf
info: component 'rust-std' for target 'riscv32imac-unknown-none-elf' is up to date
oceanfish81@gollvm:
/Desktop/rust-sipeed-longan-nano-master$ cargo --verbose build
Compiling r0 v0.2.2
Running rustc --crate-name r0 /home/oceanfish81/.cargo/registry/src/github.com-1285ae84e5963aae/r0-0.2.2/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=c85b5ab54aceb5f9 -C extra-filename=-c85b5ab54aceb5f9 --out-dir /home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps --target riscv32imac-unknown-none-elf -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/debug/deps --cap-lints allow -C link-arg=-Tlink.x
Compiling panic-abort v0.3.1
Running rustc --crate-name panic_abort /home/oceanfish81/.cargo/registry/src/github.com-1285ae84e5963aae/panic-abort-0.3.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=37322ac1e75fee7c -C extra-filename=-37322ac1e75fee7c --out-dir /home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps --target riscv32imac-unknown-none-elf -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/debug/deps --cap-lints allow -C link-arg=-Tlink.x
Compiling rust-sipeed-longan-nano v0.1.0 (/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master)
Running rustc --crate-name rust_sipeed_longan_nano --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=2df4b3c694b8dfb5 -C extra-filename=-2df4b3c694b8dfb5 --out-dir /home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps --target riscv32imac-unknown-none-elf -C incremental=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/incremental -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/debug/deps --extern panic_abort=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libpanic_abort-37322ac1e75fee7c.rlib --extern r0=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libr0-c85b5ab54aceb5f9.rlib -C link-arg=-Tlink.x
warning: unnecessary parentheses around assigned value
--> src/main.rs:8:25
|
8 | const rcu_apb2en: u32 = (0x4002_1000 + 0x18);
| ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
|
= note: #[warn(unused_parens)] on by default

warning: unnecessary parentheses around assigned value
--> src/main.rs:10:25
|
10 | const gpioa_ctl0: u32 = (0x4001_0800 + 0x0);
| ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses

warning: unnecessary parentheses around assigned value
--> src/main.rs:11:25
|
11 | const gpioa_data: u32 = (0x4001_0800 + 0xc);
| ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses

warning: unused import: panic_abort
--> src/main.rs:13:5
|
13 | use panic_abort;
| ^^^^^^^^^^^
|
= note: #[warn(unused_imports)] on by default

warning: constant rcu_apb2en should have an upper case name
--> src/main.rs:8:7
|
8 | const rcu_apb2en: u32 = (0x4002_1000 + 0x18);
| ^^^^^^^^^^ help: convert the identifier to upper case: RCU_APB2EN
|
= note: #[warn(non_upper_case_globals)] on by default

warning: constant gpioa_ctl0 should have an upper case name
--> src/main.rs:10:7
|
10 | const gpioa_ctl0: u32 = (0x4001_0800 + 0x0);
| ^^^^^^^^^^ help: convert the identifier to upper case: GPIOA_CTL0

warning: constant gpioa_data should have an upper case name
--> src/main.rs:11:7
|
11 | const gpioa_data: u32 = (0x4001_0800 + 0xc);
| ^^^^^^^^^^ help: convert the identifier to upper case: GPIOA_DATA

error: linking with rust-lld failed: exit code: 1
|
= note: "rust-lld" "-flavor" "gnu" "-L" "/home/oceanfish81/snap/rustup/common/rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.19pbfx1e7ppiz22i.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.1gxn96a4ynn6krtc.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.1rrq47tcmo7r1d7q.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.2oywxm1qwyrau2j5.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.36wqpyrxaht0bqyw.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.4g879aqcx3v63xcn.rcgu.o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5.hpztk5fc5xtxkyj.rcgu.o" "-o" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/rust_sipeed_longan_nano-2df4b3c694b8dfb5" "--gc-sections" "-L" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps" "-L" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/debug/deps" "-L" "/home/oceanfish81/snap/rustup/common/rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib" "-Bstatic" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libr0-c85b5ab54aceb5f9.rlib" "--start-group" "/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libpanic_abort-37322ac1e75fee7c.rlib" "/home/oceanfish81/snap/rustup/common/rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/librustc_std_workspace_core-1bd0d3673780d693.rlib" "/home/oceanfish81/snap/rustup/common/rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/libcore-5aec724f1f867fb1.rlib" "--end-group" "/home/oceanfish81/snap/rustup/common/rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/libcompiler_builtins-deaf2d068ddf18c0.rlib" "-Tlink.x" "-Bdynamic"
= note: rust-lld: error: no memory region specified for section '.eh_frame'

error: aborting due to previous error; 7 warnings emitted

error: could not compile rust-sipeed-longan-nano

Caused by:
process didn't exit successfully: rustc --crate-name rust_sipeed_longan_nano --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=2df4b3c694b8dfb5 -C extra-filename=-2df4b3c694b8dfb5 --out-dir /home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps --target riscv32imac-unknown-none-elf -C incremental=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/incremental -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps -L dependency=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/debug/deps --extern panic_abort=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libpanic_abort-37322ac1e75fee7c.rlib --extern r0=/home/oceanfish81/Desktop/rust-sipeed-longan-nano-master/target/riscv32imac-unknown-none-elf/debug/deps/libr0-c85b5ab54aceb5f9.rlib -C link-arg=-Tlink.x (exit code: 1)

Does not compile with the default stable toolchain

When I tried to build as instructed with the stable toolchain, I got this:

$ cargo build --example blinky --release --all-features
    Updating crates.io index
  Downloaded riscv-target v0.1.2
  Downloaded riscv-rt v0.8.0
  Downloaded rand v0.5.6
  Downloaded nb v0.1.3
  Downloaded embedded-hal v0.2.4
  Downloaded cast v0.2.3
  Downloaded bit_field v0.10.1
  Downloaded riscv v0.6.0
  Downloaded nb v1.0.0
  Downloaded regex v1.4.3
  Downloaded vcell v0.1.3
  Downloaded proc-macro2 v0.4.30
  Downloaded thread_local v1.1.3
  Downloaded r0 v1.0.0
  Downloaded num-derive v0.2.5
  Downloaded panic-halt v0.2.0
  Downloaded quote v0.6.13
  Downloaded bare-metal v0.2.5
  Downloaded syn v0.15.44
  Downloaded riscv-rt-macros v0.1.6
  Downloaded st7735-lcd v0.7.2
  Downloaded gd32vf103xx-hal v0.4.0
  Downloaded embedded-graphics v0.6.2
  Downloaded gd32vf103-pac v0.4.0
  Downloaded 24 crates (1.2 MB) in 2.89s
   Compiling memchr v2.3.4
   Compiling semver-parser v0.7.0
   Compiling once_cell v1.5.2
   Compiling regex-syntax v0.6.22
   Compiling lazy_static v1.4.0
   Compiling proc-macro2 v0.4.30
   Compiling unicode-xid v0.1.0
   Compiling syn v0.15.44
   Compiling autocfg v1.0.1
   Compiling nb v1.0.0
   Compiling bit_field v0.10.1
   Compiling num-derive v0.2.5
   Compiling rand_core v0.4.2
   Compiling void v1.0.2
   Compiling vcell v0.1.3
   Compiling byteorder v1.4.2
   Compiling gd32vf103xx-hal v0.4.0
   Compiling longan-nano v0.2.0 (/devel/riscv/longan-nano)
   Compiling r0 v1.0.0
   Compiling panic-halt v0.2.0
error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error[E0463]: can't find crate for `core`
  |
  = note: the `riscv32imac-unknown-none-elf` target may not be installed

error: aborting due to previous error

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
For more information about this error, try `rustc --explain E0463`.
error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: could not compile `void`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed

Googleing for the error, I came across this:
rust-lang/rustup#1905
But they suggest to install nightly, which contradicts the instructions
from the README.

riscv32-unknown-elf/bin/ld:link.x:52: syntax error collect2: error: ld returned 1 exit status

Hi.

I can't link your project:

riscv32-unknown-elf-gcc -L /home/oceanfish81/.rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.0.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.1.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.10.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.11.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.12.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.13.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.14.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.15.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.2.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.3.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.4.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.5.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.6.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.7.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.8.rcgu.o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a.display.2h1wedgs-cgu.9.rcgu.o -o /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/examples/display-08122bae8a40ea1a -Wl,--gc-sections -nodefaultlibs -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps -L /home/oceanfish81/Desktop/longan-nano/target/release/deps -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/build/longan-nano-597dc37d6ccaaffc/out -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/build/gd32vf103xx-hal-13beb56db03766a0/out -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/build/riscv-f1813e715ca50308/out -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/build/riscv-rt-65cd5af53ca48ccd/out -L /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/build/riscv-rt-65cd5af53ca48ccd/out -L /home/oceanfish81/.rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib -Wl,-Bstatic /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libriscv_rt-db8c3a26100b3697.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libr0-7139aa29684afde5.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/liblongan_nano-b532624e73d61543.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libst7735_lcd-021b1e500c59efde.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libnum_traits-97fe7590dd0f192d.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libgd32vf103xx_hal-f01a0fb107bd223f.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libcast-6e78812f04e4ebef.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libembedded_hal-006e7d87375f4cca.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libvoid-df659fdcf5354dfb.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libnb-538fd3e1c64357c9.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libnb-7982f976e6834162.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libgd32vf103_pac-1a843f401fda34cd.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libvcell-6d4569d42959d3cf.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libriscv-952ac5df99f50de9.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libbit_field-46f665c6bbfcca03.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libbare_metal-daefd88082e735a5.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libembedded_graphics-de284b1ac4d300de.rlib /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libbyteorder-566a32ccb4be9389.rlib -Wl,--start-group /home/oceanfish81/Desktop/longan-nano/target/riscv32imac-unknown-none-elf/release/deps/libpanic_halt-4a8c716ea29e0086.rlib /home/oceanfish81/.rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/librustc_std_workspace_core-1bd0d3673780d693.rlib /home/oceanfish81/.rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/libcore-5aec724f1f867fb1.rlib -Wl,--end-group /home/oceanfish81/.rustup/toolchains/nightly-i686-unknown-linux-gnu/lib/rustlib/riscv32imac-unknown-none-elf/lib/libcompiler_builtins-deaf2d068ddf18c0.rlib -Tmemory-c8.x -Tlink.x -Tmemory-c8.x -Tlink.x -Wl,-Bdynamic
/usr/local/lib/gcc/riscv32-unknown-elf/10.2.0/../../../../riscv32-unknown-elf/bin/ld:link.x:52: syntax error
collect2: error: ld returned 1 exit status

memory.x GD32VF103CB vs C8

Sadly, there seem to be Longan Nano boards out there with both the GD32VF103C8 and GD32VF103CB processors. The C8 has 64K/20K, the CB (what I have) has 128K/32K. The memory.x in this package is for the C8, which is conservative and works until you run out of memory. It would be nice to also include the CB version (just change the LENGTH entries; verified that this works) and put a note in the README or something…

I noticed this because the Ferris example compiled for dev is about 67K.

Example does not compile with on current nightly toolchain

When attempting to compile any example on current master using rustc 1.65.0 (897e37553 2022-11-02), I am unable to build and get the following compiler error:

$ cargo build --examples --release --all-features
...
= note: rust-lld: error: /home/alex/dev/embedded/riscv/longan-nano-hal/target/riscv32imac-unknown-none-elf/release/build/riscv-rt-2d5693f40486a9d2/out/link.x:58: expected filename pattern
          >>>     (*(.trap));
          >>>     ^
          

error: could not compile `longan-nano` due to previous error

Seeing that this error has been fixed in riscv-rt v0.10.0 (details here), I bumped the riscv-rt version. That fixed the build for me, and I was able to run examples on my device.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.