Git Product home page Git Product logo

arduinocore-bouffalo's Introduction

Arduino Core for Bouffalo's RISC-V MCUs

Discord | Matrix | Telegram

This is community made Arduino Core for Bouffalo Labs RISC-V MCUs. The target is to make this core compatible with AVR and ESP32/ESP8266 Arduino Core for easy migrating of existing projects.

Supported MCUs

  • BL602
  • BL604

How To Install

In Arduino IDE, go to File > Preferences, and add to Additional Boards Manager URLs following: https://nutcracker.pine64.org/arduino/package_bouffalo_index.json. Then open Tools > Board > Boards Manager, search for Arduino for Bouffalo Labs RISC-V MCUs and install it. (Also, then don't forget to pick your BLXXX based board)

Disclaimer

Some parts of this core are based or inspired by work of Arduino, Espressif and Bouffalo Lab teams and their communities.

FAQ

Is this part of Nutcracker challenge?

Partly. This effort is for me (gamiee) a way how to explore Bouffalo SDK and the MCU itself. So it will help a lot later when reversing the blobs.

Can I use this for testing BL IOT SDK?

At the moment, yes. Most of the components are precompiled to static libraries and all headers are available. (Although, the WiFi component isn't compiled (yet))

Supported operating systems

Windows and Linux are tested and working fine. MacOS should work fine too, but it's not tested.

Supported peripherals

You can find supported peripherals in this project table.

Supported libraries

You can find supported libraries in this project table.

Other to-do's

You can find them in this project table.

arduinocore-bouffalo's People

Contributors

gamelaster avatar maxgerhardt avatar pfeerick 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduinocore-bouffalo's Issues

upload error

~/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py /dev/ttyUSB0 /tmp/arduino_build_973495/teste1.ino.bin
java.io.IOException: Cannot run program "/home/alberio/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py": error=13, Permission denied

solved
in ~/.arduino15/packages/bouffalo/hardware/riscv/0.0.1/platform.txt
tools.flasher.upload.pattern="{runtime.tools.python3.path}/python3" -I "{path}/{cmd}" "{serial.port}" "{build.path}/{build.project_name}.bin"

added "{runtime.tools.python3.path}/python3" -I

Problems with .arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py

In #4 I described the problems I had with uploading programs to the PineCone. I needed to add #!/usr/bin/python3 and convert the file encoding to be able to execute the python script bl602-flasher.py. But now I get the following error message when trying to upload code form the Arduino IDE:

Traceback (most recent call last):
  File "/home/user/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py", line 234, in <module>
    main()
  File "/home/user/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py", line 216, in main
    send_sync(ser)
  File "/home/user/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py", line 113, in send_sync
    expect_ok(ser)
  File "/home/user/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py", line 56, in expect_ok
    raise ValueError(binascii.hexlify(err))
ValueError: b'ffff'
Failed uploading: uploading error: exit status 1

Does anyone know how to modify the script to fix this error?

riscv64-unknown-elf-g++: permission denied

Compiling, linux debian, Arduino IDE 2.1.1
...
..
~/.arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/bin/riscv64-unknown-elf-g++: permission denied

solved
chmod +x ~/.arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/bin/*

Permission issue on Mac in Arduino IDE ver 2.0.4

Trying to upload the Blink.ino to the Pine64 BL602 EVB ver1.2 on my M1 Mac I get the following messages:

fork/exec /Users/stefan/Library/Arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/bin/riscv64-unknown-elf-g++: permission denied

Compilation error: fork/exec /Users/stefan/Library/Arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/bin/riscv64-unknown-elf-g++: permission denied

What to do??

Greetings Stefan

Fatal error: invalid -march= option: `rv32imfc'

When building in the arduino IDE on linux after manually fixing up #1 on my local machine.

Assembler messages:
Fatal error: invalid -march= option: `rv32imfc'
Compilation error: Error: 2 UNKNOWN: exit status 1

Fatal error: invalid -march= option: `rv32imfc'

Compiling, linux debian, Arduino IDE 2.1.1
....
Assembler messages:
Fatal error: invalid -march= option: `rv32imfc'
exit status 1
Error compiling for board PINE64 PineCone.

solved
chmod +x ~/.arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/riscv64-unknown-elf/bin/*

Can't load image from Arduino-IDE

ENV: ubuntu 20.04, python3.8

  1. compile: no execution permission, chmod +x
  2. update: get_contrib_path() return wrong path. (bl602-flasher.py)
  3. change serial with pyserial(for python3.8) (pip3 remove serial, pip3 install pyserial)
  4. force using python3, such as #!/usr/bin/python3,

error trying to exec 'cc1plus'

Compiling, linux debian, Arduino IDE 2.1.1
...
Detecting libraries used...
riscv64-unknown-elf-g++: error trying to exec 'cc1plus': execvp: No such file or directory

solved
chmod +x ~/.arduino15/packages/bouffalo/tools/riscv64-unknown-elf/0.0.1/libexec/gcc/riscv64-unknown-elf/8.3.0/cc1plus

Can't upload code

I have a problem uploading my code. I already changed the permissions of the executable files, but now I'm getting the following errors:

/home/username/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py: 1: from: not found
/home/username/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py: 2: from: not found
import-im6.q16: unable to grab mouse `': File or directory not found @ error/xwindow.c/XSelectWindow/9184.
import-im6.q16: unable to grab mouse `': File or directory not found @ error/xwindow.c/XSelectWindow/9184.
import-im6.q16: unable to grab mouse `': File or directory not found @ error/xwindow.c/XSelectWindow/9184.
import-im6.q16: unable to grab mouse `': File or directory not found @ error/xwindow.c/XSelectWindow/9184.
: not foundn/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py: 9: 
import-im6.q16: unable to grab mouse `': File or directory not found @ error/xwindow.c/XSelectWindow/9184.

/home/username/.arduino15/packages/bouffalo/tools/flasher/0.0.1/bl602-flasher.py: 10: Syntax error: "(" unexpected

Compiling does work but when I try to upload the code the cursor changes to a crosshair, probably I have to select a window or something. Is there a way to fix this?

Wrong permissions for the downloaded toolchain

The binaries of the toolchain for Linux (riscv64-unknown-elf-linux-0.0.1.zip) have bad permissions and require some modifications from the user. They don't have the executable bit.

These binaries are located in:

  • riscv64-unknown-elf/0.0.1/bin/
  • riscv64-unknown-elf/0.0.1/riscv64-unknown-elf/bin/
  • riscv64-unknown-elf/0.0.1/libexec/gcc/riscv64-unknown-elf/8.3.0/

Thanks to @9names for pointing me these paths.

As the purpose is, I think, to simplify things, it might be better to change the permissions in the downloaded archive.

I don't know if MacOS is also impacted, and I suppose that Windows isn't.

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.