Перейти к содержанию
    

Программа копирует себя в RAM, и оттуда шьет флеш.

 

Понятно, спасибо. Тогда интересно, STM32 всегда копираует часть кода в RAM для выполнения или если только его попросить об этом, и описан ли этот процесс где-то в документации или это можно увидеть только из примера программы DFU?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с тем, что кейл не поддерживает inline ассемблеровские вставки в Thumb режиме. Как-нибудь это можно обойти ? Что бы избежать лишних переходов при использовании функций в которых всего-то пара команд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с тем, что кейл не поддерживает inline ассемблеровские вставки в Thumb режиме. Как-нибудь это можно обойти ? Что бы избежать лишних переходов при использовании функций в которых всего-то пара команд.

На кортексе нет тамб или аэрэм режимов, у него всегда thumb-2.

Чем не устраивают inline функции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На кортексе нет тамб или аэрэм режимов, у него всегда thumb-2.

Я писал не про кортекс, а про компилятор.

 

Чем не устраивают inline функции?

 

Вы меня не поняли, поясню на конкретном примере.

Для arm можно было записать так:

 

static __inline int FASTABS(int x)

{

int t=0;

__asm {

eor t, x, x, asr #31

sub t, t, x, asr #31

}

return t;

}

А что делать для thumb чтобы получить тот же результат ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я писал не про кортекс, а про компилятор.

А что делать для thumb чтобы получить тот же результат ?

Причем здесь компилятор?

Надо взять ARMv7-M Architecture Application Level Reference Manual

там есть все команды, которые поддерживаются в THUMB2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Причем здесь компилятор?

 

А вы попробуйте откомпилировать приведённый мной код, тогда узнаете.

 

Надо взять ARMv7-M Architecture Application Level Reference Manual

там есть все команды, которые поддерживаются в THUMB2

:cranky: А это здесь причём ???

 

Повторю вопрос: как заинлайнить выше приведённый код в кейле в случае компиляции под THUMB2 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторю вопрос: как заинлайнить выше приведённый код в кейле в случае компиляции под THUMB2 ?

Не знаю как в KEIL, а полноценный RVCT от RVDS не умеет использовать inline asm для THUMB и THUMB2. Нужно использовать embedded asm примерно так.

__asm int FASTABS(int x) 
{
    eor r1, r0, r0, asr #31
    sub r0, r1, r0, asr #31
    bx lr
}

но тогда функция не будет inline.

Но вот если gcc использовать тут можно уже расширенный асм использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ДОБРЫЙ ДЕНЬ !

Вот сейчас начал изучать STM32F103RET6 был очень рад наличию у него двух 12 битных АЦП но радость пропала когда узнал что в курпусе LQFP-64 не выведены пины под истоники опорного нпаряжения :( Как спрашиваеться опираясь от общего питания АЦП (VDDA) пожно добиться путевой точности ?? И еще интересный факт как я не перерывал документацию я не нашел ток который потребляеть по выводу VDDA два АЦП и два ЦАПа вместе тоесть в попытке всетаки улудщить аналоговое питания посколько оно же и опорное напряжение есть удея поставить туда чтото типа REF3033 но вот не задача нигде не написано сколько это все будет кушать!! И не просядить ли источник опорного напряжения!! Зато сказано сколько потребляет от VREF мах 220мкА но а сколько остольное кушает кто нить знаеть ??? или может померить ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

asen

 

Страницы 52,53 даташита: DAC - 0.72mA, ADC1 - 1.9mA, ADC2,3 - 1.7mA.

Изменено пользователем IgorKossak
Бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как спрашиваеться опираясь от общего питания АЦП (VDDA) пожно добиться путевой точности ??

 

Для этого есть внутренняя опора. Оттдельно измеряйте ее и корректируйте результат измерения внешнего канала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

продолжаю делится впечатлениями....

 

доделал проект моста USB<->Arinc 429 RX/TX жужжыт на скорости 100кbs

 

порадовал время(стабильность) входа и выхода из прерываний, после LPC2148 просто глоток воздуха

порадовал bit-band, но както пока низнаю куда его применить.

до 120 мгц гонится и работает, дальге не помню что происходит.

сильно вперед продвинутый набор инструкций, если правильно писать на си уметь!! то асм непонадобится. получил код обработчика прерывания от компиллера в который руками некуда залесть! на каждую строку с-кода 1 2 или 3 инструкции. лепота.

 

так для смеха - проект написан абсалютно полностью на С, нистрочка асма( правда я еще не оптимизил :biggrin: ). невидалый в контроллеростроении для меня случай.

 

огорчило что к тактовой USB нельзя присунуть делитель отличный от 1 и 1,5. так могли сделать только враги!!!

огорчили таймеры, 16 бит..... просто фашисты, всю малину обгадили

 

ктонит RS485 уже реализовывал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

огорчило что к тактовой USB нельзя присунуть делитель отличный от 1 и 1,5. так могли сделать только враги!!!

Радует хотя бы это. На SAM7S вообще кроме х1 ничего нет :cranky:

 

Кстати, хотел спросить про макс. частоту SPI.

С какой бы это стати в мануале указана частота 18 МГц?

Что помешает SPI1, висящему на APB2, работать на частотах вплоть до 36 МГц?

 

Ведь делители такое позволяют? Никто не пробовал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ктонит RS485 уже реализовывал?

 

Я делал (по прерыванию, без DMA). Все достаточно просто и прямолинейно. Хотя маленькая ложка дегтя - отсутствие аппаратного управления направлением передачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал (по прерыванию, без DMA). Все достаточно просто и прямолинейно. Хотя маленькая ложка дегтя - отсутствие аппаратного управления направлением передачи.

я прально понимаю что прерывание tx complite используете для передергивания выводом порта 485-микруху в режим приема для отпускания шины? Если так то не сильно криминально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...