Como compilar o módulo de driver para o BSP Jetson da Seeed
Quando o módulo de driver .ko necessário não está disponível no reComputer/reServer, você pode compilar o módulo de driver no Jetson e carregá‑lo. Este wiki demonstra as etapas específicas e observações importantes, usando o JetPack 6.2 como exemplo.
1. Preparar o ambiente de trabalho
Este artigo usa L4T 36.4.3, que corresponde ao BSP JetPack 6.2, como exemplo para mostrar como compilar o módulo de driver .ko para pl2303 (um driver relacionado a USB‑para‑serial) em reComputer/reServer.
Este tutorial faz o download do código‑fonte no Jetson e compila os módulos de kernel .ko.
Primeiro, faça o download do código‑fonte do BSP a partir do site oficial da NVIDIA de acordo com a sua versão do L4T.
Se você não tem certeza sobre a relação entre as versões do L4T e as versões do JetPack, pode consultar este link: https://developer.nvidia.com/embedded/jetpack-archive.

Procure o lançamento específico do L4T (Linux for Tegra) que você deseja compilar, por exemplo:

Baixe o código‑fonte do BSP correspondente no site da NVIDIA:

Coloque o arquivo compactado do código‑fonte do BSP baixado no seu diretório de trabalho e, em seguida, execute os seguintes comandos no terminal para extraí‑lo completamente:
# First extract the main file
tar -xjf public_sources.tbz2
# Enter the extracted directory
cd Linux_for_Tegra/source
# Recursively extract all .tbz2, .tar.bz2, .tar.gz, .tgz, .tar.xz files
find . -type f \( -name "*.tbz2" -o -name "*.tar.bz2" -o -name "*.tar.gz" -o -name "*.tgz" -o -name "*.tar.xz" \) -exec bash -c '
dir=$(dirname "$1")
filename=$(basename "$1")
cd "$dir"
if [[ "$filename" == *.tbz2 || "$filename" == *.tar.bz2 ]]; then
tar -xjf "$filename"
elif [[ "$filename" == *.tar.gz || "$filename" == *.tgz ]]; then
tar -xzf "$filename"
elif [[ "$filename" == *.tar.xz ]]; then
tar -xJf "$filename"
fi
cd - > /dev/null
' _ {} \;
Depois de extrair todos os arquivos compactados, navegue até Linux_for_Tegra/source e localize o caminho do código‑fonte do driver com base em palavras‑chave:
sudo find . -type f -name "*<keyword>*"
# For exmaple:
sudo find . -type f -name "*pl2303*"

Crie um novo ambiente de trabalho para compilação. De acordo com o caminho do código‑fonte impresso no terminal, copie o código‑fonte do driver para esse ambiente de trabalho.
Em seguida, dentro do ambiente de trabalho, crie um Makefile para compilação com o seguinte conteúdo:
obj-m += pl2303.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Aqui, pl2303.o deve ser substituído pelo nome correspondente do driver que você deseja compilar.
O ambiente de trabalho será semelhante ao da figura abaixo, contendo tanto o arquivo‑fonte quanto o Makefile:

Antes de compilar, você precisa criar um link simbólico:
# Remove existing redundant directory if it exists
sudo rm -r /lib/modules/$(uname -r)/build
# Create symbolic link
sudo ln -s /usr/src/linux-headers-$(uname -r)-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source /lib/modules/$(uname -r)/build
Após criar o link simbólico, execute o seguinte comando no seu ambiente de trabalho para compilar e obter o módulo de driver .ko :
make
Após a compilação, o arquivo .ko será gerado no diretório atual:

Em seguida, copie o arquivo .ko para o caminho de destino correto:
sudo cp pl2303.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
Para módulos de driver .ko compilados, o prefixo do caminho de destino é sempre /lib/modules/$(uname - r)/kernel/. O sufixo depende do tipo de módulo de driver e pode ser deduzido a partir do caminho relativo do código‑fonte, o que fornece o caminho completo de destino:

Depois de copiar para o caminho de destino, carregue o módulo de driver .ko:
sudo depmod -a
sudo modprobe pl2303
Quando o carregamento for bem‑sucedido, você pode executar modinfo <driver_name> para verificar:

Recursos
Suporte Técnico & Discussão de Produtos
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.