Bronzebeard: A minimal ecosystem for bare-metal RISC-V development

Hey folks,

I wanted to share a small RISC-V assembler project that I’ve been working on. I’ve found it useful for diving deep into how hobbyist RISC-V chips (such as the Longan Nano and Wio Lite) work at the lowest level. I figure that if it’s useful to me then it may also be useful to others.

Bronzebeard is a collection of tools for writing RISC-V assembly and working with hobbyist development devices. It is designed for programs that will run on bare metal with no reliance on operating systems, frameworks, SDKs, or pre-existing software of any kind. The assembler currently supports RV32IM.

Much of modern software has accrued vast amounts of bulk and complexity throughout the years. Can useful software be developed without relying on any of it? That’s the question that this project seeks to answer. I believe that the rise of RISC-V provides a great opportunity to explore different methods of program development. Installing a full operating system doesn’t have to be a prerequisite to building something useful.

Bronzebeard and its tools are implemented purely in Python. A simple, standalone assembler is the centerpiece. It has been written in order to be free from large, complex toolchains. This keeps the project portable, minimal, and easy to understand. At the moment, Bronzebeard only targets the Longan Nano and the Wio Lite. However, there are plans to broaden support to also include HiFive1 Rev B.

the bb.out cannot be uploded to longan nano. On typig command bronzebeard-dfu 28e9:0189 bb.out the terminal outputs the following messages. i am using windows 10.
code assembles OK with bb.out. Is there an option to convert bb.out to hex file so that i can use the platformio dfu tool to upload.

Hey Sajeev,

Thanks for giving my assembler a try! Given that you are using Windows, have you followed the setup instructions for getting DFU working on Windows? Dealing with USB devices on Windows can be a bit of a pain.

Secondly, when you mention hex output, are you referring to the Intel HEX format? The assembler doesn’t currently support that as an output option but it could be something I add in the future.

Andrew D.

Dear Sir,
Thank you for the reply.

  1. I tried every thing mentioned in the site to set up DFU in windows but failed but it throws langid error or device not found error. In dfu mode the Zadig lists the longan under its device id but bronzebeard doesnt uplload the bb.out.
    2)Yes sir. I was referring to Intel HEX format. If there was IntelHex output ,the code could be uploaded by gigadevice DFU tool which can be downloaded from their site.
    3)The bronzebeard is a very good light weight tool ,would have been better if windows allowed DFU upload or there was an option to output IntelHex and .BIN formats. The dfu works fine on Ubuntu but I am too ignorant to maintain a linux VM machine(just a hobbyist). A debugging option would be a jewel in the crown.
    I will be watching your github page on a weekly basis to see that these updates are available.I hope that you get time to add these goodies to the current program.
    Thanks nad regards