06.08.2020 Asymmetric multiprocessing
Материал из SRNS
Lipa (обсуждение | вклад) |
Lipa (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 6: | Строка 6: | ||
</summary> | </summary> | ||
− | |||
− | |||
== INTRO == | == INTRO == | ||
Строка 15: | Строка 13: | ||
Высталяем стартовый адрес для ядра не ноль. Предположительно rtos не умеет стартовать не с 0-го адреса, но это вроде хрень. В клоникус выставляем: | Высталяем стартовый адрес для ядра не ноль. Предположительно rtos не умеет стартовать не с 0-го адреса, но это вроде хрень. В клоникус выставляем: | ||
<source lang="bash"> | <source lang="bash"> | ||
− | Subsystem AUTO ... -> | + | Subsystem AUTO ... -> |
Memory Settings -> | Memory Settings -> | ||
kernel base address -> | kernel base address -> | ||
Строка 41: | Строка 39: | ||
== Device tree == | == Device tree == | ||
+ | В более старых версиях petalinux (2017.1) использовалось поле '''sram0''', сейчас '''srams''' | ||
<source lang="bash"> | <source lang="bash"> | ||
/include/ "system-conf.dtsi" | /include/ "system-conf.dtsi" |
Текущая версия на 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
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.