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