06.08.2020 Asymmetric multiprocessing

Материал из SRNS
Перейти к: навигация, поиск
(Новая страница: «<summary [ hidden ] > <center>400px</center> Сборка PetaLinux для кастомной железки </summary> {{Форма2}} == …»)
 
 
(не показаны 9 промежуточных версий 2 участников)
Строка 3: Строка 3:
 
<center>[[File:AMP.png|400px]]</center>
 
<center>[[File:AMP.png|400px]]</center>
  
Сборка PetaLinux для кастомной железки
+
Использование ядер процессора отдельно под linux/RTOS
  
 
</summary>
 
</summary>
  
{{Форма2}}
+
== INTRO ==
 +
Качаем читаем [[:File:ug1186-zynq-openamp-gsg-6_2017.4.pdf]]
  
== Требования ==
+
== petalinux-config ==
 +
Высталяем стартовый адрес для ядра не ноль. Предположительно rtos не умеет стартовать не с 0-го адреса, но это вроде хрень. В клоникус выставляем:
 +
<source lang="bash">
 +
Subsystem AUTO ... ->
 +
    Memory Settings ->
 +
          kernel base address ->
 +
              0x1000000
 +
</source>
  
 +
== petalinux-config -c kernel ==
 +
Убеждаемся в том, что все включено, как в даташите. Реально нужно самостоятельно включить:
 +
<source lang="bash">
 +
Kernel Features ... ->
 +
    Memory split->
 +
          2G/2G
 +
</source>
  
 +
== petalinux-config -c rootfs ==
 +
Включаем нужные либы
 +
 +
Эта может быть и не нужна...
 +
<source lang="bash">
 +
    Location:
 +
        -> Filesystem Packages
 +
            -> libs
 +
                -> open-amp
 +
</source>
 +
 +
== Device tree ==
 +
В более старых версиях petalinux (2017.1) использовалось поле '''sram0''', сейчас '''srams'''
 +
<source lang="bash">
 +
/include/ "system-conf.dtsi"
 +
/ {
 +
    reserved-memory {
 +
        #address-cells = <1>;
 +
        #size-cells = <1>;
 +
        ranges;
 +
        rproc_0_reserved: rproc@e000000 {
 +
            no-map;
 +
            reg = <0xe000000 0x01000000>;
 +
        };
 +
    };
 +
    amba {
 +
        elf_ddr_0: ddr@0 {
 +
            compatible = "mmio-sram";
 +
            reg = <0xe000000 0x400000>;
 +
        };
 +
    };
 +
    remoteproc0: remoteproc@0 {
 +
        compatible = "xlnx,zynq_remoteproc";
 +
        firmware = "firmware";
 +
        vring0 = <15>;
 +
        vring1 = <14>;
 +
        srams = <&elf_ddr_0>;
 +
    };
 +
};
 +
</source>
 +
 +
== Запуск ==
 +
Закидываем name.elf в /lib/firmware/
 +
 +
Указываем путь к шашему .elf
 +
<source lang="bash">
 +
echo name.elf > /sys/class/remoteproc/remoteproc0/firmware
 +
</source>
 +
 +
Запускаем:
 +
<source lang="bash">
 +
echo start > /sys/class/remoteproc/remoteproc0/state
 +
</source>
  
 
[[Категория:HOWTO]]
 
[[Категория:HOWTO]]

Текущая версия на 12:17, 5 мая 2022

Содержание

[править] INTRO

Качаем читаем File:ug1186-zynq-openamp-gsg-6_2017.4.pdf

[править] petalinux-config

Высталяем стартовый адрес для ядра не ноль. Предположительно rtos не умеет стартовать не с 0-го адреса, но это вроде хрень. В клоникус выставляем:

Subsystem AUTO ... ->
     Memory Settings ->
          kernel base address ->
               0x1000000

[править] petalinux-config -c kernel

Убеждаемся в том, что все включено, как в даташите. Реально нужно самостоятельно включить:

Kernel Features ... ->
     Memory split->
          2G/2G

[править] petalinux-config -c rootfs

Включаем нужные либы

Эта может быть и не нужна...

    Location:
        -> Filesystem Packages
            -> libs
                -> open-amp

[править] Device tree

В более старых версиях petalinux (2017.1) использовалось поле sram0, сейчас srams

/include/ "system-conf.dtsi"
/ {
    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        rproc_0_reserved: rproc@e000000 {
            no-map;
            reg = <0xe000000 0x01000000>;
        };
    };
    amba {
        elf_ddr_0: ddr@0 {
            compatible = "mmio-sram";
            reg = <0xe000000 0x400000>;
        };
    };
    remoteproc0: remoteproc@0 {
        compatible = "xlnx,zynq_remoteproc";
        firmware = "firmware";
        vring0 = <15>;
        vring1 = <14>;
        srams = <&elf_ddr_0>;
    };
};

[править] Запуск

Закидываем name.elf в /lib/firmware/

Указываем путь к шашему .elf

echo name.elf > /sys/class/remoteproc/remoteproc0/firmware

Запускаем:

echo start > /sys/class/remoteproc/remoteproc0/state

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты