-
- Вообще странное желание сделать все руками вместо железа. А по делу: мимокрокодил(467 знак., 28.01.2016 17:29, )
- Собрал таки вундервафлю, но есть два вопроса, важный и бонусный (ибо обошелся): rual(379 знак., 11.02.2016 12:38 - 12:51)
- Это регулируется calling convention, для арма - AAPCS мимокрокодил(610 знак., 11.02.2016 14:44, )
- Спасибо за исчерпывающий ответ! На счет выравнивания стека - слышал, сохраняю регистры минимум парами, а вот в дизасм кейла видел одиночное и тройное сохранение, типа PUSH {R4-R5,LR} и {LR}... странно. - rual(11.02.2016 19:08)
- Иногда можно мимокрокодил(297 знак., 11.02.2016 22:30, )
- Спасибо за исчерпывающий ответ! На счет выравнивания стека - слышал, сохраняю регистры минимум парами, а вот в дизасм кейла видел одиночное и тройное сохранение, типа PUSH {R4-R5,LR} и {LR}... странно. - rual(11.02.2016 19:08)
- Это регулируется calling convention, для арма - AAPCS мимокрокодил(610 знак., 11.02.2016 14:44, )
- Вот спасибо!Компилятор Кейл, действительно добавляет мл.бит в адрес. Я так понял, что нужно при сохранении в стеке мл.бит добавить, и при вытаскивании всё будет нормально?
Завтра проверю.Проверил - работает! )) rual(208 знак., 28.01.2016 19:46 - 20:52)- SCB->STIR вам в помощь. Навесьте ваш handler на неиспользуемое прерывание, выставьте приоритет по вкусу. Дальше из SVC-обработчика взводите это прерывание. Железо все сделает за вас. И это будет надежно и даже довольно-таки портабельно. - Lightelf(01.02.2016 23:10)
- Непонятно, какая идея за этим стоит. мимокрокодил(202 знак., 28.01.2016 22:26, )
- Идея получить диспетчер программных прерываний, т.е. вызвал пускатель с указателем на обработчик, чтобы обработчики дергали друг друга за хвост типа: данные_готовы - нормализация - расчёт - реакция_на_изменение, и чтоб приоритеты соблюдались. В rual(113 знак., 01.02.2016 08:37)
- А просто вызвать из одного прерывания другое не получается? Обычно есть дофига свободных прерываний. Опять же можно VTOR на ОЗУ установить и менять вектора на ходу (это если свободных не хватает). Или я чего-то не понял в задаче? - Lightelf(01.02.2016 22:56)
- Непосредственно из прерывания получится (сейчас оно так и есть), но только там вычисления местами тяжелые, надолго аппаратуру держит. Вызывать другое прерывание можно, но сложно контролировать необработанные вызовы, да и для добавления нужно rual(85 знак., 02.02.2016 21:01 - 21:27)
- Совсем универсально - это RTOS с поддержкой deferred procedure calls, вроде в FreeRTOS такое появилось не так давно. - Lightelf(02.02.2016 22:11)
- Непосредственно из прерывания получится (сейчас оно так и есть), но только там вычисления местами тяжелые, надолго аппаратуру держит. Вызывать другое прерывание можно, но сложно контролировать необработанные вызовы, да и для добавления нужно rual(85 знак., 02.02.2016 21:01 - 21:27)
- А просто вызвать из одного прерывания другое не получается? Обычно есть дофига свободных прерываний. Опять же можно VTOR на ОЗУ установить и менять вектора на ходу (это если свободных не хватает). Или я чего-то не понял в задаче? - Lightelf(01.02.2016 22:56)
- Идея получить диспетчер программных прерываний, т.е. вызвал пускатель с указателем на обработчик, чтобы обработчики дергали друг друга за хвост типа: данные_готовы - нормализация - расчёт - реакция_на_изменение, и чтоб приоритеты соблюдались. В rual(113 знак., 01.02.2016 08:37)
- Граммар наци напоминает: у вас то hendler, то lautcher. Не тут ли собака порылась? :-) - SciFi(28.01.2016 20:54)
- Собрал таки вундервафлю, но есть два вопроса, важный и бонусный (ибо обошелся): rual(379 знак., 11.02.2016 12:38 - 12:51)
- Вообще странное желание сделать все руками вместо железа. А по делу: мимокрокодил(467 знак., 28.01.2016 17:29, )