реклама на сайте
подробности

 
 
> STM32F100RB не выполняет инструкцию "IT NE"?
turalon
сообщение Jun 26 2013, 08:50
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 26-06-13
Пользователь №: 77 284



Пример:

MOV R0, #2
CMP R0, #2
IT NE
MOVNE R0, #1

Последняя инструкция не должна выполняться, т.е. в R0 должно остаться 2, но там 1!
В официальных errata-х такого бага нет.
Симулятор от IAR этот пример обрабатывает правильно. А на самом чипе, через J-Link - не работает (игнорирует IT команду и выполняет MOVNE R0, #1).
Другие варианты условий, например IT EQ, работают нормально.
Еще пробовал STM32F100R6 вместо RB - тот же баг.

Почему этот баг до сих пор никто не заметил, ведь IT NE - не самая редко используемая команда?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jun 27 2013, 04:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



знать да. использовать?...
На данный момент в армах я считаю что если твой проц задачу не тянет, лучше поставить следующий по мощнее, чем запутать исходники ассемблером и сделать проект практически не поддерживаемым другими и в будующем...

В том числе и исключения и прочее, особенно аварийные ситуации, через пол года, год, подохнешь этот огород разбирать, что там и зачем было...

Ну это мое мнение, я его не навязываю...
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 27 2013, 05:44
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Golikov A. @ Jun 27 2013, 08:41) *
В том числе и исключения и прочее, особенно аварийные ситуации, через пол года, год, подохнешь этот огород разбирать, что там и зачем было...

Вот обработчик исключительной ситуации:
Код
HardFaultException:
    mov  r0, sp
    push {lr}
    bl   print_fault
    pop  {pc}

в котором вызывается функция на C print_fault с одним аргументом.
Код
void print_fault(sFAULT    *fault)
{
    con_str("FAULT:\n\r");
    con_str("r0   = "); con_dword(fault->r0); con_str(", ");
    con_str("r1   = "); con_dword(fault->r1); con_str(", ");
    con_str("r2   = "); con_dword(fault->r2); con_str(", ");
    con_str("r3   = "); con_dword(fault->r3); con_str("\n\r");
    con_str("r12  = "); con_dword(fault->r12); con_str(", ");
    con_str("lr   = "); con_dword(fault->lr); con_str(", ");
    con_str("pc   = "); con_dword(fault->pc); con_str(", ");
    con_str("xpsr = "); con_dword(fault->xpsr); con_str("\n\r");
    con_start();
}

Как без asm-вставки передать в качестве аргумента в функцию текущее значение указателя стека?
На asm, как Вы видите, все элементарно и никакой путаницы.

Хотя, в данном случае, "огород" получился слишком маленький.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- turalon   STM32F100RB не выполняет инструкцию "IT NE"?   Jun 26 2013, 08:50
- - scifi   Да нет, конечно, не может быть такого бага. Ищите,...   Jun 26 2013, 09:24
- - jcxz   Цитата(turalon @ Jun 26 2013, 14:50) Поче...   Jun 26 2013, 09:43
- - turalon   Проблема вылечилась обновлением JLinkARM.dll в пап...   Jun 26 2013, 12:13
|- - adnega   Цитата(turalon @ Jun 26 2013, 16:13) Проб...   Jun 26 2013, 13:06
- - turalon   Оказывается проблема есть только при отладке по ша...   Jun 26 2013, 13:46
|- - Dron_Gus   Цитата(turalon @ Jun 26 2013, 17:46) Оказ...   Jun 27 2013, 08:01
- - Golikov A.   Из всего этого у меня остается одна загадки истори...   Jun 26 2013, 15:25
|- - adnega   Цитата(Golikov A. @ Jun 26 2013, 19:25) И...   Jun 26 2013, 15:47
|- - turalon   Цитата(Golikov A. @ Jun 26 2013, 18:25) И...   Jun 27 2013, 17:39
||- - _Артём_   Цитата(turalon @ Jun 27 2013, 20:39) Асм ...   Jun 27 2013, 19:19
||- - paskal   Цитата(_Артём_ @ Jun 27 2013, 23:19) Как ...   Jun 27 2013, 20:19
||- - adnega   Цитата(paskal @ Jun 28 2013, 00:19) А вы ...   Jun 28 2013, 04:33
|- - paskal   Цитата(Golikov A. @ Jun 26 2013, 19:25) Н...   Jun 27 2013, 18:39
- - ViKo   Ассемблер ARM трудно знать досконально, но понимат...   Jun 27 2013, 19:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 14:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016