Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Результаты опроса: Запуск "на коленке" часть 2. Что дальше будем обсмакивать?
RTC (часы реального времени) 119 11.41%
USB 540 51.77%
Базовые навыки работы с портами ввода-вывода 247 23.68%
АЦП 108 10.35%
ЦАП 29 2.78%
Голосовавшие: 1043. Вы ещё не голосовали в этом опросе

 
Опции темы
Непрочитано 22.04.2011, 10:43  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от uk8amk Посмотреть сообщение
или его шина не резиновая и инструкция затянется на 8 тактов?
Растянется. И скорее всего больше чем на 8 тактов.
Реклама:
kison вне форума  
Непрочитано 22.04.2011, 13:04  
akzamit
Частый гость
 
Аватар для akzamit
 
Регистрация: 15.07.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
akzamit на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

добрый день
можете подсказать, как прочитать значения регистров и текущий указатель стека.
В процессе работы контроллер или программа если тупит, то всё вываливается в hard fault и виснет, насколько я понял.( у меня такое случилось вчера) и тут я сделал так-
поскольку используется ЖК экран 3,2' то я сделал синий экран BSOD с текстом ошибки, и хотел вывести ещё регистры, состояния портов,и прочую инфу, но на регистрах застрял.
Если подскажите, на днях выложу код, думаю, будет полезен всем при отладке.
__________________
-
akzamit вне форума  
Непрочитано 23.04.2011, 09:57  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Расскажите пожалуйста про инструкции насыщения SSAT и USAT, как работают и для чего вообще нужны. В доке как-то кратко и непонятно объясняется.
Спасибо.

ЗЫ. Сегодня наткнулся на описание процессора Cortex-M3 и его системы команд на русском языке. Может кому будет полезно. Здесь
uk8amk вне форума  
Эти 7 пользователя(ей) сказали Спасибо uk8amk за это сообщение:
alekseyb (30.06.2011), forbidden (07.07.2011), gres_go (16.07.2011), kozer_1983 (25.04.2011), lsa (23.04.2011), L_0_R (23.04.2011), s64 (23.04.2011)
Непрочитано 24.04.2011, 10:06  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Кажется нашел ответ на вопрос про иснтрукции насыщения. Достаточно было поискать на англицком.
Коротко: это DSP инструкции. Ограничивают число на каком-то уровне, не позволяют выйти за установленные пределы.
uk8amk вне форума  
Непрочитано 25.04.2011, 10:44  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Мой очередной вопрос касается использования инструкции IT(If-Then-Else). Например запись блока IT:
ITTE NE ; 2 инструкц=NE, 1 инструкц !NE
ADDNE R0,R0,R1; не равно
ADDSNE R2,R2,#1; не равно
MOVEQ R2,R3 ; равно

Что изменилось если записать так?:
ADDNE R0,R0,R1; не равно
ADDSNE R2,R2,#1; не равно
MOVEQ R2,R3 ; равно

Точно также конвейер процессора пропускает инструкции, не удовлетворяющие флагам условного кода как NOPы. Тогда в чем разница, в каких случаях(за исключением BXcond и BLXcond - это я уже понял) следует использовать блок IT?
uk8amk вне форума  
Непрочитано 25.04.2011, 13:27  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Этот кусок для Thumb режима
Сообщение от uk8amk Посмотреть сообщение
ITTE NE ; 2 инструкц=NE, 1 инструкц !NE
ADDNE R0,R0,R1; не равно
ADDSNE R2,R2,#1; не равно
MOVEQ R2,R3 ; равно
Этот - для ARM режима
Сообщение от uk8amk Посмотреть сообщение
Что изменилось если записать так?:
ADDNE R0,R0,R1; не равно
ADDSNE R2,R2,#1; не равно
MOVEQ R2,R3 ; равно
Разница в том, что изначально в наборе команд thumb условными являются только переходы. В расширенном наборе thumb-2 появилась инструкция IT, обеспечивающая выполнение блока инструкций по условию. Выгода в количестве инструкций и занимаемом программой объеме памяти, как следствие и в быстродействии.
AJScorp вне форума  
Непрочитано 26.04.2011, 10:01  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Процессор CM-3 в МК STM32, работает только в режиме тумб-2. Изучаю документацию Programming manual PM0056. В примерах использования машинных инструкций есть варианты условного выполнения как с блоком IT, так и без него. Это меня и путает.

Т.е. как правильно должно быть для thumb-2:
1) Инструкция{проверка_условия} операнды

или

2)IT проверка_условия
инструкция{условие} операнд

???
uk8amk вне форума  
Непрочитано 26.04.2011, 10:30  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Код:
; if (r0 == r1)
CMP r0, r1    ;выставляем флаги
ITE EQ        ;Thumb: IT instruction
; then r0 = r2;
MOVEQ r0, r2  ;Thumb: condition via ITE 'T' (then)
; else r0 = r3;
MOVNE r0, r3  ;Thumb: condition via ITE 'E' (else)
Сообщение от uk8amk Посмотреть сообщение
есть варианты условного выполнения как с блоком IT, так и без него
Цитату можно?
AJScorp вне форума  
Непрочитано 26.04.2011, 16:18  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

PM0056, стр 64:

Цитата:
Examples
LDRR8, [R10]; loads R8 from the address in R10.
LDRNER2, [R5, #960]!; loads (conditionally) R2 from a word
; 960 bytes above the address in R5, and
; increments R5 by 960.
STRR2, [R9,#const-struc]; const-struc is an expression evaluating
; to a constant in the range 0-4095.
STRHR3, [R4], #4; Store R3 as halfword data
Далее стр 75:
Цитата:
Examples
ADDR2, R1, R3
SUBSR8, R6, #240; sets the flags on the result
RSBR4, R4, #1280; subtracts contents of R4 from 1280
ADCHIR11, R0, R3;
стр. 79:
Цитата:
Examples
CMPR2, R9
CMNR0, #6400
CMPGTSP, R7, LSL #2
И т.д.
А вот здесь уже с IT блоком(стр.59):
Цитата:
Specific example 1: Absolute value
MOVSR0, R1; R0 = R1, setting flags
IT MI; IT instruction for the negative condition
RSBMIR0, R1, #0; If negative, R0 = -R1
Хотя благодаря вашим ответам я начинаю догонять, что они ради упрощения наверное выкинули лишнюю писанину и тем самым ввели меня в заблуждение.
uk8amk вне форума  
Непрочитано 26.04.2011, 17:08  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Так там везде воткнута строка
Цитата:
‘cond’ is an optional condition code (see Conditional execution on page 58)
а на странице 58 написано
Цитата:
Conditional instructions, except for conditional branches, must be inside an If-then instruction block.
ну и примеры, соответственно с этим блоком.

Согласен, запутаться легко с такими примерами. Хотя, может компилятор сам эти IfThen вставляет в ассемблерный код, поэтому и не стали писать.
AJScorp вне форума  
Сказали "Спасибо" AJScorp
Sounds187 (29.09.2011)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot