1# Synopsys ARC Boards support with embARC_BSP 2 3## embARC_BSP 4 5The embARC Board support Package (BSP) is a software distributions aimed at facilitating 6the development and evaluation of embedded systems based on ARCv2 processors, which is 7designed to provide a minimal board support package for ARC users by defining 8consistent and simple software interfaces to the processors and onboard devices. 9 10The embARC BSP is a new generation embARC software development package. 11It is designed to be the inter-layer between hardware and operating system. 12BSP could hide the difference of hardware/boards, provide a unified interface to upper-layer. 13In the scenarios that no OS is required, embARC BSP can also standalone and work in baremetal. 14 15embARC_BSP features: 16 17* Support MetaWare & GNU toolchains 18* Support all development boards and tcf 19* Support various build systems and compiling environments, 20 such as ARC MetaWare & GNU IDE, makefile 21* Designware and Subsystem drivers, including UART and GPIO, I2C, SPI, etc. 22* No middleware, no OS 23* Easy to port to different platform / OS 24* One example (UART, GPIO, timer) 25* Code coverage reach 100% in test. 26* MISRA-C compliance 27* C & C++ support, assembly support 28 29## Supported Boards 30 31* [ARC Software Development Platform](https://www.synopsys.com/dw/ipdir.php?ds=arc-software-development-platform) 32* [ARC EM Starter Kit](https://www.synopsys.com/dw/ipdir.php?ds=arc_em_starter_kit) 33* [ARC EM Software Development Platform](https://www.synopsys.com/dw/ipdir.php?ds=arc-em-software-development-platform) 34* [ARC HS Development Kit](https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit) 35* [ARC IoT Development Kit](https://www.synopsys.com/dw/ipdir.php?ds=arc_iot_development_kit) 36 37 38## Software Requirement 39 40### embarc_bsp 41 42There are two ways to get embarc_bsp: 43 44#### use RT-Thread ENV tool: 45 46embARC_BSP has been configured as package module, you can just run the command `pkgs --update` in <RTT_ROOT>/bsp/synopsys/boards 47folder using ENV tool. 48 49#### without RT-Thread ENV tool: 50 51We can get it from github: [embarc_bsp](https://github.com/foss-for-synopsys-dwc-arc-processors) 52 53The default path for embarc_bsp is <RTT_ROOT>/bsp/synopsys/boards/packages/embARC_bsp-upstream, 54when you use other path, please set the environment variable `EMBARC_BSP_ROOT`. 55 56### Toolchain 57 58Now both GNU and MetaWare Toolchain are supported, set the System environment variable RTT_CC select the toolchain. 59 60GNU: 61 62 set RTT_CC=gcc 63 64MetaWare: 65 66 set RTT_CC=mw 67 68#### GNU 69 70The ARC GNU Toolchain offers all of the benefits of open source tools, including complete source code and a large install base. The ARC GNU IDE Installer consists of Eclipse IDE with [ARC GNU plugin for Eclipse](https://github.com/foss-for-synopsys-dwc-arc-processors/arc_gnu_eclipse/releases), [ARC GNU prebuilt toolchain](https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases) and [OpenOCD for ARC](https://github.com/foss-for-synopsys-dwc-arc-processors/openocd>) 71 72Here, the ARC GNU toolchain is installed to `c:\arc_gnu`. If not, please change the path configuration in rtconfig.py. 73 74When you use GNU Toolchain, you need to install [Zadig](http://zadig.akeo.ie) to replace the default FTDI driver with WinUSB driver. See [How to Use OpenOCD on Windows](https://github.com/foss-for-synopsys-dwc-arc-processors/arc_gnu_eclipse/wiki/How-to-Use-OpenOCD-on-Windows>) for more information. 75 76#### MetaWare 77The [DesignWare ARC MetaWare Development Toolkit](https://www.synopsys.com/dw/ipdir.php?ds=sw_metaware) builds on a long legacy of industry-leading compiler and debugger products for embedded applications. It is a complete solution that contains all the components needed to support the development, debugging, and tuning of embedded applications for the DesignWare® ARC® processors. 78 79Here, the ARC MetaWare toolchain is installed to `C:\ARC\MetaWare`. If not, please change the path configuration in rtconfig.py. 80 81 82 83 84 85## Build & Debug 86 87### Build embarc_lib 88 89please run the following cmds to build embarc_lib 90 91 cd <rt-thread-root>/bsp/synopsys/boards 92 scons --embarc_build 93 94### Build 95 96please run the following cmds to build 97 98 cd <rt-thread-root>/bsp/synopsys/boards 99 scons 100 101### Debug 102 103After compile, please use the following cmds to debug 104 105 scons --gdb #use gdb debugger 106 scons --mdb #use mdb debugger 107 108 109### How to choose different boards 110 111There are some parameters we can use in scons, for example: 112 113 scons --BOARD=emsk --BD_VER=23 --CUR_CORE=arcem9d --TOOLCHAIN=mw --OLEVEL=O2 114 115 * BOARD: choose the board, we can set: `emsk, iotdk, emsdp, hsdk, axs`. 116 * BD_VER: choose the board version, some boards have different versions, for example, 117 we can set: `10, 22, 23` for emsk board. 118 * CUR_CORE: choose the arc cores, some boards have different cores, for example, 119 we can set: `arcem7d, arcem9d, arcem11d` for emsk board. 120 * TOOLCHAIN: choose the toolchain to build embarc_lib, we can set: `mw, gnu`. 121 * OLEVEL: choose the build optimize level, we can set: `O0, O2, Os`. 122 123For more information, you can run the command `scons -h`. 124 125 126## Maintainer 127- [vonhust](https://github.com/vonhust) 128- [IRISZZW](https://github.com/IRISZZW) 129