11 * [BLUE][header_cn16_link]: UART0 / USB connector
12 * [GREEN][header_gpio_link]: UART1 / GPIO header
13 * [RED][header_cn22_link]: SPI header
14 * YELLOW: Indicates pin 1
16 ## Mainboard components
19 +------------------+----------------------------------+
20 | CPU | Intel Atom, Celeron, Pentium |
21 +------------------+----------------------------------+
22 | PCH | Intel Apollo Lake |
23 +------------------+----------------------------------+
24 | EC / Super IO | N/A |
25 +------------------+----------------------------------+
26 | Coprocessor | Intel TXE 3.0 |
27 +------------------+----------------------------------+
32 +---------------------+------------+
34 +=====================+============+
35 | Socketed flash | no |
36 +---------------------+------------+
38 +---------------------+------------+
40 +---------------------+------------+
42 +---------------------+------------+
44 +---------------------+------------+
46 +---------------------+------------+
47 | Write protection | No |
48 +---------------------+------------+
49 | Internal flashing | No |
50 +---------------------+------------+
51 | In circuit flashing | Yes |
52 +---------------------+------------+
57 This connector is located on the **bottom** side (see [here][overview_bottom_link]).
61 #### UART1 (GPIO header)
62 The GPIO header is located on the **bottom** side (see [here][overview_bottom_link]).
65 ## Building and flashing coreboot
66 ### Using the SPI header
67 The SPI header is located on the **bottom** side (see [here][overview_bottom_link]).
71 In order to build coreboot, it's necessary to extract some files from the vendor firmware. Make sure that you have a fully working dump.
78 [upsquared]$ mkdir extracted && cd extracted
79 [extracted]$ ifdtool -x ../firmware_vendor.rom
80 File ../firmware_vendor.rom is 16777216 bytes
81 Peculiar firmware descriptor, assuming Ibex Peak compatibility.
82 Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
83 Flash Region 1 (BIOS): 00001000 - 00efefff
84 Flash Region 2 (Intel ME): 07fff000 - 00000fff (unused)
85 Flash Region 3 (GbE): 07fff000 - 00000fff (unused)
86 Flash Region 4 (Platform Data): 07fff000 - 00000fff (unused)
87 Flash Region 5 (Reserved): 00eff000 - 00ffefff
88 Flash Region 6 (Reserved): 07fff000 - 00000fff (unused)
89 Flash Region 7 (Reserved): 07fff000 - 00000fff (unused)
90 Flash Region 8 (EC): 07fff000 - 00000fff (unused)
94 flashregion_0_flashdescriptor.bin
95 flashregion_1_bios.bin
96 flashregion_5_reserved.bin
101 [coreboot]$ make distclean
106 [coreboot]$ touch .config
107 [coreboot]$ ./util/scripts/config --enable VENDOR_UP
108 [coreboot]$ ./util/scripts/config --enable BOARD_UP_SQUARED
109 [coreboot]$ ./util/scripts/config --enable NEED_IFWI
110 [coreboot]$ ./util/scripts/config --enable HAVE_IFD_BIN
111 [coreboot]$ ./util/scripts/config --set-str IFWI_FILE_NAME "<flashregion_1_bios.bin>"
112 [coreboot]$ ./util/scripts/config --set-str IFD_BIN_PATH "<flashregion_0_flashdescriptor.bin>"
113 [coreboot]$ make olddefconfig
121 Now you should have a working and ready to use coreboot build at `build/coreboot.rom`.
125 [coreboot]$ flashrom -p <your_programmer> -w build/coreboot.rom
130 - bootblock, romstage, ramstage
131 - Serial console UART0, UART1
133 - iGPU init with libgfxinit
138 - flashing with flashrom externally
144 ### Not working / Known issues
145 - Generally SeaBIOS works, but it can't find the CBFS region and therefore it can't load seavgabios. This is because of changes at the Apollolake platform.
151 - MIPI-CSI2 2-lane (2MP)
152 - MIPI-CSI2 4-lane (8MP)
155 - embedded DisplayPort
158 - flashing with flashrom internally using Linux
161 [header_cn16]: header_cn16_10pin_uart0.svg
162 [header_cn16_link]: #uart0-cn16
163 [header_cn22]: header_cn22_12pin_spi.svg
164 [header_cn22_link]: #using-the-spi-header
165 [header_gpio]: header_40pin_gpio_uart1.svg
166 [header_gpio_link]: #uart1-gpio-header
167 [overview_top]: top.jpg
168 [overview_bottom]: bottom.jpg
169 [overview_bottom_link]: #bottom