Jump to content

    

инструкция BX

8 minutes ago, TTTTTTS said:

все заработало.

Так поделитесь, в чем был косяк?

Иначе тема не закончена :\

Share this post


Link to post
Share on other sites
8 минут назад, Forger сказал:

Так поделитесь, в чем был косяк?

галку нашёл  :biggrin:

Share this post


Link to post
Share on other sites
32 минуты назад, jcxz сказал:

галку нашёл

все куда банальнее, ноль лишний добавил в адрес перехода.. раз десять адрес проверял, как не заметил не пойму

Share this post


Link to post
Share on other sites
36 minutes ago, TTTTTTS said:

все куда банальнее, ноль лишний добавил в адрес перехода.

2 hours ago, Forger said:

В 99.9999% подобных случаев проблема  в коде, а не в ядре проца, как ошибочно многим кажется ;)

Теперь стало 100% :D

Share this post


Link to post
Share on other sites

Осталось разобраться, за что в адресе перехода отвечает младший бит и почему на ядре Cortex он должен быть всегда установлен. Чтобы не смотреть на него как на некое магическое число.

Share this post


Link to post
Share on other sites
2 часа назад, Сергей Борщ сказал:

Осталось разобраться, за что в адресе перехода отвечает младший бит и почему на ядре Cortex он должен быть всегда установлен. Чтобы не смотреть на него как на некое магическое число.

с этим проблем небыло

Share this post


Link to post
Share on other sites
1 hour ago, MasterElectric said:

Отвечает за переход в HardFault

За переключение в режимы Thumb/Arm.

Share this post


Link to post
Share on other sites
1 hour ago, haker_fox said:

За переключение в режимы Thumb/Arm.

ага, от старого ARM7TDMI осталося

режима ARM нету уже, а бит остался :)

Share this post


Link to post
Share on other sites
8 minutes ago, yes said:

режима ARM нету уже, а бит остался :)

Это если игнорировать все буквы, кроме 'M'.

Share this post


Link to post
Share on other sites

интересно другое, почему в регистре LR для возврата используются такие странные значения, почему в нем нет просто адреса куда надо вернуться, для чего так было сделано. зачем это усложнение

Share this post


Link to post
Share on other sites
1 hour ago, TTTTTTS said:

почему в регистре LR для возврата используются такие странные значения

Отображение этого бита зависит от используемой ID. У некоторых id этот бит автоматом прибавляется/удаляется, чтобы не мозолить глаза и не путать пользователя.

Интересно другое - в какой такой хитрой задаче потребовалось менять адрес возврата, там-же за всегда каша получается.

Share this post


Link to post
Share on other sites
3 минуты назад, AVI-crak сказал:

Интересно другое - в какой такой хитрой задаче потребовалось менять адрес возврата, там-же за всегда каша получается

так в обработчике прерывания вы же уже не видите откуда произошел переход, у вас в LR вместо адреса значение EX RETURN.

или я чего-то незнаю? подскажите как узнать реальный адрес возврата

Share this post


Link to post
Share on other sites
28 minutes ago, TTTTTTS said:

или я чего-то незнаю? подскажите как узнать реальный адрес возврата

Посмотреть, что в стеке лежит. Описание прерываний, в частности, сохраняемой информации и EXC_RETURN -- либо в документации на архитектуру (на англ, естественно), либо, например, здесь (на рус).

Share this post


Link to post
Share on other sites
8 минут назад, SII сказал:

Посмотреть, что в стеке лежит.

а в стек запишется реальный адрес возврата?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now