From 69c01d11e557e97fe32c9fe32418cee997e9c57d Mon Sep 17 00:00:00 2001 From: "Charles E. Youse" Date: Mon, 3 Jun 2019 14:26:25 -0700 Subject: [PATCH] boards/x86/gpmrb: add Gordon Peak MRB board Add board support (and documentation) for the Intel Gordon Peak Module Reference Board, a dev board based on the Apollo Lake SoC. Signed-off-by: Charles E. Youse --- boards/x86/gpmrb/Kconfig.board | 9 ++ boards/x86/gpmrb/Kconfig.defconfig | 43 ++++++ boards/x86/gpmrb/doc/img/gpmrb.jpg | Bin 0 -> 7524 bytes boards/x86/gpmrb/doc/index.rst | 132 ++++++++++++++++++ boards/x86/gpmrb/gpmrb.dts | 34 +++++ boards/x86/gpmrb/gpmrb.yaml | 11 ++ boards/x86/gpmrb/gpmrb_defconfig | 14 ++ .../apollo_lake/doc/supported_features.rst | 57 ++++++++ 8 files changed, 300 insertions(+) create mode 100644 boards/x86/gpmrb/Kconfig.board create mode 100644 boards/x86/gpmrb/Kconfig.defconfig create mode 100644 boards/x86/gpmrb/doc/img/gpmrb.jpg create mode 100644 boards/x86/gpmrb/doc/index.rst create mode 100644 boards/x86/gpmrb/gpmrb.dts create mode 100644 boards/x86/gpmrb/gpmrb.yaml create mode 100644 boards/x86/gpmrb/gpmrb_defconfig create mode 100644 soc/x86/apollo_lake/doc/supported_features.rst diff --git a/boards/x86/gpmrb/Kconfig.board b/boards/x86/gpmrb/Kconfig.board new file mode 100644 index 00000000000..66c4f8fa308 --- /dev/null +++ b/boards/x86/gpmrb/Kconfig.board @@ -0,0 +1,9 @@ +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +config BOARD_GPMRB + bool "Gordon Peak MRB" + depends on SOC_APOLLO_LAKE diff --git a/boards/x86/gpmrb/Kconfig.defconfig b/boards/x86/gpmrb/Kconfig.defconfig new file mode 100644 index 00000000000..551ec787356 --- /dev/null +++ b/boards/x86/gpmrb/Kconfig.defconfig @@ -0,0 +1,43 @@ +# Copyright (c) 2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_GPMRB + +config BOARD + default "gpmrb" + +config BUILD_OUTPUT_STRIPPED + default y + +if UART_NS16550 + +config UART_NS16550_PORT_0 + default y + +config UART_NS16550_PORT_1 + default y + +config UART_NS16550_PORT_2 + default y + +config UART_NS16550_PORT_3 + default y + +endif # UART_NS16550 + +if I2C + +config I2C_0 + default y + +config I2C_1 + default y + +endif # I2C + +config SYS_CLOCK_HW_CYCLES_PER_SEC + default 19200000 if HPET_TIMER # guess + default 1100000000 if LOAPIC_TIMER # another guess + +endif # BOARD_GPMRB diff --git a/boards/x86/gpmrb/doc/img/gpmrb.jpg b/boards/x86/gpmrb/doc/img/gpmrb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89393d46934e79c378bbd466b09790153221b88c GIT binary patch literal 7524 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 literal 0 HcmV?d00001 diff --git a/boards/x86/gpmrb/doc/index.rst b/boards/x86/gpmrb/doc/index.rst new file mode 100644 index 00000000000..bc4d36f101b --- /dev/null +++ b/boards/x86/gpmrb/doc/index.rst @@ -0,0 +1,132 @@ +.. _gpmrb: + +Gordon Peak MRB +############### + +Overview +******** + +The Intel Gordon Peak Module Reference Board (GP MRB) is used in +the automotive industry for the development of in-vehicle applications +such as heads-up displays and entertainment systems. + +.. figure:: img/gpmrb.jpg + :width: 500px + :align: center + :alt: Gordon Peak MRB + + Gordon Peak MRB + +Hardware +******** + +.. include:: ../../../../soc/x86/apollo_lake/doc/supported_features.rst + +Building and Running Zephyr +*************************** + +Use the following procedure to boot a Zephyr application on the Gordon Peak +MRB. + +Build Zephyr Application +======================== + +Build a Zephyr application; for instance, to build the ``hello_world`` +application for the GP MRB: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :tool: all + :board: gpmrb + :goals: build + +This will create a standard ELF binary application file named +:file:`zephyr.elf`, and the same binary with debugging information +removed named :file:`zephyr.strip`. Because of the limited firmware +flash area on board, we'll use the smaller, stripped version. + +Move the stripped application to your home directory for use +in the next steps: + +.. code-block:: console + + $ cp zephyr/zephyr.strip ~ + +Get the Leaf Hill Firmware Files +================================ + +The Slim Bootloader (see the next step) requires binary firmware images +specific to the GP MRB: in this instance, the "Leaf Hill" firmware. +This can be downloaded from Intel: + +.. code-block:: console + + $ cd + $ wget https://firmware.intel.com/sites/default/files/leafhill-0.70-firmwareimages.zip + $ unzip leafhill-0.70-firmwareimages.zip + +There will now be two files named :file:`LEAFHILD.X64.0070.D01.1805070344.bin` +and :file:`LEAFHILD.X64.0070.R01.1805070352.bin` or similar in your home +directory, which are the debug (``D``) and release (``R``) versions of the +binary packages, respectively. Make note of the release (:file:`*R01*`) +file name for the next step. + +Build Slim Bootloader +===================== + +Zephyr runs as a direct payload of the Slim Bootloader (SBL). For more +complete information on SBL, including comprehensive build instructions, +see the `Slim Bootloader `_ site. + +.. code-block:: console + + $ cd + $ git clone https://github.com/slimbootloader/slimbootloader.git + $ cd slimbootloader + $ python BuildLoader.py clean + $ python BuildLoader.py build apl -p ~/zephyr.strip + +Now that the SBL has been built with the Zephyr application as the direct +payload, we need to "stitch" together SBL with the board firmware package. +Be sure to replace the release filename with the one noted in the previous +step: + +.. code-block:: console + + $ python Platform/ApollolakeBoardPkg/Script/StitchLoader.py \ + -i ~/LEAFHILD.X64.0070.R01.1805070352.bin \ + -s Outputs/apl/Stitch_Components.zip \ + -o ~/sbl.bin + +Now the file :file:`sbl.bin` in your home directory contains a firmware +image with SBL and the Zephyr application, ready to flash to the GP MRB. + +Flash the Image +=============== + +Connect the IOC to the GP MRB and connect the USB cable to your development +machine. Then, using the Intel Platform Flash tools supplied with your +board, flash the firmware: + +.. code-block:: console + + $ sudo /opt/intel/platformflashtool/bin/ias-spi-programmer --write ~/sbl.bin + +.. note:: + + Refer to the instructions with the IOC and/or GP MRB for further + information on flashing the firmware. + +Launch Zephyr +============= + +Connect to UART 2 on the GP MRB and press the "ignition" button. After +initialization messages, you will the Zephyr banner: + +.. code-block:: console + + ***** Booting Zephyr OS v1.14.0-rc3-1254-g2a086e4c13ef ***** + Hello World! gpmrb + + +Congratulations! You are running Zephyr on your Gordon Peak MRB! diff --git a/boards/x86/gpmrb/gpmrb.dts b/boards/x86/gpmrb/gpmrb.dts new file mode 100644 index 00000000000..a28c908fca3 --- /dev/null +++ b/boards/x86/gpmrb/gpmrb.dts @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include + +#define DT_FLASH_SIZE DT_SIZE_K(8912) +#define DT_SRAM_SIZE DT_SIZE_M(2048) + +#include + +/ { + model = "gpmrb"; + compatible = "intel,apollo_lake"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart2; + zephyr,shell-uart = &uart2; + zephyr,bt-uart = &uart1; + zephyr,uart-pipe = &uart1; + zephyr,bt-mon-uart = &uart1; + }; +}; + +&uart0 { interrupts = <4 IRQ_TYPE_LEVEL_LOW 3>; }; +&uart1 { interrupts = <5 IRQ_TYPE_LEVEL_LOW 3>; }; +&uart2 { interrupts = <6 IRQ_TYPE_LEVEL_LOW 3>; }; +&uart3 { interrupts = <7 IRQ_TYPE_LEVEL_LOW 3>; }; diff --git a/boards/x86/gpmrb/gpmrb.yaml b/boards/x86/gpmrb/gpmrb.yaml new file mode 100644 index 00000000000..8894dde424e --- /dev/null +++ b/boards/x86/gpmrb/gpmrb.yaml @@ -0,0 +1,11 @@ +identifier: gpmrb +name: Gordon Peak MRB +type: mcu +arch: x86 +toolchain: + - zephyr +ram: 256 +testing: + ignore_tags: + - net + - bluetooth diff --git a/boards/x86/gpmrb/gpmrb_defconfig b/boards/x86/gpmrb/gpmrb_defconfig new file mode 100644 index 00000000000..02779d64403 --- /dev/null +++ b/boards/x86/gpmrb/gpmrb_defconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2019 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_X86=y +CONFIG_SOC_APOLLO_LAKE=y +CONFIG_BOARD_GPMRB=y +CONFIG_HPET_TIMER=y +CONFIG_PIC_DISABLE=y +CONFIG_LOAPIC=y +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_UART_NS16550=y +CONFIG_UART_CONSOLE=y +CONFIG_I2C=y diff --git a/soc/x86/apollo_lake/doc/supported_features.rst b/soc/x86/apollo_lake/doc/supported_features.rst new file mode 100644 index 00000000000..19d34e35b04 --- /dev/null +++ b/soc/x86/apollo_lake/doc/supported_features.rst @@ -0,0 +1,57 @@ +Supported Features +================== + +In addition to the standard architecture devices (HPET, local and I/O APICs, +etc.), Zephyr supports the following Apollo Lake-specific SoC devices: + +* HSUART + +* GPIO + +* I2C + +HSUART High-Speed Serial Port Support +------------------------------------- + +The Apollo Lake UARTs are NS16550-compatible, with "high-speed" capability. + +Baud rates beyond 115.2kbps (up to 3.6864Mbps) are supported, with additional +configuration. The UARTs are fed a master clock which is fed into a PLL which +in turn outputs the baud master clock. The PLL is controlled by a per-UART +32-bit register called ``PRV_CLOCK_PARAMS`` (aka the ``PCP``), the format of +which is: + ++--------+---------+--------+--------+ +| [31] | [30:16] | [15:1] | [0] | ++========+=========+========+========+ +| enable | ``m`` | ``n`` | toggle | ++--------+---------+--------+--------+ + +The resulting baud master clock frequency is ``(n/m)`` * master. + +Typically, the master clock is 100MHz, and the firmware by default sets +the ``PCP`` to ``0x3d090240``, i.e., ``n = 288``, ``m = 15625``, which +results in the de-facto standard 1.8432MHz master clock and a max baud rate +of 115.2k. Higher baud rates are enabled by changing the PCP and telling +Zephyr what the resulting master clock is. + +Use devicetree to set the value of the ``PRV_CLOCK_PARAMS`` register in +the UART block of interest. Typically an overlay ``up_squared.overlay`` +would be present in the application directory, and would look something +like this: + + .. code-block:: console + + / { + soc { + uart@0 { + pcp = <0x3d090900>; + clock-frequency = <7372800>; + current-speed = <230400>; + }; + }; + }; + +The relevant variables are ``pcp`` (the value to use for ``PRV_CLOCK_PARAMS``), +and ``clock-frequency`` (the resulting baud master clock). The meaning of +``current-speed`` is unchanged, and as usual indicates the initial baud rate.