From d00bce591458136bbf322669d9f17145c4dd2a36 Mon Sep 17 00:00:00 2001 From: Neucrack Date: Tue, 26 Mar 2019 16:14:19 +0800 Subject: [PATCH] add board Maix Go support --- .gitignore | 4 ++ boards.txt | 107 ++++++++++++++++++++++++++----- platform.txt | 6 +- variants/standard/pins_arduino.h | 7 +- variants/standard/sipeed_go.h | 88 +++++++++++++++++++++++++ 5 files changed, 193 insertions(+), 19 deletions(-) create mode 100644 variants/standard/sipeed_go.h diff --git a/.gitignore b/.gitignore index 259148f..bc22e92 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,7 @@ *.exe *.out *.app + +# vscode +.vscode + diff --git a/boards.txt b/boards.txt index d3bb05f..80cd20f 100644 --- a/boards.txt +++ b/boards.txt @@ -1,31 +1,106 @@ -menu.clksrc=CPU Clock Frequency -menu.toolsloc=Tool Install Location +menu.clksrc = CPU Clock Frequency +menu.burn_tool_firmware = Burn Tool Firmware +menu.burn_baudrate = Burn Baud Rate +menu.toolsloc = Tool Install Location -#Sipeed M1 Dock Board +################################################## +############# Sipeed M1 Dock Board ############### -m1.name=Sipeed M1 Dock Board +m1.name = Sipeed M1 Dock Board + +## Toolchain m1.menu.toolsloc.default=Default m1.menu.toolsloc.manual=Manual m1.menu.toolsloc.default.compiler.path={runtime.tools.riscv64-unknown-elf-gcc.path}/bin/ m1.menu.toolsloc.manual.compiler.path={runtime.tools.riscv64-unknown-elf-gcc.path}/bin/ -#Point to the file for ./variants//pins_arduino.h +## CPU Clock +m1.menu.clksrc.400 = 400MHz CPU Clock Frequency +m1.menu.clksrc.500 = 500MHz CPU Clock Frequency +m1.menu.clksrc.600 = 600MHz CPU Clock Frequency +m1.menu.clksrc.400.build.f_cpu = 400000000L +m1.menu.clksrc.500.build.f_cpu = 500000000L +m1.menu.clksrc.600.build.f_cpu = 600000000L + +## Burn baud rate +m1.menu.burn_baudrate.2000000 = 2 Mbps +m1.menu.burn_baudrate.1500000 = 1.5 Mbps +m1.menu.burn_baudrate.1000000 = 1 Mbps +m1.menu.burn_baudrate.2000000.build.burn_baudrate = 2000000 +m1.menu.burn_baudrate.1500000.build.burn_baudrate = 1500000 +m1.menu.burn_baudrate.1000000.build.burn_baudrate = 1000000 + +## Burn tool firmware +m1.menu.burn_tool_firmware.dan = Default +m1.menu.burn_tool_firmware.dan.build.burn_tool_firmware = dan + +## Point to the file for ./variants//pins_arduino.h m1.build.variant=standard -m1.menu.clksrc=400MHz FPGA Clock -m1.menu.clksrc.m1.build.f_cpu=400000000L - -m1.build.mcmodel=medany - -#"The 'core' file directory for this board, in ./cores +## "The 'core' file directory for this board, in ./cores m1.build.core=arduino -# This sets a define for use in the compiled code. -m1.build.board=SIPEED_M1_BOARD + +## This sets a define for use in the compiled code. +m1.build.board = BOARD_SIPEED_MAIX_ONE_DOCK m1.build.sdata.size=512 -#This selects the tool from "programmers.txt" + +## This selects the tool from "programmers.txt" m1.program.tool=kflash m1.upload.tool=kflash -# Limit is the 16MB Flash. Assume half is used for something else. + +## Limit is the 16MB Flash. Assume half is used for something else. m1.upload.maximum_size=8388608 m1.build.ldscript={runtime.platform.path}/cores/arduino/kendryte-standalone-sdk/lds/kendryte.ld -m1.build.openocdcfg={runtime.tools.openocd.path}/ocd.txt \ No newline at end of file +m1.build.openocdcfg={runtime.tools.openocd.path}/ocd.txt + + +#################################################### +############### Sipeed Maix Go Board ############### + +go.name = Sipeed Maix Go Board + +## Toolchain +go.menu.toolsloc.default=Default +go.menu.toolsloc.manual=Manual +go.menu.toolsloc.default.compiler.path={runtime.tools.riscv64-unknown-elf-gcc.path}/bin/ +go.menu.toolsloc.manual.compiler.path={runtime.tools.riscv64-unknown-elf-gcc.path}/bin/ + +## CPU Clock +go.menu.clksrc.400 = 400MHz CPU Clock Frequency +go.menu.clksrc.500 = 500MHz CPU Clock Frequency +go.menu.clksrc.600 = 600MHz CPU Clock Frequency +go.menu.clksrc.400.build.f_cpu = 400000000L +go.menu.clksrc.500.build.f_cpu = 500000000L +go.menu.clksrc.600.build.f_cpu = 600000000L + +## Burn baud rate +go.menu.burn_baudrate.2000000 = 2 Mbps +go.menu.burn_baudrate.1500000 = 1.5 Mbps +go.menu.burn_baudrate.1000000 = 1 Mbps +go.menu.burn_baudrate.2000000.build.burn_baudrate = 2000000 +go.menu.burn_baudrate.1500000.build.burn_baudrate = 1500000 +go.menu.burn_baudrate.1000000.build.burn_baudrate = 1000000 + +## Burn tool firmware +go.menu.burn_tool_firmware.goE = open-ec +go.menu.burn_tool_firmware.goD = CMSIS-DAP +go.menu.burn_tool_firmware.goE.build.burn_tool_firmware = goE +go.menu.burn_tool_firmware.goD.build.burn_tool_firmware = goD + +## Core settings +go.build.variant= standard +go.build.core = arduino + +## This sets a define for use in the compiled code. +go.build.board = BOARD_SIPEED_MAIX_GO + +## This selects the tool from "programmers.txt" +go.program.tool = kflash +go.upload.tool = kflash + +## Limit is the 16MB Flash. Assume half is used for something else. +go.upload.maximum_size=8388608 +go.build.ldscript={runtime.platform.path}/cores/arduino/kendryte-standalone-sdk/lds/kendryte.ld +go.build.openocdcfg={runtime.tools.openocd.path}/ocd.txt + + diff --git a/platform.txt b/platform.txt index 8951bc9..3cb065b 100644 --- a/platform.txt +++ b/platform.txt @@ -100,5 +100,7 @@ tools.manual_openocd.program.pattern="{path}{cmd}" -d0 -f {program.config} -c "f tools.kflash.path={runtime.tools.kflash.path}/ tools.kflash.cmd=python3 {runtime.tools.kflash.path}/kflash.py tools.kflash.cmd.windows={runtime.tools.kflash.path}/k-flash -tools.kflash.program.pattern={cmd} -p {serial.port} {build.path}/{build.project_name}.bin -tools.kflash.program.pattern.windows="{cmd}" -d {serial.port} -b 2000000 {build.path}/{build.project_name}.bin \ No newline at end of file +tools.kflash.program.pattern={cmd} -n -p {serial.port} -b {build.burn_baudrate} -B {build.burn_tool_firmware} {build.path}/{build.project_name}.bin +tools.kflash.program.pattern.windows="{cmd}" -d {serial.port} -b {build.burn_baudrate} {build.path}/{build.project_name}.bin + + diff --git a/variants/standard/pins_arduino.h b/variants/standard/pins_arduino.h index d6056d6..3106480 100644 --- a/variants/standard/pins_arduino.h +++ b/variants/standard/pins_arduino.h @@ -1,6 +1,11 @@ // API compatibility -#ifdef SIPEED_M1_BOARD +#ifdef BOARD_SIPEED_MAIX_ONE_DOCK #include "sipeedm1.h" +#else + +#ifdef BOARD_SIPEED_MAIX_GO +#include "sipeed_go.h" +#endif //BOARD_SIPEED_MAIX_GO #endif diff --git a/variants/standard/sipeed_go.h b/variants/standard/sipeed_go.h new file mode 100644 index 0000000..682ec42 --- /dev/null +++ b/variants/standard/sipeed_go.h @@ -0,0 +1,88 @@ +#ifndef _VARIANT_BOARD_SIPEED_MAIX_GO +#define _VARIANT_BOARD_SIPEED_MAIX_GO + +#include + +#define RISCV +#include "platform.h" + +#include "Arduino.h" +#include "pwm.h" + +#ifdef __cplusplus +#include "UARTClass.h" +extern class UARTHSClass Serial; +extern class UARTClass Serial1; +extern class UARTClass Serial2; +extern class UARTClass Serial3; +#endif + +/* BOARD PIN DEFINE */ +/* LEDs */ +#define PIN_LED_GREEN 13 +#define PIN_LED_BLUE 12 +#define PIN_LED_RED 14 +#define PIN_LED 13 +#define LED_BUILTIN 13 +#define LED_GREEN 13 +#define LED_BLUE 12 +#define LED_RED 14 +/* KEY */ +#define KEY0 16 +/* MIC ARRAY */ +#define MIC_BCK 18 +#define MIC_WS 19 +#define MIC_DAT3 20 +#define MIC_DAT2 21 +#define MIC_DAT1 22 +#define MIC_DAT0 23 +#define MIC_LED_DAT 24 +/* SPI0 */ +#define SPI0_CS1 25 +#define SPI0_MISO 26 +#define SPI0_SCLK 27 +#define SPI0_MOSI 28 +#define SPI0_CS0 29 +/* I2S */ +#define MIC0_WS 30 +#define MIC0_DATA 31 +#define MIC0_BCK 32 +#define I2S_WS 33 +#define I2S_DA 34 +#define I2S_BCK 35 +/* LCD */ +#define LCD_CS 36 +#define LCD_RST 37 +#define LCD_DC 38 +#define LCD_WR 39 + +#define RX0 4 +#define TX0 5 + +#define RX1 6 +#define TX1 7 + +#define SDA 10 +#define SCL 9 + +static const uint8_t SS = SPI0_CS0 ; +static const uint8_t MOSI = SPI0_MOSI; +static const uint8_t MISO = SPI0_MISO; +static const uint8_t SCK = SPI0_SCLK; + +typedef struct _pwm_fpio_set_t{ + pwm_channel_number_t channel; + pwm_device_number_t device; + uint8_t inuse; +}pwm_fpio_set_t; + + + +#define VARIANT_NUM_GPIOHS (32) +#define VARIANT_NUM_GPIO ( 8) +#define VARIANT_NUM_PWM (12) +#define VARIANT_NUM_I2C ( 3) +#define VARIANT_NUM_SPI ( 3) +#define VARIANT_NUM_UART ( 3) + +#endif