Version: 2024/03/26
Table of Contents:
This guide is designed to assist you in the process of bringing up the Caravel board with Google MPW-6 (Marmot1) M.2 card, ensuring that it operates as expected and is ready for further development and testing.
The bring-up process is a critical phase in the development lifecycle, serving as the initial validation of the hardware components and functionality. It involves powering on the hardware, verifying basic operations, and identifying any potential issues or abnormalities that may need to be addressed.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openocd fakeroot verilator python3 meson gtkterm gawk texinfo git python3-pip bison device-tree-compiler autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev build-essential flex gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build
$ cd ~
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
$ pushd riscv-gnu-toolchain
$ ./configure --prefix=$HOME/RISCV --enable-multilib
$ make newlib linux -j8
$ popd
Add to PATH
$ export PATH=$PATH:$HOME/RISCV/bin
$ echo 'export PATH=$PATH:$HOME/RISCV/bin' >> ~/.bashrc
$ pip3 install pyftdi
The hardware setup for the development board is straightforward and ensures ease of testing for our project. Follow the steps below to set up the development board for testing:
Locate the breakout board with the M.2 edge connector, which is designed to accommodate our project. If necessary, remove the screw securing the existing breakout board module to the development board.
Insert the breakout board into the socket on the development board, aligning the M.2 edge connector with the corresponding socket on the breakout board.
Insert the breakout board at a 45-degree angle into the ZIF (Zero Insertion Force) connector on the development board.
Press down gently on the breakout board to ensure it is properly seated in the ZIF connector. Once properly aligned, secure the breakout board in place by tightening the screw to hold it securely in the ZIF connector.
Locate connector J1 on the development board, designated for connecting to a host computer or workstation.
Connect one end of a micro-B USB cable to connector J1 on the development board.
Connect the other end of the micro-B USB cable to a USB port on the computer.
With the USB cable connected from the development board's connector J1 to the host computer, power is supplied to the board. The USB connection serves as the power source for the board, providing the necessary voltage for its operation.
Our hardware setup is now complete and ready for testing.
Connect the USB cable from the computer to the microUSB port J1 on the board. Ensure that the USB cable is securely plugged in and that there are no loose connections.
As the USB cable is plugged in, carefully observe the behavior of the system. Ensure that the LED Power D4 indicator is illuminated. This indicator signifies that power is successfully supplied to the board through the USB connection.
If the LED Power D4 does not light up as expected, it may indicate a power supply issue or a problem with the USB connection. In such cases, verify the integrity of the USB cable and ensure that the power source is providing sufficient power to the board. Additionally, check for any loose connections or damaged components that may be causing the issue.
$ cd ~
$ git clone https://github.com/efabless/caravel_board
The prebuilt firmware can be found in ~/caravel_board/firmware/chipignite/blink/blink.hex
after cloning the repository.
To build/rebuild the firmware from source code:
~/caravel_board/firmware/chipignite/blink/Makefile
as following:-TOOLCHAIN_PATH=/usr/local/bin/
+TOOLCHAIN_PATH=~/RISCV/bin/
-ARCH=rv32i
-#ARCH=rv32i_zicsr
+#ARCH=rv32i
+ARCH=rv32i_zicsr
cd ~/caravel_board/firmware/chipignite/blink
make clean hex
Run below commands to flash the firmware
cd ~/caravel_board/firmware/chipignite/blink
make flash
After ensuring that the development board is powered on and properly connected to the host device, we can proceed with the initial functional testing to verify basic operations and functionalities. Below are the steps for conducting the initial functional testing:
Verify that LED D3 is blinking at a regular interval, indicating proper functionality.
Test the GPIO pins on the development board to confirm their functionality.
Use an oscilloscope to check the GPIO pins:
The completion of the initial functional testing signifies the successful verification of the Caravel SoC functionality. Through meticulous observation of LED indicator D3 blinking as expected and thorough testing of GPIO pins using an oscilloscope, we have validated the proper operation of the Caravel SoC.
This testing phase serves as a crucial milestone in the development process, affirming the functionality and integrity of the Caravel SoC module. The absence of any significant issues or abnormalities during testing instills confidence in the reliability of the hardware platform.
Looking ahead, the focus will shift towards the next phase of development, which entails the bring-up and validation of the Rocket SoC. With the Caravel SoC functioning as expected, we are poised to proceed with confidence into the next stage of testing and integration.
Copyright © Japan Embedded Systems Technology Association All Rights Reserved.