sábado, 1 de junho de 2024

MILK-V Gerando IMG



MILK-V Gerando IMG


O SDK padrão do Duo é construído com base no buildroot e é usado para gerar o firmware do Duo. O SDK contém principalmente as seguintes partes:
  • u-boot: 2021.10
  • linux kernel: 5.10.4
  • buildroot: 2021.05
  • opensbi: 89182b2
Código fonte

Neste blog, a imagem foi gerada no ambiente WSL do WINDOWS 10 (Ubuntu)

Roteiro:

sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tcl openssh-client cmake expect


git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1

Execute o script de compilação com um clique build.sh:

cd duo-buildroot-sdk/
./build.sh


Você verá dicas sobre como usar o script compilado:

# ./build.sh
Usage:
./build.sh              - Show this menu
./build.sh lunch        - Select a board to build
./build.sh [board]      - Build [board] directly, supported boards asfollows:
milkv-duo
milkv-duo256m

Listada na parte inferior está a lista de versões de destino atualmente suportadas.

Conforme mostrado no prompt, existem duas maneiras de compilar a versão de destino.

O primeiro método é executar ./build.sh lunch para abrir o menu interativo, selecionar o número da versão a ser compilada e pressionar Enter:

# ./build.sh lunch


Selecione o destino para Build

1. milkv-duo
2. milkv-duo256m

O qual você gostaria

O segundo método é colocar o nome da versão de destino após o script e compilá-lo diretamente. Por exemplo, se você precisar compilar a imagem de milkv-duo, o comando é o seguinte:

# ./build.sh milkv-duo




Após uma compilação bem-sucedida, você pode encontrar a imagem de gravação gerada milkv-duo-*-*.img no diretório out



Nota: A primeira compilação baixará automaticamente o conjunto de ferramentas necessário, que tem aproximadamente 840 MB. Depois de baixado, ele será extraído automaticamente para o host-tools diretório do SDK. Para compilações subsequentes, caso o diretório host-tools  seja detectado, o download não será realizado novamente .

Sobre o WSL

Se você deseja realizar a compilação com WSL, há um pequeno problema no Build da imagem. O $PATH, devido à interoperabilidade do Windows, possui variáveis ​​de ambiente do Windows que incluem alguns espaços entre os caminhos.

Para resolver este problema você precisa alterar o arquivo /etc/wsl.conf  e adicionar as seguintes linhas:

[interop]
appendWindowsPath = false

Depois disso, você precisa reiniciar o WSL com wsl.exe --reboot. Então você poderá executar o script ./build.sh ou a linha build_all no método de compilação passo a passo. Para reverter esta alteração no arquivo /etc/wsl.conf definido appendWindowsPath como verdadeiro. Para reinicializar o WSL, você pode usar o comando do Windows PowerShell wsl.exe --shutdown então  wsl.exe, depois disso as variáveis ​​de ambiente do Windows ficam disponíveis novamente em $PATH.

Você pode pegar imagens (IMG) prontas em

Releases · milkv-duo/duo-buildroot-sdk (github.com), o qual inclui a LIB WIRING (C++), a qual será discutida futuramente, bem como PINGPONG (Python)

Make Menuconfig

Um grande número de pacotes de aplicativos estão predefinidos no Buildroot. Os programas necessários são gerados baixando o código-fonte e compilando-os. Os pacotes de aplicativos predefinidos do Buildroot podem ser visualizados no diretório  buildroot-2021.05/package.

A configuração para ativar ou desativar um pacote de aplicativos é implementada no arquivo de configuração do quadro de destino. Tomando o alvo milkv-duo como exemplo, seu arquivo de configuração buildroot é:

buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig

Podemos compilar o SDK como um todo no host (como Ubuntu) e, em seguida, ir para o diretório de compilação Buildroot para configurar os pacotes de aplicativos relevantes por meio da interação do menu de linha de comando.


Entre no diretório de compilação Buildroot


cd buildroot-2021.05/output/milkv-duo_musl_riscv64


Você pode usar o comando 
make show-targets para visualizar os pacotes de aplicativos usados ​​atualmente:

$ make show-targets
busybox coreutils dhcpcd dnsmasq dropbear duo-pinmux e2fsprogs evtest expat fio freetype gdb host-acl host-attr host-autoconf host-automake host-e2fsprogs host-fakeroot host-genimage host-libtool host-libzlib host-m4 host-makedevs host-mkpasswd host-patchelf host-pkgconf host-skeleton host-util-linux host-xz host-zlib htop ifupdown-scripts initscripts iperf3 json-c kmod libevent libffi libnl libopenssl libxml2 libxslt libzlib musl-compat-headers ncurses ntp openssl python-cffi python-evdev python-freetype python-lxml python-modbus-tk python-pillow python-pinpong python-pip python-psutil python-pycparser python-serial python-setuptools python-smbus-cffi python-spidev python3 skeleton skeleton-init-common skeleton-init-sysv spidev_test strace stress-ng tar toolchain toolchain-external toolchain-external-custom urandom-scripts util-linux wpa_supplicant zlib rootfs-ext2 rootfs-tar



Configurar o Buildroot

Execute o comando make menuconfig para abrir o menu interativo:

Encontre o pacote de aplicativos necessário de acordo com a classificação em Target packages. Se você não souber a localização específica do pacote de aplicativos, poderá pressionar a /tecla para pesquisar o nome do pacote. Por exemplo, se você deseja instalar o comando tar, já que a pesquisa tar trará muitos outros conteúdos irrelevantes, você pode pesquisar por package_tar. E veja que =n está desativado no momento. Sua localização está na categoria System tools de Target packages. Você pode clicar duas vezes na tecla ESC para retornar à página principal. Em seguida, insira a posição correspondente na interface, ou você pode inserir diretamente a posição de acordo com o número solicitado anteriormente:



Pressione a barra de espaço para ativar:



Clique duas vezes na tecla 
ESC continuamente para sair da interface principal. Quando perguntado se deseja salvar, o padrão é SIM. Basta pressionar Enter para salvar e sair:


Execute o comando 
make savedefconfig para salvar a configuração modificada no arquivo de configuração original. Use o comando  git status para confirmar. Você pode ver que o arquivo de configuração original foi modificado:


Neste ponto, volte para o diretório raiz do SDK e recompile.

DICA

Aqui você também pode comparar as diferenças entre o arquivo de configuração antigo e o novo arquivo de configuração no diretório de compilação e modificar manualmente as partes que precisam ser alteradas diretamente no arquivo de configuração original
milkv-duo_musl_riscv64_defconfig:

diff -u .config.old .config

Depois de começar com a imagem recém-compilada, teste o comando recém-adicionado no dispositivo Duo. Se not foundocorrer um erro, pode ser que o arquivo .mk  de configuração do pacote precise ser complementado com parâmetros gcc, principalmente TARGET_CFLAGS e Os dois parâmetros TARGET_LDFLAGS precisam ser adicionados. Você pode consultar os seguintes commits:

  1. buildroot: enable fio
  2. buildroot: enable spidev_test
  3. buildroot: fix build parameter for coremark package

Questões: suporte@smartcore.com.br


Referências

Sobre a SMARTCORE

A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES.

Nenhum comentário:

Postar um comentário