xref: /aosp_15_r20/external/gsc-utils/docs/getting_started_quickly.md (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
1*4f2df630SAndroid Build Coastguard Worker# Get Started Building EC Images (Quickly)
2*4f2df630SAndroid Build Coastguard Worker
3*4f2df630SAndroid Build Coastguard Worker[TOC]
4*4f2df630SAndroid Build Coastguard Worker
5*4f2df630SAndroid Build Coastguard WorkerThe
6*4f2df630SAndroid Build Coastguard Worker[Chromium OS Developer Guide](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md)
7*4f2df630SAndroid Build Coastguard Workerand [README](../README.md) walk through the steps needed to fetch and build
8*4f2df630SAndroid Build Coastguard WorkerChromium OS source. These steps can be followed to retrieve and build EC source
9*4f2df630SAndroid Build Coastguard Workeras well. On the other hand, if your sole interest is building an EC image, the
10*4f2df630SAndroid Build Coastguard Workergeneral developer guide contains some extra unneeded steps.
11*4f2df630SAndroid Build Coastguard Worker
12*4f2df630SAndroid Build Coastguard WorkerThe fastest possible way to build an EC image is to skip the Chromium OS chroot
13*4f2df630SAndroid Build Coastguard Workerinstall entirely. The following steps have been tested on an Ubuntu 15.10 (Wily
14*4f2df630SAndroid Build Coastguard WorkerWerewolf) 64-bit host machine. Other distros / versions may be used, but
15*4f2df630SAndroid Build Coastguard Workertoolchain incompatibilities may require extra debug.
16*4f2df630SAndroid Build Coastguard Worker
17*4f2df630SAndroid Build Coastguard Worker## Building
18*4f2df630SAndroid Build Coastguard Worker
19*4f2df630SAndroid Build Coastguard Worker1.  Install build / dev tools:
20*4f2df630SAndroid Build Coastguard Worker
21*4f2df630SAndroid Build Coastguard Worker    ```bash
22*4f2df630SAndroid Build Coastguard Worker    sudo apt-get install git libftdi-dev libusb-dev libncurses5-dev gcc-arm-none-eabi
23*4f2df630SAndroid Build Coastguard Worker    ```
24*4f2df630SAndroid Build Coastguard Worker
25*4f2df630SAndroid Build Coastguard Worker1.  Sync the cros-ec git repo:
26*4f2df630SAndroid Build Coastguard Worker
27*4f2df630SAndroid Build Coastguard Worker    ```bash
28*4f2df630SAndroid Build Coastguard Worker    git clone https://chromium.googlesource.com/chromiumos/platform/ec
29*4f2df630SAndroid Build Coastguard Worker    ```
30*4f2df630SAndroid Build Coastguard Worker
31*4f2df630SAndroid Build Coastguard Worker1.  Build your EC image:
32*4f2df630SAndroid Build Coastguard Worker
33*4f2df630SAndroid Build Coastguard Worker    ```bash
34*4f2df630SAndroid Build Coastguard Worker    HOSTCC=x86_64-linux-gnu-gcc make BOARD=$board
35*4f2df630SAndroid Build Coastguard Worker    ```
36*4f2df630SAndroid Build Coastguard Worker
37*4f2df630SAndroid Build Coastguard Worker## External Dependencies
38*4f2df630SAndroid Build Coastguard Worker
39*4f2df630SAndroid Build Coastguard WorkerMost boards are buildable, but some will fail due to dependencies on external
40*4f2df630SAndroid Build Coastguard Workerbinaries (such as [`futility`](#building-futility)). Also, some related tools
41*4f2df630SAndroid Build Coastguard Worker(such as `flash_ec` and `servod`) must be run from the Chromium OS chroot. Here
42*4f2df630SAndroid Build Coastguard Workeris a set of steps to setup a minimal development environment to build EC images
43*4f2df630SAndroid Build Coastguard Workerfrom the Chromium OS chroot:
44*4f2df630SAndroid Build Coastguard Worker
45*4f2df630SAndroid Build Coastguard Worker1.  Create a folder for your chroot:
46*4f2df630SAndroid Build Coastguard Worker
47*4f2df630SAndroid Build Coastguard Worker    ```bash
48*4f2df630SAndroid Build Coastguard Worker    mkdir cros-src; cd cros-src
49*4f2df630SAndroid Build Coastguard Worker    ```
50*4f2df630SAndroid Build Coastguard Worker
51*4f2df630SAndroid Build Coastguard Worker1.  Run
52*4f2df630SAndroid Build Coastguard Worker
53*4f2df630SAndroid Build Coastguard Worker    ```bash
54*4f2df630SAndroid Build Coastguard Worker    repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --repo-url https://chromium.googlesource.com/external/repo.git -g minilayout
55*4f2df630SAndroid Build Coastguard Worker    ```
56*4f2df630SAndroid Build Coastguard Worker
57*4f2df630SAndroid Build Coastguard Worker1.  Edit `.repo/manifest.xml`, and add `groups="minilayout"` to the platform/ec
58*4f2df630SAndroid Build Coastguard Worker    project, so the line becomes:
59*4f2df630SAndroid Build Coastguard Worker
60*4f2df630SAndroid Build Coastguard Worker    ```
61*4f2df630SAndroid Build Coastguard Worker    <project path="src/platform/ec" name="chromiumos/platform/ec" groups="minilayout" />
62*4f2df630SAndroid Build Coastguard Worker    ```
63*4f2df630SAndroid Build Coastguard Worker
64*4f2df630SAndroid Build Coastguard Worker1.  Run `repo sync`:
65*4f2df630SAndroid Build Coastguard Worker
66*4f2df630SAndroid Build Coastguard Worker    ```bash
67*4f2df630SAndroid Build Coastguard Worker    repo sync -j <number of cores on your workstatsion>
68*4f2df630SAndroid Build Coastguard Worker    ```
69*4f2df630SAndroid Build Coastguard Worker
70*4f2df630SAndroid Build Coastguard Worker1.  Enter the chroot and enter your password for `sudo` if prompted:
71*4f2df630SAndroid Build Coastguard Worker
72*4f2df630SAndroid Build Coastguard Worker    ```bash
73*4f2df630SAndroid Build Coastguard Worker    ./chromite/bin/cros_sdk
74*4f2df630SAndroid Build Coastguard Worker    ```
75*4f2df630SAndroid Build Coastguard Worker
76*4f2df630SAndroid Build Coastguard Worker1.  Set up your board:
77*4f2df630SAndroid Build Coastguard Worker
78*4f2df630SAndroid Build Coastguard Worker    ```bash
79*4f2df630SAndroid Build Coastguard Worker    ./setup_board --board=$BOARD
80*4f2df630SAndroid Build Coastguard Worker    ```
81*4f2df630SAndroid Build Coastguard Worker
82*4f2df630SAndroid Build Coastguard Worker    (ex. `./setup_board --board=glados`)
83*4f2df630SAndroid Build Coastguard Worker
84*4f2df630SAndroid Build Coastguard Worker1.  Build EC:
85*4f2df630SAndroid Build Coastguard Worker
86*4f2df630SAndroid Build Coastguard Worker    ```bash
87*4f2df630SAndroid Build Coastguard Worker    ./build_packages --board=$BOARD chromeos-ec
88*4f2df630SAndroid Build Coastguard Worker    ```
89*4f2df630SAndroid Build Coastguard Worker
90*4f2df630SAndroid Build Coastguard Worker1.  Now, EC images for any board can be built with:
91*4f2df630SAndroid Build Coastguard Worker
92*4f2df630SAndroid Build Coastguard Worker    ```bash
93*4f2df630SAndroid Build Coastguard Worker    cd ~/trunk/src/platform/ec; make BOARD=$board -j
94*4f2df630SAndroid Build Coastguard Worker    ```
95*4f2df630SAndroid Build Coastguard Worker
96*4f2df630SAndroid Build Coastguard Worker## Building `futility` outside the chroot {#building-futility}
97*4f2df630SAndroid Build Coastguard Worker
98*4f2df630SAndroid Build Coastguard WorkerIf you want to build the `futility` host tool outside the normal Chrome OS
99*4f2df630SAndroid Build Coastguard Workerchroot self-contained environment, you can try the following
100*4f2df630SAndroid Build Coastguard Worker
101*4f2df630SAndroid Build Coastguard Worker1.  Install futility build dependencies:
102*4f2df630SAndroid Build Coastguard Worker
103*4f2df630SAndroid Build Coastguard Worker    ```bash
104*4f2df630SAndroid Build Coastguard Worker    sudo apt-get install uuid-dev liblzma-dev libyaml-dev libssl-dev
105*4f2df630SAndroid Build Coastguard Worker    ```
106*4f2df630SAndroid Build Coastguard Worker
107*4f2df630SAndroid Build Coastguard Worker1.  Get the vboot reference sources:
108*4f2df630SAndroid Build Coastguard Worker
109*4f2df630SAndroid Build Coastguard Worker    ```bash
110*4f2df630SAndroid Build Coastguard Worker    git clone https://chromium.googlesource.com/chromiumos/platform/vboot_reference
111*4f2df630SAndroid Build Coastguard Worker    ```
112*4f2df630SAndroid Build Coastguard Worker
113*4f2df630SAndroid Build Coastguard Worker1.  Build it:
114*4f2df630SAndroid Build Coastguard Worker
115*4f2df630SAndroid Build Coastguard Worker    ```bash
116*4f2df630SAndroid Build Coastguard Worker    cd vboot_reference ; make
117*4f2df630SAndroid Build Coastguard Worker    ```
118*4f2df630SAndroid Build Coastguard Worker
119*4f2df630SAndroid Build Coastguard Worker1.  Install it in `/usr/local/bin`:
120*4f2df630SAndroid Build Coastguard Worker
121*4f2df630SAndroid Build Coastguard Worker    ```bash
122*4f2df630SAndroid Build Coastguard Worker    sudo make install
123*4f2df630SAndroid Build Coastguard Worker    ```
124*4f2df630SAndroid Build Coastguard Worker
125*4f2df630SAndroid Build Coastguard Worker1.  Add `/usr/local/bin` to your default `PATH`:
126*4f2df630SAndroid Build Coastguard Worker
127*4f2df630SAndroid Build Coastguard Worker    ```bash
128*4f2df630SAndroid Build Coastguard Worker    export PATH="${PATH}:/usr/local/bin"
129*4f2df630SAndroid Build Coastguard Worker    ```
130