1.. zephyr:board:: hsdk 2 3Overview 4******** 5 6The DesignWare(R) ARC(R) HS Development Kit is a ready-to-use platform for 7rapid software development on the ARC HS3x family of processors. It supports 8single-core and multi-core ARC HS34, HS36 and HS38 processors and offers a wide 9range of interfaces including Ethernet, WiFi, Bluetooth, USB, SDIO, I2C, SPI, 10UART, I2S, ADC, PWM and GPIO. A Vivante GPU is also contained in the ARC 11Development System SoC. This allows developers to build and debug complex 12software on a comprehensive hardware platform 13 14For details about the board, see: `ARC HS Development Kit 15(HSDK) <https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__ 16 17Hardware 18******** 19 20The ARC HSDK has 24 general GPIOs, which divided into 8 groups named from GPIO_SEL_0 to GPIO_SEL_7. 21Each sel can configured for different functions, such as: GPIO, UART, SPI, I2C and PWM. We can program 22CREG_GPIO_MUX register to do configuration for each sel. Tables below show the bit definition for 23CREG_GPIO_MUX register and the details configuration for each pin. 24 25+--------+-------------+---------+--------------+---------------------------------+ 26| Bit | Name | Access | Reset value | Description | 27+--------+-------------+---------+--------------+---------------------------------+ 28| 2:0 | GPIO_SEL_0 | RW | 0x0* | GPIO mux select for gpio[3:0] | 29+--------+-------------+---------+--------------+---------------------------------+ 30| 5:3 | GPIO_SEL_1 | RW | 0x0* | GPIO mux select for gpio[7:4] | 31+--------+-------------+---------+--------------+---------------------------------+ 32| 8:6 | GPIO_SEL_2 | RW | 0x0* | GPIO mux select for gpio[11:8] | 33+--------+-------------+---------+--------------+---------------------------------+ 34| 11:9 | GPIO_SEL_3 | RW | 0x0* | GPIO mux select for gpio[15:12] | 35+--------+-------------+---------+--------------+---------------------------------+ 36| 14:12 | GPIO_SEL_4 | RW | 0x0* | GPIO mux select for gpio[17:16] | 37+--------+-------------+---------+--------------+---------------------------------+ 38| 17:15 | GPIO_SEL_5 | RW | 0x0* | GPIO mux select for gpio[19:18] | 39+--------+-------------+---------+--------------+---------------------------------+ 40| 20:18 | GPIO_SEL_6 | RW | 0x0* | GPIO mux select for gpio[21:20] | 41+--------+-------------+---------+--------------+---------------------------------+ 42| 23:21 | GPIO_SEL_7 | RW | 0x0* | GPIO mux select for gpio[23:22] | 43+--------+-------------+---------+--------------+---------------------------------+ 44 45+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 46| SELS | GPIO PINS | FUN0 | FUN1 | FUN2 | FUN3 | FUN4 | FUN5 | FUN6 | FUN7 | 47+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 48| SEL0 | 0 | gpio[0] | uart0_cts | spi1_cs[0] | gpio[0] | gpio[0] | pwm_ch[6] | pwm_ch[6] | pwm_ch[1] | 49| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 50| | 1 | gpio[1] | uart0_txd | spi1_mosi | gpio[1] | pwm_ch[0] | gpio[1] | pwm_ch[0] | pwm_ch[0] | 51| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 52| | 2 | gpio[2] | uart0_rxd | spi1 _miso | i2c1_scl | gpio[2] | gpio[2] | gpio[2] | gpio[2] | 53| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 54| | 3 | gpio[3] | uart0_rts | spi1_clk | i2c1_sda | gpio[3] | gpio[3] | gpio[3] | gpio[3] | 55+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 56| SEL1 | 4 | gpio[4] | uart1_cts | spi2_cs[0] | gpio[4] | gpio[4] | pwm_ch[4] | pwm_ch[4] | pwm_ch[3] | 57| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 58| | 5 | gpio[5] | uart1_txd | spi2_mosi | gpio[5] | pwm_ch[2] | gpio[5] | pwm_ch[2] | pwm_ch[2] | 59| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 60| | 6 | gpio[6] | uart1_rxd | spi2_miso | i2c2_scl | gpio[6] | gpio[6] | gpio[6] | gpio[6] | 61| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 62| | 7 | gpio[7] | uart1_rts | spi2_clk | i2c2_sda | gpio[7] | gpio[7] | gpio[7] | gpio[7] | 63+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 64| SEL2 | 8 | gpio[8] | uart2_cts | spi1_cs[1] | gpio[8] | gpio[8] | pwm_ch[2] | pwm_ch[2] | pwm_ch[5] | 65| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 66| | 9 | gpio[9] | uart2_txd | spi1_mosi | gpio[9] | pwm_ch[4] | gpio[9] | pwm_ch[4] | pwm_ch[4] | 67| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 68| | 10 | gpio[10] | uart2_rxd | spi1_miso | i2c1_scl | gpio[10] | gpio[10] | gpio[10] | gpio[10] | 69| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 70| | 11 | gpio[11] | uart2_rts | spi1_clk | i2c1_sda | gpio[11] | gpio[11] | gpio[11] | gpio[11] | 71+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 72| SEL3 | 12 | gpio[12] | uart0_cts | spi2_cs[1] | gpio[12] | gpio[12] | pwm_ch[0] | pwm_ch[0] | pwm_ch[7] | 73| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 74| | 13 | gpio[13] | uart0_txd | spi2_mosi | gpio[13] | pwm_ch[6] | gpio[13] | pwm_ch[6] | pwm_ch[6] | 75| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 76| | 14 | gpio[14] | uart0_rxd | spi2_miso | i2c2_scl | gpio[14] | gpio[14] | gpio[14] | gpio[14] | 77| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 78| | 15 | gpio[15] | uart0_rts | spi2_clk | i2c2_sda | gpio[15] | gpio[15] | gpio[15] | gpio[15] | 79+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 80| SEL4 | 16 | gpio[16] | uart1_txd | spi1_cs[2] | i2c1_scl | gpio[16] | pwm_fault_0 | gpio[16] | pwm_fault_0 | 81| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 82| | 17 | gpio[17] | uart1_rxd | spi1_mosi | i2c1_sda | pwm_ch[0] | pwm_ch[0] | pwm_ch[5] | pwm_ch[5] | 83+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 84| SEL5 | 18 | gpio[18] | uart2_txd | spi1_miso | i2c2_scl | gpio[18] | gpio[18] | gpio[18] | gpio[18] | 85| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 86| | 19 | gpio[19] | uart2_rxd | spi1_clk | i2c2_sda | gpio[19] | gpio[19] | gpio[19] | gpio[19] | 87+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 88| SEL6 | 20 | gpio[20] | uart0_txd | spi2_cs[2] | i2c1_scl | gpio[20] | pwm_fault_1 | gpio[20] | pwm_fault_1 | 89| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 90| | 21 | gpio[21] | uart0_rxd | spi2_mosi | i2c1_sda | pwm_ch[6] | pwm_ch[6] | pwm_ch[3] | pwm_ch[3] | 91+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 92| SEL7 | 22 | gpio[22] | uart2_txd | spi2_miso | i2c2_scl | gpio[22] | gpio[22] | gpio[22] | gpio[22] | 93| +-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 94| | 23 | gpio[23] | uart2_rxd | spi2_clk | i2c2_sda | gpio[23] | gpio[23] | gpio[23] | gpio[23] | 95+------+-----------+----------+-----------+------------+----------+-----------+-------------+-----------+-------------+ 96 97Digilent Pmod 98============= 99 100The ARC HSDK features two 12-pin Pmod connectors Pmod_A and Pmod_B and one 6-pin Pmod connector Pmod_C. 101The functionality of the Pmod connectors is programmable and includes GPIO, UART, SPI, I2C and PWM. 102The location of the pins on the Pmod connectors is shown in Figure below. Detailed pin descriptions 103depending on the pin multiplexer settings are provided in the subsequent sections. 104 105.. image:: pinout_diagram_of_the_pmod.jpg 106 :align: center 107 :alt: Pinout Diagram of the Pmod 108 109Pmod_A Connector 110---------------- 111 112Table below lists the pin assignment of valid protocols that can be multiplexed on the Pmod_A 113connector. The GPIO column is the default assignment after Reset. 114 115+------+-----------+------------+-------------+-----------+------------+-----------+ 116| Pin | GPIO | UART | SPI | I2C | PWM_1 | PWM_2 | 117+------+-----------+------------+-------------+-----------+------------+-----------+ 118| A1 | gpio[8] | uart2_cts | spi1_cs[1] | gpio[8] | gpio[8] | pwm_ch[2] | 119+------+-----------+------------+-------------+-----------+------------+-----------+ 120| A2 | gpio[9] | uart2_txd | spi1_mosi | gpio[9] | pwm_ch[4] | gpio[9] | 121+------+-----------+------------+-------------+-----------+------------+-----------+ 122| A3 | gpio[10] | uart2_rxd | spi1_miso | i2c1_scl | gpio[10] | gpio[10] | 123+------+-----------+------------+-------------+-----------+------------+-----------+ 124| A4 | gpio[11] | uart2_rts | spi1_clk | i2c1_sda | gpio[11] | gpio[11] | 125+------+-----------+------------+-------------+-----------+------------+-----------+ 126| A5 | GND | GND | GND | GND | GND | GND | 127+------+-----------+------------+-------------+-----------+------------+-----------+ 128| A6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 129+------+-----------+------------+-------------+-----------+------------+-----------+ 130| A7 | gpio[20] | gpio[20] | gpio[20] | gpio[20] | gpio[20] | gpio[20] | 131+------+-----------+------------+-------------+-----------+------------+-----------+ 132| A8 | gpio[21] | gpio[21] | gpio[21] | gpio[21] | gpio[21] | gpio[21] | 133+------+-----------+------------+-------------+-----------+------------+-----------+ 134| A9 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. | 135+------+-----------+------------+-------------+-----------+------------+-----------+ 136| A10 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. | 137+------+-----------+------------+-------------+-----------+------------+-----------+ 138| A11 | GND | GND | GND | GND | GND | GND | 139+------+-----------+------------+-------------+-----------+------------+-----------+ 140| A12 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 141+------+-----------+------------+-------------+-----------+------------+-----------+ 142 143Pmod_B Connector 144---------------- 145 146Table below lists the pin assignment of valid protocols that can be multiplexed on the Pmod_B 147connector. The GPIO column is the default assignment after Reset. 148 149+------+-----------+------------+-------------+-----------+------------+-----------+ 150| Pin | GPIO | UART | SPI | I2C | PWM_1 | PWM_2 | 151+------+-----------+------------+-------------+-----------+------------+-----------+ 152| B1 | gpio[12] | uart0_cts | spi2_cs[1] | gpio[12] | gpio[12] | pwm_ch[0] | 153+------+-----------+------------+-------------+-----------+------------+-----------+ 154| B2 | gpio[13] | uart0_txd | spi2_mosi | gpio[13] | pwm_ch[6] | gpio[13] | 155+------+-----------+------------+-------------+-----------+------------+-----------+ 156| B3 | gpio[14] | uart0_rxd | spi2_miso | i2c2_scl | gpio[14] | gpio[14] | 157+------+-----------+------------+-------------+-----------+------------+-----------+ 158| B4 | gpio[15] | uart0_rts | spi2_clk | i2c2_sda | gpio[15] | gpio[15] | 159+------+-----------+------------+-------------+-----------+------------+-----------+ 160| B5 | GND | GND | GND | GND | GND | GND | 161+------+-----------+------------+-------------+-----------+------------+-----------+ 162| B6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 163+------+-----------+------------+-------------+-----------+------------+-----------+ 164| B7 | gpio[22] | gpio[22] | gpio[22] | gpio[22] | gpio[22] | gpio[22] | 165+------+-----------+------------+-------------+-----------+------------+-----------+ 166| B8 | gpio[23] | gpio[23] | gpio[23] | gpio[23] | gpio[23] | gpio[23] | 167+------+-----------+------------+-------------+-----------+------------+-----------+ 168| B9 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. | 169+------+-----------+------------+-------------+-----------+------------+-----------+ 170| B10 | n.c. | n.c. | n.c. | n.c. | n.c. | n.c. | 171+------+-----------+------------+-------------+-----------+------------+-----------+ 172| B11 | GND | GND | GND | GND | GND | GND | 173+------+-----------+------------+-------------+-----------+------------+-----------+ 174| B12 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 175+------+-----------+------------+-------------+-----------+------------+-----------+ 176 177Pmod_C Connector 178---------------- 179 180Table below lists the pin assignment of valid protocols that can be multiplexed on the Pmod_C 181connector. The GPIO column is the default assignment after Reset. 182 183+------+-----------+------------+-------------+-----------+-----------+ 184| Pin | GPIO | UART | SPI | I2C | PWM | 185+------+-----------+------------+-------------+-----------+-----------+ 186| C1 | gpio[16] | uart1_txd | spi1_cs[2] | i2c1_scl | gpio[16] | 187+------+-----------+------------+-------------+-----------+-----------+ 188| C2 | gpio[17] | uart1_rxd | spi1_mosi | i2c1_sda | pwm_ch[0] | 189+------+-----------+------------+-------------+-----------+-----------+ 190| C3 | gpio[18] | uart2_txd | spi1_miso | i2c2_scl | gpio[18] | 191+------+-----------+------------+-------------+-----------+-----------+ 192| C4 | gpio[19] | uart2_rxd | spi1_clk | i2c2_sda | gpio[19] | 193+------+-----------+------------+-------------+-----------+-----------+ 194| C5 | GND | GND | GND | GND | GND | 195+------+-----------+------------+-------------+-----------+-----------+ 196| C6 | 3V3 | 3V3 | 3V3 | 3V3 | 3V3 | 197+------+-----------+------------+-------------+-----------+-----------+ 198 199Mikrobus 200======== 201 202The ARC HSDK features a set of MikroBUS headers. Figure below shows the relevant function assignments, 203fully compatible with the MikroBUS standard. Table below shows the pin assignment on the I/O Multiplexer. 204 205.. image:: mikrobus_header.jpg 206 :align: center 207 :alt: mikrobus header 208 209+-------+-----------------+------+-----------+ 210| Pin | I/O | Pin | I/O | 211+-------+-----------------+------+-----------+ 212| AN | ADC VIN6* | PWM | pwm_ch[0] | 213+-------+-----------------+------+-----------+ 214| RST | GPX_Port0_bit1 | INT | gpio[16] | 215+-------+-----------------+------+-----------+ 216| CS | spi2_cs[1] | RX | uart2_rxd | 217+-------+-----------------+------+-----------+ 218| SCK | spi2_clk | TX | uart2_txd | 219+-------+-----------------+------+-----------+ 220| MISO | spi2_miso | SCL | i2c2_scl | 221+-------+-----------------+------+-----------+ 222| MOSI | spi2_mosi | SDA | i2c2_sda | 223+-------+-----------------+------+-----------+ 224 225.. note:: 226 ADC VIN6 is available through the on-board ADC and is 227 read though SPI0 using SPI chip select 1. 228 229Arduino 230======= 231 232The ARC HSDK provides an Arduino shield interface. Figure below shows the relevant 233function assignments. The Arduino shield interface is compatible with the Arduino UNO 234R3 with the following exceptions: 5 Volt shields are not supported, the IOREF voltage on 235the ARC HSDK board is fixed to 3V3. Note that the ICSP header is also not available. Most 236shields do not require this ICSP header as the SPI master interface on this ICSP header 237is also available on the IO10 to IO13 pins. 238 239.. image:: arduino_shield_interface.jpg 240 :align: center 241 :alt: arduino shield interface 242 243Table below shows the pin assignment on the I/O Multiplexer. Multiplexing is controlled by software 244using the CREG_GPIO_MUX register (see Pinmux ). After a reset, all ports are configured as GPIO inputs. 245 246+-------+------------+-----------------+------------+ 247| Pin | I/O-1 | I/O-2 | I/O-3 | 248+-------+------------+-----------------+------------+ 249| AD0 | ADC VIN0* | GPX_port0_bit2 | - | 250+-------+------------+-----------------+------------+ 251| AD1 | ADC VIN1* | GPX_port0_bit3 | - | 252+-------+------------+-----------------+------------+ 253| AD2 | ADC VIN2* | GPX_port0_bit4 | - | 254+-------+------------+-----------------+------------+ 255| AD3 | ADC VIN3* | GPX_port0_bit5 | - | 256+-------+------------+-----------------+------------+ 257| AD4 | ADC VIN4* | gpio[18] | i2c2_sda | 258+-------+------------+-----------------+------------+ 259| AD5 | ADC VIN5* | gpio[19] | i2c2_scl | 260+-------+------------+-----------------+------------+ 261| IO0 | gpio[23] | uart2_rxd | - | 262+-------+------------+-----------------+------------+ 263| IO1 | gpio[22] | uart2_txd | - | 264+-------+------------+-----------------+------------+ 265| IO2 | gpio[16] | - | - | 266+-------+------------+-----------------+------------+ 267| IO3 | gpio[17] | pwm_ch[5] | - | 268+-------+------------+-----------------+------------+ 269| IO4 | gpio[11] | - | | 270+-------+------------+-----------------+------------+ 271| IO5 | gpio[9] | pwm_ch[4] | - | 272+-------+------------+-----------------+------------+ 273| IO6 | gpio[21] | pwm_ch[3] | - | 274+-------+------------+-----------------+------------+ 275| IO7 | gpio[20] | - | - | 276+-------+------------+-----------------+------------+ 277| IO8 | gpio[10] | - | - | 278+-------+------------+-----------------+------------+ 279| IO9 | gpio[8] | pwm_ch[2] | - | 280+-------+------------+-----------------+------------+ 281| IO10 | gpio[12] | pwm_ch[0] | spi2_cs[1] | 282+-------+------------+-----------------+------------+ 283| IO11 | gpio[13] | pwm_ch[6] | spi2_mosi | 284+-------+------------+-----------------+------------+ 285| IO12 | gpio[14] | - | spi2_miso | 286+-------+------------+-----------------+------------+ 287| IO13 | gpio[15] | - | spi2_clk | 288+-------+------------+-----------------+------------+ 289 290I/O expander 291============ 292 293The ARC HSDK board includes a CY8C9520A I/O expander from `Cypress CY8C9520A 294<https://www.cypress.com/file/37971/download>`__. The I/O 295expander offers additional GPIO signals and board control signals and can be accessed 296through the on-board I2C bus, we have implemented a basic driver for it. 297Tables below shows an overview of relevant I/O signals. 298 299+------------+---------------------------------------------+ 300| Pins | Usage | 301+------------+---------------------------------------------+ 302| port0_bit0 | RS9113 Bluetooth I2S RX enable (active low) | 303+------------+---------------------------------------------+ 304| port0_bit1 | mikroBUS Reset (active low) | 305+------------+---------------------------------------------+ 306| port0_bit2 | GPIO for Arduino AD0 | 307+------------+---------------------------------------------+ 308| port0_bit3 | GPIO for Arduino AD1 | 309+------------+---------------------------------------------+ 310| port0_bit4 | GPIO for Arduino AD2 | 311+------------+---------------------------------------------+ 312| port0_bit5 | GPIO for Arduino AD3 | 313+------------+---------------------------------------------+ 314| port1_bit4 | On-board user LED0 | 315+------------+---------------------------------------------+ 316| port1_bit5 | On-board user LED1 | 317+------------+---------------------------------------------+ 318| port1_bit6 | On-board user LED2 | 319+------------+---------------------------------------------+ 320| port1_bit7 | On-board user LED3 | 321+------------+---------------------------------------------+ 322 323On-board user LEDS 324================== 325 326The ARC HSDK includes 4 user LEDs(active high), which can be controlled through the I/O expander pins. 327 328+-------+-----------------+ 329| LEDs | PINs | 330+-------+-----------------+ 331| LED0 | GPX_port1_bit4 | 332+-------+-----------------+ 333| LED1 | GPX_port1_bit5 | 334+-------+-----------------+ 335| LED2 | GPX_port1_bit6 | 336+-------+-----------------+ 337| LED3 | GPX_port1_bit7 | 338+-------+-----------------+ 339 340For hardware feature details, refer to : `Designware HS Development Kit website 341<https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__. 342 343Programming and Debugging 344************************* 345 346Required Hardware and Software 347============================== 348 349To use Zephyr RTOS applications on the HS Development Kit board, a few 350additional pieces of hardware are required. 351 352* A micro USB cable provides USB-JTAG debug and USB-UART communication 353 to the board 354 355* A universal switching power adaptor (110-240V 356 AC to 12V DC), provided in the package, provides power to the board. 357 358* :ref:`The Zephyr SDK <toolchain_zephyr_sdk>` 359 360* Terminal emulator software for use with the USB-UART. Suggestion: 361 `Putty Website`_. 362 363* (optional) A collection of Pmods, Arduino modules, or Mikro modules. 364 See `Digilent Pmod Modules`_ or develop your custom interfaces to attach 365 to the Pmod connector. 366 367Set up the ARC HS Development Kit 368================================== 369 370To run Zephyr application on IoT Development Kit, you need to 371set up the board correctly. 372 373* Connect the digilent USB cable from your host to the board. 374 375* Connect the 12V DC power supply to your board 376 377Set up Zephyr Software 378====================== 379 380Building Sample Applications 381============================== 382 383You can try many of the :zephyr:code-sample-category:`sample applications and demos <samples>`. 384We'll use :zephyr:code-sample:`hello_world`, found in :zephyr_file:`samples/hello_world` as an 385example. 386 387Configuring 388----------- 389 390You may need to write a prj_arc.conf file if the sample doesn't have one. 391Next, you can use the menuconfig rule to configure the target. By specifying 392``hsdk`` as the board configuration, you can select the ARC HS Development 393Kit board support for Zephyr. 394 395.. zephyr-app-commands:: 396 :board: hsdk 397 :zephyr-app: samples/hello_world 398 :goals: menuconfig 399 400 401Building 402-------- 403 404You can build an application in the usual way. Refer to 405:ref:`build_an_application` for more details. Here is an example for 406:zephyr:code-sample:`hello_world`. 407 408.. zephyr-app-commands:: 409 :board: hsdk 410 :zephyr-app: samples/hello_world 411 :maybe-skip-config: 412 :goals: build 413 414 415Connecting Serial Output 416========================= 417 418In the default configuration, Zephyr's HS Development Kit images support 419serial output via the USB-UART on the board. To enable serial output: 420 421* Open a serial port emulator (i.e. on Linux minicom, putty, screen, etc) 422 423* Specify the tty driver name, for example, on Linux this may be 424 :file:`/dev/ttyUSB0` 425 426* Set the communication settings to: 427 428 429========= ===== 430Parameter Value 431========= ===== 432Baud: 115200 433Data: 8 bits 434Parity: None 435Stopbits: 1 436========= ===== 437 438Debugging 439========== 440 441Using the latest version of Zephyr SDK(>=0.10), you can debug and 442flash (run) HS Development Kit directly. 443 444One option is to build and debug the application using the usual 445Zephyr build system commands. 446 447.. zephyr-app-commands:: 448 :board: hsdk 449 :app: <my app> 450 :goals: debug 451 452At this point you can do your normal debug session. Set breakpoints and then 453:kbd:`c` to continue into the program. 454 455The other option is to launch a debug server, as follows. 456 457.. zephyr-app-commands:: 458 :board: hsdk 459 :app: <my app> 460 :goals: debugserver 461 462Then connect to the debug server at the HS Development Kit from a second 463console, from the build directory containing the output :file:`zephyr.elf`. 464 465.. code-block:: console 466 467 $ cd <my app> 468 $ $ZEPHYR_SDK_INSTALL_DIR/arc-zephyr-elf/arc-zephyr-elf-gdb zephyr.elf 469 (gdb) target remote localhost:3333 470 (gdb) load 471 (gdb) b main 472 (gdb) c 473 474Flashing 475======== 476 477If you just want to download the application to the HS Development Kit's DDR 478and run, you can do so in the usual way. 479 480.. zephyr-app-commands:: 481 :board: hsdk 482 :app: <my app> 483 :goals: flash 484 485This command still uses openocd and gdb to load the application elf file to 486HS Development Kit, but it will load the application and immediately run. If 487power is removed, the application will be lost since it wasn't written to flash. 488 489Most of the time you will not be flashing your program but will instead debug 490it using openocd and gdb. The program can be download via the USB cable into 491the code and data memories. 492 493The HS Development Kit also supports flashing the Zephyr application 494with the U-Boot bootloader, a powerful and flexible tool for loading 495an executable from different sources and running it on the target platform. 496 497The U-Boot implementation for the HS Development Kit was further extended with 498additional functionality that allows users to better manage the broad 499configurability of the HS Development Kit 500 501When you are ready to deploy the program so that it boots up automatically on 502reset or power-up, you can follow the steps to place the program on SD card. 503 504For details, see: `Uboot-HSDK-Command-Reference 505<https://github.com/foss-for-synopsys-dwc-arc-processors/linux/wiki/Uboot-HSDK-Command-Reference#launching-baremetal-application-on-hsdk>`__ 506 507 508Release Notes 509************* 510 511References 512********** 513 514.. target-notes:: 515 516.. _embARC website: https://www.embarc.org 517 518.. _Designware HS Development Kit website: https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit 519 520.. _Digilent Pmod Modules: http://store.digilentinc.com/pmod-modules 521 522.. _Putty website: http://www.putty.org 523