Кросс-компиляция на Linux

При предназначении для макетной платы NVIDIA® Tegra® от MATLAB®, на котором работают, операционная система Linux состоит из пяти задач.

  • Сконфигурируйте набор инструментальных средств кросс-компиляции

  • Установите Up & Configure CUDA® Environment

  • Сконфигурируйте проект GPU Coder™ для кросс-компиляции

  • Сгенерируйте аппаратную цель совместимый код и двоичные файлы

  • Развернитесь и запущенный приложение

Сконфигурируйте набор инструментальных средств кросс-компиляции

Первая задача получает и конфигурирует набор инструментальных средств для аппаратной цели. Кросс-скомпилированный набор инструментальных средств выполняется в хост-системе (в этом случае, 64-битный Linux®), но генерирует двоичный код для заданной аппаратной цели.

  • Для основанного на Tegra NVIDIA плата Jetson TK1 используйте Linaro 4.8 Linux для ARM\U 00AE\набор инструментальных средств. Загрузите релиз gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux tarball отсюда.

    Извлеките загруженные файлы. Извлеченная папка содержит подпапки bin, lib, и так далее. Установите переменную окружения LINARO_TOOLCHAIN_4_8 указывать на корневую папку набора инструментальных средств. В команде MATLAB запрашивают, введите:

    setenv('LINARO_TOOLCHAIN_4_8','//extracted/folder/path');
  • Для Jetson TX2 NVIDIA и плат TX1, используйте набор инструментальных средств Linaro 4.9 linux-to-aarch64. Загрузите релиз gcc-linaro-4.9-2016.02-x86_64_aarch64-linux-gnu tarball отсюда.

    После того, как загруженный, извлеките файлы. Извлеченная папка содержит подпапки bin, lib, и так далее. Установите переменную окружения LINARO_TOOLCHAIN_4_9 указывать на корневую папку набора инструментальных средств. В команде MATLAB запрашивают, введите:

    setenv('LINARO_TOOLCHAIN_4_9','//extracted/folder/path');

Установите Up & Configure среда CUDA

Следующая задача получает и конфигурирует целевую среду CUDA для кросс-компиляции. Эта среда является набором, включают файлы и библиотеки, обеспеченные NVIDIA для аппаратной цели. Скопируйте эти файлы непосредственно с целевого устройства. Для любой из плат NVIDIA Tegra скопируйте все файлы (включая подпапки) от /usr/local/cuda на целевом компьютере к местоположению на вашем компьютере разработчика. Обязательно не перезапишите любой из файлов CUDA на компьютере разработчика.

От терминала Linux можно выполнить операцию копии при помощи команды scp.

$> scp -r ubuntu@tegra-ubuntu:/usr/local/cuda ~/cuda-tegra-arm

Затем установите соответствующую переменную окружения указывать на целевую реализацию CUDA. Для NVIDIA Tegra X2, набор NVIDIA_CUDA_TX2. Для NVIDIA Tegra X1, набор NVIDIA_CUDA_TX1. Для NVIDIA Tegra K1, набор NVIDIA_CUDA_TK1

Например, в команде MATLAB запрашивают, введите:

setenv('NVIDIA_CUDA_TK1','~/cuda-tegra-arm');

Сконфигурируйте проект GPU Coder для кросс-компиляции

Сконфигурируйте проект GPU Coder для кросс-компиляции. Во-первых, создайте объект настройки кодера, и затем установите соответствующий набор инструментальных средств для аппаратной цели.

   cfg = coder.gpuConfig('exe');
   cfg.CustomSource = <main-file>

Для NVIDIA Tegra X2, набор набор инструментальных средств при помощи команды:

cfg.Toolchain = 'NVIDIA CUDA for Jetson Tegra X2 | gmake (64-bit Linux)';

Для NVIDIA Tegra X1, набор набор инструментальных средств при помощи команды:

cfg.Toolchain = 'NVIDIA CUDA for Jetson Tegra X1 | gmake (64-bit Linux)';

Для NVIDIA Tegra K1, набор набор инструментальных средств при помощи команды:

cfg.Toolchain = 'NVIDIA CUDA for Jetson Tegra K1 v6.5 | gmake (64-bit Linux)';

Сгенерируйте аппаратную цель совместимый код и двоичные файлы

Запустите команду codegen для своего приложения, задав статические входные параметры:

codegen -config cfg -args {<application-input} <application-name>

Папка codegen в текущей рабочей директории содержит сгенерированный код и двоичные файлы.

Развернитесь и запущенный приложение

Переместите созданное приложение <application.elf> в целевое устройство, и затем выполните его. Чтобы развернуть созданный исполняемый файл, передайте файл плате при помощи вашего предпочтительного клиента scp. Вам нужны имя хоста или IP-адрес вашей требуемой платы и username и password, чтобы получить доступ к нему. Для NVIDIA Tegra X2, X1 или K1 на терминале Linux, введите:

$> sshpass -p "password" scp yourapplication.elf username@hostname

Затем войдите в систему платы, перейдите к папке, где ваш исполняемый файл расположен, и запустите свой исполняемый файл:

$> ssh username@hostname
$> cd applicationDirectory
$> ./yourapplication.elf

Смотрите также

| | |

Похожие темы