Kom igång med RISC-V-baserade microcontrollers
Bidraget med av DigiKeys nordamerikanska redaktörer
2020-01-09
Konstruktörer arbetar under konstant press att komma med nya innovationer. Detta är inte lätt när man samtidigt måste hålla sina immateriella rättigheter hemliga och ändå klara av att minska strömförbrukningen och hålla nere kostnaderna. Detta har gjort att RISC-V instruktionsuppsättningsarkitektur (ISA) för maskinvara med öppen källkod är intressant för alla som konstruerar processorer för mobila tillämpningar. Nu när RISC-V finns som alternativ för microcontrollers behöver konstruktörer av inbäddade system och kundenheter lite hjälp för att komma igång med sin egen RISC-V-design.
En intressant produkt kan då vara utvecklingskortet FE310 LoFive-R1 från GroupGets LLC. Innan vi beskriver LoFive-R1 tittar vi i denna artikel närmar på RISC-V och varför det är något som kan vara intressant för utvecklare. Därefter tar vi alltså en titt på LoFive-R1 och ser hur du kan komma igång med att utveckla tillämpningar – vi går även igenom några bra tips.
Vad är då RISC-V?
RISC-V är en instruktionsuppsättningsarkitektur för maskinvara med öppen källkod som såg dagens ljus första gången som projekt på University of California, Berkeley 2010. Det fanns många anledningar att ta fram RISC-V-arkitekturen, bland annat följande:
- Tillgodose behovet av en instruktionsuppsättningsarkitektur (ISA) med öppen källkod som kunde användas i universitetsprojekt och av studenter
- Man ville hitta ett sätt att dela erfarenheter rörande konstruktion vid utveckling av ISA
- Man ville hitta ett sätt att undvika att behöva betala upphovsrättslig ersättning till etablerade chipföretag och på så sätt sänka kostnaderna
- Man ville skydda konstruktionsdetaljer i en arkitektur (ett företags immateriella rättigheter) av marknadsmässiga skäl
Ur en konstruktörs synvinkel är RISC-V en förenklad arkitektur utformad att vara snabb och strömsnål. Det gör RISC-V-baserade chip lämpliga för kommersiella tillämpningar, inte bara för universitetsvärlden. RISC-V Foundation har faktiskt lyckats intressera cirka 325 medlemmar, inklusive företag som Si-Five, Google, Microchip Technology, NVIDIA och Qualcomm.
Samtidigt som det finns många företag som bidrar till utvecklingen av RISC-V är det bästa sättet för den genomsnittlige utvecklaren som vill komma igång med RISC-V att hitta ett utvecklingskort baserat på en RISC-V-processor.
Utvecklingskortet LoFive FE310
Ett sådant utvecklingskort är LoFive-R1 från GroupGets LLC (figur 1).
Figur 1: Utvecklingskortet LoFive-R1 har en RISC-V-processor och alla stödkretsar som behövs för att göra utvecklingskortet till en processormodul som kan direktlödas på ett bärarkort. (Bildkälla: GroupGets LLC)
För det första har LoFive R1 en RISC-V-processor som kan köras vid upp till 320 MHz. Processorn har ett engångs-PROM-minne (OTP) (8 kB), Mask ROM (8 kB), instruktionscache (16 kB) och SRAM (16 kB). Processorn har också tre oberoende pulsbreddsmodulerade styrenheter, SPI, I2C, UART och även ett flashgränssnitt QSPI.
För det andra kan utvecklingskortet ha stiftlisterna antingen fastlödda eller så kan utvecklingskortet (tack vare att det har tandade kanter) direktlödas på ett bärarkort och användas som processormodul. Detta kan underlätta mycket för utvecklare, då de kan konstruera anpassad maskinvara utan att behöva gå igenom allt arbete med att anskaffa processorn.
För det tredje har utvecklingskortet ett QSPI-flash (on-board) som tillhandahålls via en flashmodul IS25LP128 från Integrated Silicon Solution Inc. (ISSI). IS25LP128 är en flashmodul (128 Mb, 16 MB) som kan användas vid SPI-busshastigheter upp till 133 MHz i fyrfaldigt ingångs/utgångs-läge (figur 2). SPI-flashmodulen kan användas för lagring, för att säkerställa att det finns gott om applikationsutrymme eller för att lagra körtidsdata som programloggar.
Figur 2: Utvecklingskort LoFive-R1 har en ISSI SPI-flashmodul (128 Mb) som används för programlagring. (Bildkälla: ISSI)
För det fjärde kan utvecklingskortet också köras på 5 V som konverteras till 3,3 V med en linjär regulator SPX3819M5 från MaxLinear. Regulatorn levereras i ett SOT23-5-paket som levererar upp till 500 mA. Utvecklingskortet drar inte mycket ström, så det kan stödja extra sensorer och enheter utan behov av extra strömkretsar.
Figur 3: SPX3819 linjär regulator (3,3 V) på utvecklingskortet LoFive-R1 levererar upp till 500 mA. Detta är tillräckligt för både kretsarna på kortet och externa enheter, exempelvis sensorer. (Bildkälla: MaxLinear)
Slutligen finns alla konstruktionsdetaljer för utvecklingskortet (som till exempel kopplingsscheman och materiallista) på GitHub. Denna information underlättar för utvecklare att förstå hur kortet fungerar och kan också användas som konstruktionsguide för anpassade utvecklingsprojekt.
Konfigurera RISC-V-programmeringskedjan och programmera utvecklingskortet
Utvecklare kommer att se att det finns många verktygskedjor som kan användas för RISC-V, beroende på vilket utvecklingskort som har valts. SDK för RISC-V finns för Windows, macOS och Linux. I denna artikel visas hur ett utvecklingskort för Linux installeras.
Börja med att i en terminal checka ut LoFive Freedom-E SDK från Git med hjälp av följande kommando:
git clone --recursive https://github.com/mwelling/freedom-e-sdk.git
Flytta den därefter till biblioteket som skapats av SDK med hjälp av:
cd freedom-e-sdk
Det finns två olika SDK tillgängliga för utvecklingskortet. Den första kallas ”legacy SDK” eftersom den är av en äldre version. Använd den nyaste SDK-versionen. Den har ett färdigt programmeringsverktyg och OpenOCD för felsökning. SDK kan checkas ut med följande kommandon:
git checkout lofive-r1
git submodule sync
git submodule update –init –recursive
Programmering av utvecklingskortet kan utföras på flera olika sätt. För det första finns det standard JTAG-signaler på processorn, vilka är tillgängliga genom LoFive-R1-expansionskontakter. Utvecklare kan använda alla programmeringsverktyg som stöder JTAG, som till exempel SEGGER J-Link. Om programmeringsverktyg inte finns tillgängligt kan utvecklare också använda billiga omvandlare (USB till seriell) som FT2232H-56Q Mini MDL från FTDI (figur 4). FT2232H-56Q Mini MDL är en modul med alla anslutningar och breakout-kort som behövs för anslutning till utvecklingskortet LoFive-R1. SDK använder universalingångar/-utgångar på FT2232H-56Q för att upprätta nödvändiga JTAG-anslutningar till microcontrollern.
Figur 4: FT2232H-56Q MINI MDL är en billig seriell modul som kan direktanslutas till en dator via USB och därefter till UART (on-board) på utvecklingskort LoFive-R1. (Bildkälla: FTDI)
Det finns nio olika anslutningar som måste upprättas mellan utvecklingskort LoFive-R1 och modulen FT2232H-56Q (tabell 1).
|
Tabell 1: Ett enkelt kort som kan användas för att brygga anslutningarna mellan utvecklingskortet LoFive-R1 och FT2232H-56Q-modulen. (Tabellkälla: DigiKey)
Sammanfattning av anslutningar:
- Strömförsörjning och jord
- JTAG-signaler
- UART-signaler
Anslutningarna ska utföras som direktanslutningar eller med kopplingsdäck som till exempel PB-83M från Global Specialties (figur 5). Dessa kopplingsdäck har banankontakter för två spänningskällor och jord, vilket underlättar prototypkonstruktion.

Figur 5: PB-83M har bananuttag för två spänningskällor och jord, vilket underlättar prototypkonstruktion. (Bildkälla: Global Specialties)
Vid första användningen av LoFive-R1 rekommenderar vi att en bootloader installeras på kortet. När bootloadern är installerad kan den användas för att underlätta framtida uppgraderingar. Bootloadern kan genereras från SDK med hjälp av följande kommando:
make PROGRAM=lofive-boot TARGET=lofive-r1-bootloader upload
Därefter kan Hello World-applikationen läsas in till utvecklingskortet med hjälp av följande kommando:
make PROGRAM=sifive-welcome TARGET=lofive-r1 upload
Nu har utvecklaren programmerat sin första RISC-V-applikation – och möjligheterna att gå vidare är oändliga.
Tips vid användning av RISC-V
Att komma igång med RISC-V-processorer skiljer sig lite från vanliga ekosystem för microcontrollers. Här ger vi några användbara tips:
- När du har checkat ut LoFive-R1 SDK rekommenderar vi att du granskar filen README.md i huvudkatalogen. I den finns information om var du hittar SDK-dokumentation, kortsupportpaket och annan användbar information.
- Om det finns en professionell felsökningsprob, som SEGGER J-Link, kan du använd denna för att programmera applikationer till RISC-V-processorn. Sedan 2017 stöder J-Link RISC-V.
- För utvecklare som föredrar att använda en IDE istället för kommandoradsverktyg kan vi rekommendera Freedom Studio för RISC-V-utveckling, vilket är en Eclipse-baserad IDE.
Utvecklare som följer dessa tips kommer att upptäcka att de kan spara en hel del tid och slippa onödiga problem vid första användningen av RISC-V.
Slutsats
RISC-V har en intressant arkitektur som kan vara praktisk för utvecklare som letar efter en maskinvaruarkitektur med öppen källkod. Det finns idag utvecklingskort för RISC-V-processorer, och som vi har sett i denna artikel är det inte mycket svårare att konfigurera verktygskedjor än att driftsätta någon annan microcontroller av standardversion.
Visst är RISC-V intressant, men kom ihåg att det inte har det omfattande ekosystem som många befintliga microcontrollerplattformar har. Det betyder att utvecklare som väljer att använda RISC-V kan upptäcka att de har färre valmöjligheter och resurser till förfogande i sitt arbete. Om man är beredd att göra denna kompromiss beror på slutapplikationen, vad utvecklaren föredrar eller vilka resurser som finns tillgängliga.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.


