blob: 152cb29172341e6792929375a052b4efedbab2af [file] [log] [blame]
<html devsite><head>
<title>Como usar placas de referência</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>É possível criar versões para dispositivos Nexus usando as versões do Android Open Source Project (AOSP) e os binários relevantes específicos de hardware. Para conhecer as versões do Android e os dispositivos de destino disponíveis, consulte <a href="../start/build-numbers.html#source-code-tags-and-builds">Tags e versões de código-fonte</a>.</p>
<p>Você também pode criar versões para as placas de referência do <a href="https://android.googlesource.com/device/linaro/hikey/" class="external">HiKey</a> Android, que são projetadas para ajudar fornecedores de componentes que não sejam do Nexus a desenvolver e portar drivers para versões do Android. Usar uma placa de referência pode facilitar os esforços de upgrade, reduzir o tempo de lançamento de novos dispositivos Android, diminuir os custos de dispositivos permitindo que ODMs/OEMs escolham a partir de uma variedade maior de componentes compatíveis e aumentar a velocidade de inovação entre fornecedores de componentes.</p>
<p>O Google é compatível com a <a href="#960hikey">HiKey960</a> e
<a href="#620hikey">HiKey</a> com certificação <a href="https://www.96boards.org/products/ce/" class="external">96Boards</a> como placas de referência do Android. O AOSP fornece suporte para a placa e a origem do kernel para o HiKey, de forma que os desenvolvedores possam criar e depurar com facilidade os drivers de periféricos novos e existentes, realizar desenvolvimento de kernel e executar outras tarefas com menos ônus para OEMs. Para desenvolver novos recursos do ContextHub que usam os novos sensores ou LEDs, você também pode usar um <a href="#neonkey">Neonkey SensorHub</a> conectado a uma placa de desenvolvimento HiKey ou HiKey960.</p>
<h2 id="960hikey">Placas HiKey960</h2>
<p>A placa HiKey960 está disponível na Amazon.com e na <a href="http://www.lenovator.com/product/80.html" class="external">Lenovator</a><a>.
</a></p><a>
<img src="../images/hikey960.png" alt="Imagem da placa HiKey960"/>
<figcaption><strong>Figura 1.</strong> Placa HiKey960 da Lenovator</figcaption>
<h3 id="additional-resources">Recursos adicionais</h3>
</a><a href="https://github.com/96boards/documentation/wiki/" class="external">Wiki da 96boards</a>
<h3 id="960userspace">Como compilar o espaço do usuário</h3>
<p>Use os seguintes comandos para fazer o download, criar e executar o Android na placa HiKey960.</p>
<ol>
<li>Faça o download da árvore de origem do Android:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">repo init -u <a href="https://android.googlesource.com/platform/manifest">https://android.googlesource.com/platform/manifest</a> -b master</code>
<code class="devsite-terminal">repo sync -j24</code>
</pre>
</li>
<li>Crie:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">. ./build/envsetup.sh</code>
<code class="devsite-terminal">lunch hikey960-userdebug</code>
<code class="devsite-terminal">make -j32</code>
</pre>
</li>
</ol>
<h3 id="960fastboot">Como instalar imagens iniciais</h3>
<ol>
<li>Selecione o modo fastboot ligando os interruptores 1 e 3 (para ver mais detalhes, consulte o guia do usuário da HiKey960).</li>
<li>Ligue a placa.</li>
<li>Realize atualização flash das imagens iniciais:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">cd device/linaro/hikey/installer/hikey960</code>
<code class="devsite-terminal">./flash-all.sh</code>
</pre>
</li>
<li>Desligue o interruptor 3 e reinicie a placa.</li>
</ol>
<h3 id="960images">Realizar atualização flash das imagens</h3>
<ol>
<li>Entre no modo fastboot ligando os interruptores 1 e 3.</li>
<li>Realize a atualização flash das imagens executando os seguintes comandos:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">fastboot flash boot out/target/product/hikey960/boot.img</code>
<code class="devsite-terminal">fastboot flash dts out/target/product/hikey960/dt.img</code>
<code class="devsite-terminal">fastboot flash system out/target/product/hikey960/system.img</code>
<code class="devsite-terminal">fastboot flash vendor out/target/product/hikey960/vendor.img</code>
<code class="devsite-terminal">fastboot flash cache out/target/product/hikey960/cache.img</code>
<code class="devsite-terminal">fastboot flash userdata out/target/product/hikey960/userdata.img</code>
</pre>
</li>
<li>Desligue o interruptor 3 e reinicie a placa.</li>
</ol>
<h3 id="960kernel">Como criar o kernel</h3>
<ol>
<li>Execute os seguintes comandos:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">git clone <a href="https://android.googlesource.com/kernel/hikey-linaro">https://android.googlesource.com/kernel/hikey-linaro</a></code>
<code class="devsite-terminal">cd hikey-linaro</code>
<code class="devsite-terminal">git checkout -b android-hikey-linaro-4.9 origin/android-hikey-linaro-4.9</code>
<code class="devsite-terminal">make ARCH=arm64 hikey960_defconfig</code>
<code class="devsite-terminal">make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- -j24</code>
</pre>
</li>
<li>Atualize o kernel na imagem de inicialização.
<ul>
<li>Copie <code>hi3660-hikey960.dtb</code> (<code>arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dtb</code>) para o diretório <code>hikey-kernel</code> como arquivo: <code>hi3660-hikey960.dtb-4.9</code></li>
<li>Copie o arquivo de imagem <code>(arch/arm64/boot/Image.gz-dtb</code>) para o diretório <code>hikey-kernel</code> como o arquivo: <code>Image.gz-dtb-hikey960-4.9</code></li>
</ul>
</li><li>Crie a imagem de inicialização:
<pre class="devsite-terminal devsite-click-to-copy">
make bootimage -j24
</pre>
</li>
</ol>
<h3 id="960serial">Como definir o número de série</h3>
<p>Para definir um número de série aleatório, execute:
</p><pre class="devsite-terminal devsite-click-to-copy">
fastboot getvar nve:SN@<var>16_DIGIT_NUMBER</var>
</pre>
<p>O carregador de inicialização exporta o número de série gerado para o kernel via <code>androidboot.serialno=</code>.
</p><h3 id="960resolution">Como definir a resolução do monitor</h3>
<p>Edite o parâmetro <code>BOARD_KERNEL_CMDLINE</code> de <code>device/linaro/hikey/hikey960/BoardConfig.mk</code> e defina a configuração de <code>video</code>.
Por exemplo, a configuração de um monitor de 24" é <code>video=HDMI-A-1:1280x800@60</code>.
</p>
<h2 id="620hikey">Placas HiKey</h2>
<p>A placa HiKey (também conhecida como HiKey620) está disponível em configurações de <a href="http://www.lenovator.com/product/86.html" class="external">1 GB de RAM</a> e <a href="http://www.lenovator.com/product/90.html" class="external">2 GB de RAM</a> da <a href="http://www.lenovator.com" class="external">Lenovator</a>:
</p>
<img src="../images/hikey620.png" alt="Imagem da placa HiKey620"/>
<figcaption><strong>Figura 2.</strong> Placa HiKey da Lenovator</figcaption>
<p>Recursos adicionais:</p>
<a href="https://github.com/96boards/documentation/wiki/" class="external">Wiki da 96boards</a>
<h3 id="620userspace">Como compilar o espaço do usuário</h3>
<p>Use os seguintes comandos para fazer o download, criar e executar o Android na placa HiKey.</p>
<ol>
<li>Faça o download da árvore de origem do Android:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">repo init -u <a href="https://android.googlesource.com/platform/manifest">https://android.googlesource.com/platform/manifest</a> -b master</code>
<code class="devsite-terminal">repo sync -j24</code>
</pre>
</li>
<li>Instale o utilitário mcopy:
<pre class="devsite-terminal devsite-click-to-copy">
apt-get install mtools
</pre>
</li>
<li>Crie:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">. ./build/envsetup.sh</code>
<code class="devsite-terminal">lunch hikey-userdebug</code>
<code class="devsite-terminal">make -j32</code>
</pre>
</li>
</ol>
<p class="note"><strong>Observação</strong>: para eMMC de 4 GB, em vez de <code>$ make -j32</code>, use: <code>$ make -j32 TARGET_USERDATAIMAGE_4GB=true</code>.</p>
<h3 id="620fastboot">Como instalar o fastboot e o ptable iniciais</h3>
<ol>
<li>Selecione o modo especial do carregador de inicialização, ligando os pinos J15 1-2 e 3-4.</li>
<li>Conecte o USB ao computador para receber o dispositivo ttyUSB (ex: <code>/dev/ttyUSB1</code>).</li>
<li>Ligue a placa:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">cd device/linaro/hikey/installer/hikey</code>
<code class="devsite-terminal">./flash-all.sh /dev/ttyUSB1 [4g]</code>
</pre>
</li>
<li>Remova o jumper 3-4 e ligue a placa.</li>
</ol>
<h3 id="620images">Realizar atualização flash das imagens</h3>
<ol>
<li>Entre no modo fastboot ligando os pinos J15 1-2 e 5-6.</li>
<li>Execute os seguintes comandos:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">fastboot flash ptable device/linaro/hikey/installer/hikey/ptable-aosp-8g.img</code>
<code class="devsite-terminal">fastboot reboot-bootloader</code>
<code class="devsite-terminal">fastboot flash boot out/target/product/hikey/boot.img</code>
<code class="devsite-terminal">fastboot flash vendor out/target/product/hikey/vendor.img</code>
<code class="devsite-terminal">fastboot flash -w system out/target/product/hikey/system.img</code>
</pre>
</li>
<li>Remova o jumper 5-6 e ligue a placa.</li>
</ol>
<h3 id="620kernel">Como criar o kernel</h3>
<ol>
<li>Execute os seguintes comandos:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">git clone <a href="https://android.googlesource.com/kernel/hikey-linaro">https://android.googlesource.com/kernel/hikey-linaro</a></code>
<code class="devsite-terminal">cd hikey-linaro</code>
<code class="devsite-terminal">git checkout -b android-hikey-linaro-4.9 origin/android-hikey-linaro-4.9</code>
<code class="devsite-terminal">make ARCH=arm64 hikey_defconfig</code>
<code class="devsite-terminal">make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- -j24</code>
</pre>
</li>
<li>Copie a saída para o diretório hikey-kernel (<code>/kernel/hikey-linaro</code>):
<ul>
<li>Copie hi6220-hikey.dtb (<code>arch/arm64/boot/dts/hisilicon/hi6220-hikey.dtb</code>) para o diretório hikey-kernel como o arquivo hi6220-hikey.dtb-4.9.</li>
<li>Copie o arquivo de imagem <code>(arch/arm64/boot/Image.gz-dtb</code>) para o diretório hikey-kernel como o arquivo Image.gz-dtb-4.9.</li>
</ul>
</li><li>Crie a imagem de inicialização:
<pre class="devsite-terminal devsite-click-to-copy">
make bootimage -j24
</pre>
</li>
</ol>
<h3 id="620resolution">Como definir a resolução do monitor</h3>
<p>Edite o parâmetro <code>BOARD_KERNEL_CMDLINE</code> do <code>device/linaro/hikey/hikey/BoardConfig.mk</code> e defina a configuração de <code>video</code>.
Exemplo de configuração para um monitor de 24": <code>video=HDMI-A-1:1280x800@60</code>.</p>
<h3 id="620serial">Como configurar a saída de série do kernel (uart3)</h3>
<p>Defina o conector de expansão de baixa velocidade J2 para 1 - Gnd, 11 - Rx, 13 - Tx.</p>
<h2 id="neonkey">Neonkey SensorHub</h2>
<p>Para desenvolver novos recursos do ContextHub que usam os novos sensores ou LEDs, você pode usar um <a href="http://www.96boards.org/product/neonkey/" class="external">Neonkey SensorHub</a> conectado a uma placa de desenvolvimento Hikey ou Hikey960.</p>
<img src="../images/neonkey-sensorhub.png" alt="Imagem do Neonkey Sensorhub"/>
<figcaption><strong>Figura 3.</strong> Neonkey SensorHub</figcaption>
<p>O Neonkey é uma base de mezanino <a href="http://www.96boards.org/" class="external">96Boards</a> certificada no STM32F411CE com os seguintes componentes:</p>
<ul>
<li>Sensor de pressão: BMP280</li>
<li>ALS/Sensor de proximidade: RPR-0521RS</li>
<li>Sensor ARM Hall: MRMS501A</li>
<li>Driver de LED com 15 LEDs: LP3943</li>
<li>Sensores de aceleração/giroscópio + geomagnético: BMI160 + BMM150</li>
<li>Sensor de temperatura/umidade: SI7034-A10</li>
<li>4 LEDs acionados por GPIO, expansão de I2C, expansão de GPIO (duas linhas) e conector JTAG</li>
<li>Flash NOR: 512 KB</li>
<li>SRAM: 128 KB, conector de expansão LS da 96boards</li>
</ul>
<p>O suporte para a origem do kernel e a placa ContextHub estão disponíveis no AOSP para ajudar os desenvolvedores a criar e depurar novos sensores, fazer novas alterações na HAL e no kernel etc., com menos ônus para OEMs.</p>
<p>Para criar, ativar e carregar o Neonkey:</p>
<ol>
<li>Adquira a origem do AOSP:
<pre class="devsite-terminal">
repo init -u https://android.googlesource.com/platform/manifest -b master &amp; repo sync -j24
</pre>
</li>
<li>Crie:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">. ./build/envsetup.sh</code>
<code class="devsite-terminal">lunch hikey-userdebug</code>
<code class="devsite-terminal">. device/google/contexthub/firmware/toolchain-setup.sh</code>
<code class="devsite-terminal">make -C device/google/contexthub/firmware/variant/neonkey</code>
<code class="devsite-terminal">adb push device/google/contexthub/firmware/out/nanohub/neonkey/full.bin /data/local/tmp</code>
</pre>
</li>
<li>Para ativar o Neonkey, entre no modo de inicialização usando o seguinte método:
<ol>
<li>Conecte o BOOT0 a 1V8 (ligue os pinos JTAG P4 1-5).</li>
<li>Segure o botão USR.</li>
<li>Pressione o botão RST.</li>
</ol>
</li>
<li>Para fazer upload do firmware:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">adb root</code>
<code class="devsite-terminal">adb shell stm32_flash -u -d /dev/ttyAMA2 -e 0xffff -w /data/local/tmp/full.bin</code>
</pre>
</li>
<li>Para criar a HAL do espaço do usuário:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">make TARGET_SENSOR_MEZZANINE=neonkey -j24</code>
<code class="devsite-terminal">fastboot flashall</code>
</pre>
</li>
</ol>
</body></html>