loading

O objetivo desse tutorial é disponibilizar os passos necessários para habilitar comunicação SPI no sistema operacional Linux Linaro baseado em Debian (Versão 17.04.1) e plataforma de desenvolvimento Dragonboard 410c.

Step 1: Pré Requisitos

Os pré requisitos são:

Ambiente de desenvolvimento (Host):

Plataforma de desenvolvimento (Target):

Step 2: Cross Compile

Cross compile é um método utilizado para gerar executáveis de software para diferentes arquiteturas de computadores. É usado quando o ambiente de desenvolvimento (Host) tem arquitetura diferente do alvo (Dragonboard 410c).

Neste caso, estamos usando um computador/notebook x64 como Host para compilar e gerar os arquivos necessários para arquitetura ARM e posteriormente configurar na Dragonboard 410c.

Download GCC Linaro Cross Compile (Versão 6.3.1):

wget -c http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz

Definindo um diretório para o Toolchain (Cross Compile):

tar -xJf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/

Step 3: Git Clone Do Kernel

Clone do Kernel usado no sistema operacional Linux Linaro 17.04.1

Obtendo o Kernel:

git clone -n http://git.linaro.org/landing-teams/working/qualcomm/kernel.git
cd kernel
git checkout -b kernel-17.04.1 debian-qcom-dragonboard410c-17.04.1

Step 4: Adicionando Suporte SPI No Device Tree (DTB)

Considerando que estamos no diretório do Kernel, seguem os passos para adicionar suporte SPI no Device Tree do sistema.

Abra o arquivo (apq8016-sbc.dtsi)

vi arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi

Procure as linhas:

spi@78b7000 {
/* On High speed expansion */
      label = "HS-SPI1";
      status = "okay";
};


spi@78b9000 {
/* On Low speed expansion */
       label = "LS-SPI0";
       status = "okay";
};

Substitua por:

spi@78b7000 {
/* On High speed expansion */
      label = "HS-SPI1";
      status = "okay";
      spidev@0 {
            compatible = "spidev";
            spi-max-frequency = <50000000>;
            reg = <0>;
       };
};


spi@78b9000 {
/* On Low speed expansion */
      label = "LS-SPI0";
      status = "okay";
      spidev@0 {
            compatible = "spidev";
            spi-max-frequency = <50000000>;
            reg = <0>;
      };
};

Pronto! Salve o arquivo apq8016-sbc.dtsi

Step 5: Build Device Tree (DTB)

Definindo algumas variáveis:

export ARCH=arm64
export CROSS_COMPILE=/opt/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

Gerando o device tree (DTB):

make defconfig distro.config
make -j4 Image dtbs KERNELRELEASE=4.9.30-linaro-lt-qcom

Step 6: Build Boot Image

Antes de seguir os próximos passos, certifique-se que o pacote device-tree-compiler esteja instalado corretamente. Caso esteja usando Debian/Ubuntu como Host, você pode instalar da seguinte forma:

sudo apt-get install device-tree-compiler

Considerando que estamos no diretório raiz do Kernel:

  • O dtbTool irá processar o DTBs gerados para criar uma tabela:
git clone git://codeaurora.org/quic/kernel/skales
./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/
  • Para criar a imagem de boot também precisa do ramdisk image:
wget http://builds.96boards.org/releases/dragonboard410c/linaro/debian/17.04.1/initrd.img-4.9.30-linaro-lt-qcom
  • E por fim, usamos o mkbootimg para processar todos arquivos necessários e criar a imagem de inicialização:
./skales/mkbootimg --kernel arch/arm64/boot/Image \
--ramdisk initrd.img-4.9.30-linaro-lt-qcom \ --output boot-db410c.img \ --dt dt.img \ --pagesize 2048 \ --base 0x80000000 \ --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8"

Pronto! Feito isso temos o boot-db410c.img gerado.

Step 7: Testando a Interface SPI

Teste a interface SPI e verifique está funcionando corretamente.

About This Instructable

130views

4favorites

Bio: Frederico Martins Pedroso Junior, 28 years old, Computer Engineer.
More by fredpedroso:Desenvolvendo Aplicações Analógicas Para Dragonboard 410c Com Linker Sprite Mezzanine Fleshando Boot Image Com SPI Habilitado Na Dragonboard 410c Gerando Boot Image Com SPI Habilitado Para Dragonboard 410c 
Add instructable to: