TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 (изменено) · Жалоба Приветствую! подскажите что не так с инструкциями BX, BLX. В мануалах пишут что необходимо в регистре, в котором инструкции передается адрес перехода, нулевой бит устанавливать в единицу, иначе генерируется UsageFault. Но это не работает, МК "повисает", в том что адрес верный, я уверен на 100% если в нулевом разряде 0, то хардфаулт. в общем и так не так, и эдак с чем это может быть связано? речь о cortex M7 Изменено 7 мая, 2019 пользователем TTTTTTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 21 minutes ago, TTTTTTS said: В мануалах пишут что необходимо в регистре, в котором инструкции передается адрес перехода, нулевой бит устанавливать в единицу, иначе генерируется UsageFault. Почитайте примечание внизу по этой ссылке. Оно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба Вы невнимательны 23 минуты назад, TTTTTTS сказал: В мануалах пишут что необходимо в регистре, в котором инструкции передается адрес перехода, нулевой бит устанавливать в единицу, иначе генерируется UsageFault. Но это не работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба Покажите "мануал", где вы это вычитали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 (изменено) · Жалоба ARM Cortex-M7 Devices Generic User Guide страница 128 вернее страница 174. там внизу написано 3-128 подумал что это номер страницы The BX and BLX instructions result in a UsageFault exception if bit[0] of Rm is 0 For BX and BLX, bit[0] of Rm must be 1 for correct execution but a branch occurs to the target address created by changing bit[0] to 0 Изменено 7 мая, 2019 пользователем TTTTTTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 39 минут назад, TTTTTTS сказал: подскажите что не так с инструкциями BX, BLX. В мануалах пишут что необходимо в регистре, в котором инструкции передается адрес перехода, нулевой бит устанавливать в единицу, иначе генерируется UsageFault. Но это не работает, МК "повисает", в том что адрес верный, я уверен на 100% Купили Cortex-M7, а на эмулятор нет денег? Разоритесь уже, чтобы не страдать такой ерундой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 17 minutes ago, TTTTTTS said: ARM Cortex-M7 Devices Generic User Guide страница 128 Стр. 3-181: "Use NOP for padding, for example to place the following instruction on a 64-bit boundary". Оно? зы Прекращайте писать на ASM на этом "жалком" CM7, возьмите для этой важной задачи ядро по-серьезнее :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 1 минуту назад, jcxz сказал: Купили Cortex-M7, а на эмулятор нет денег? Разоритесь уже, чтобы не страдать такой ерундой. какой эмулятор? я в кейле отладчиком смотрел, в железе. когда в регистре 0 бит равен 0- то выкидывает в хардфаулт когда в регистре 0 бит равен 1 то поведение кейла при отладке мне не ясно, он повисает как будто работает некоторый цикл на микроконтроллере, стоит нажать стоп и я вижу что выкинуло на какой то адрес, совсем не тот на который я планировал, каждый раз этот адрес иной, в зависимости от того когда нажать стоп Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 6 minutes ago, TTTTTTS said: я в кейле отладчиком смотрел, в железе. Вот теперь наконец-то подбираемся к сути проблемы! В 99.9999% подобных случаев проблема в коде, а не в ядре проца, как ошибочно многим кажется ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 53 minutes ago, TTTTTTS said: в том что адрес верный, я уверен на 100% Значит, надо довести уверенность до 146%. Другого объяснения нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 2 минуты назад, Forger сказал: Use NOP for padding, for example to place the following instruction on a 64-bit boundary а причем здесь NOP? нет разницы что там по этому адресу, ноп или не ноп, процессор ведет себя одинаково в моем случае Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 11 минут назад, TTTTTTS сказал: когда в регистре 0 бит равен 1 то поведение кейла при отладке мне не ясно, он повисает как будто работает некоторый цикл на микроконтроллере, стоит нажать стоп и я вижу что выкинуло на какой то адрес, совсем не тот на который я планировал, каждый раз этот адрес иной, в зависимости от того когда нажать стоп Значит у вас что-то не в порядке с этим самым кейлом или эмулятором. Следите за руками. Шаг 1: Шаг 2: Как видно всё работает чётко. Да и не может не работать: в любой программе вагон этих инструкций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба 13 минут назад, TTTTTTS сказал: когда в регистре 0 бит равен 1 то поведение кейла при отладке мне не ясно, он повисает как будто работает некоторый цикл на микроконтроллере, стоит нажать стоп и я вижу что выкинуло на какой то адрес, совсем не тот на который я планировал, каждый раз этот адрес иной, в зависимости от того когда нажать стоп Ищите в опциях отладчика галку, которая называется как то типа "Запретить прерывания при пошаговой отладке". И возможно произойдёт чудо! Не знаю где она в Кейле, ибо пользую IAR. Но она должна быть. Возможно у вас просто за время шага успевает произойти какое-то прерывание. Вот в него и улетаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба Покажите оригинальный кусок кода, по аналогии с картинками коллеги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TTTTTTS 0 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба все заработало. спасибо за помощь. натупил я, пол дня коту под хвост Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться