Size: a a a

2021 January 28

AK

Andrew K in Embedded Group
это я и пытаюсь сделать, проблема с возвратом
источник

AK

Andrew K in Embedded Group
с передачей параметров все получилось
источник

LZ

Leonid Zaliubovskii in Embedded Group
куда возвращать параметры то?
источник

LZ

Leonid Zaliubovskii in Embedded Group
если из прерывания, стесняюсь спросить - какхим хером?
источник

LZ

Leonid Zaliubovskii in Embedded Group
смотри - после того как ты вызовешь SVC у тебя случается SVC IRQ, оно по факту не подразумевает возврат данных. Так что и куда ты возвращать собрался то?
источник

IL

Ivan Loskutov in Embedded Group
как не подразумевает, сисколы у тебя код возврата не имеют?
источник

AK

Andrew K in Embedded Group
Leonid Zaliubovskii
если из прерывания, стесняюсь спросить - какхим хером?
через стек в r0
источник

IL

Ivan Loskutov in Embedded Group
не, стек тут мимо
источник

LZ

Leonid Zaliubovskii in Embedded Group
Andrew K
через стек в r0
каким макаром то?
источник

IL

Ivan Loskutov in Embedded Group
через r0, согласно calling convention
источник

LZ

Leonid Zaliubovskii in Embedded Group
из прерывания по R0, мммю Покажите мне этот ассемблерный код
источник

IL

Ivan Loskutov in Embedded Group
перед eret записываешь в r0 код возврата
источник

AK

Andrew K in Embedded Group
с этим все норм я проверял) ок доберусь до компа покажу
источник

LZ

Leonid Zaliubovskii in Embedded Group
основной вопрос, какое ядро? Cortex-M? Или Cortex-A
источник

IL

Ivan Loskutov in Embedded Group
ну или как у тебя вовхрат в вызов
источник

AK

Andrew K in Embedded Group
кортекс М
источник

IL

Ivan Loskutov in Embedded Group
ты там с регистрами намутил что-то, был квалификатор, который и на вход и на возврат регистр опеределял, типа =&r что-то, но лень гуглить
источник

IL

Ivan Loskutov in Embedded Group
т.е. D не нужен
источник

AK

Andrew K in Embedded Group
при возврате из прерывания восстанавливаются из стека r0-r3,  r12 и прочие вот в него то и пишу
источник

LZ

Leonid Zaliubovskii in Embedded Group
Andrew K
кортекс М
ты же понимаешь, что это как бы не совсем естественный путь - потому что код может не ожидать, что ты такое сделал в инлайне. Но технически это можно сделать. Главное понимать, что и зачем делаеш. И в идеале использовать naked function - чтобы менеджить регистры, которые ты трогаешь. Ну как мне кажется
источник