06.08.2020 Asymmetric multiprocessing
Материал из SRNS
Lipa (обсуждение | вклад) (Новая страница: «<summary [ hidden ] > <center>400px</center> Сборка PetaLinux для кастомной железки </summary> {{Форма2}} == …») |
Lipa (обсуждение | вклад) |
||
(не показаны 9 промежуточных версий 2 участников) | |||
Строка 3: | Строка 3: | ||
<center>[[File:AMP.png|400px]]</center> | <center>[[File:AMP.png|400px]]</center> | ||
− | + | Использование ядер процессора отдельно под linux/RTOS | |
</summary> | </summary> | ||
− | + | == 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
Memory Settings ->
kernel base address ->
0x1000000
[править] petalinux-config -c kernel
Убеждаемся в том, что все включено, как в даташите. Реально нужно самостоятельно включить:
Kernel Features ... ->
Memory split->
2G/2G
Memory split->
2G/2G
[править] petalinux-config -c rootfs
Включаем нужные либы
Эта может быть и не нужна...
Location:
-> Filesystem Packages
-> libs
-> open-amp
-> 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>;
};
};
/ {
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
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.