Size: a a a

2020 May 15

s

sexst in ntwrk
Denis Avgoor
ну речь конечно о правилах хорошего тона скорее, чем о физическом запрете.
А что плохого в этом подходе? Берём те же stm32. У них eeprom на считаных моделях набортный есть. Чтобы не ставить внешнюю, решаем настройки сохранять на наборный flash. А если разлочить flash на запись, то в это время с неё читать нельзя и всё колом стоит.
Решение - вынести важные блоки в RAM.
Или может хочется максимально быстро выполнять какую-то функцию по таймеру.
Да много вариантов. Я давеча лопатил то, что DMA с ADC выгребало. Причём нужно было максимально быстро считать. Опять в RAM.
lwIP стек тоже частенько самыми часто вызываемыми функциями в память кладут.
Короче говоря, это распространённый подход. Если память есть, то фигли её жалеть?
источник

DA

Denis Avgoor in ntwrk
sexst
А что плохого в этом подходе? Берём те же stm32. У них eeprom на считаных моделях набортный есть. Чтобы не ставить внешнюю, решаем настройки сохранять на наборный flash. А если разлочить flash на запись, то в это время с неё читать нельзя и всё колом стоит.
Решение - вынести важные блоки в RAM.
Или может хочется максимально быстро выполнять какую-то функцию по таймеру.
Да много вариантов. Я давеча лопатил то, что DMA с ADC выгребало. Причём нужно было максимально быстро считать. Опять в RAM.
lwIP стек тоже частенько самыми часто вызываемыми функциями в память кладут.
Короче говоря, это распространённый подход. Если память есть, то фигли её жалеть?
неисполняемый рам это такая детская защита от хацкеров, но конечно можно забить хер)
источник

DA

Denis Avgoor in ntwrk
плюс я слышал на контроллерах рам и ~ром~ (флеш) не в 10 раз отличаются по производительности, ром только имеет пару циклов пенальти доступа
источник

s

sexst in ntwrk
Хацкеры на микроконтроллере то? Да ну редкость. А если защитой заморачиваются, то ему jtag отрубают, а прошивку шифруют.

Но в общем и целом в таких камнях ram - это просто какой-то участок памяти, рядом с таким же участком регистров и флеша. Они, собственно, сквозную адресацию имеют. Натравил указатель на адрес и понеслась. Что там физически под этим адресом спрятано ядру пофигу.
источник

s

sexst in ntwrk
Denis Avgoor
плюс я слышал на контроллерах рам и ~ром~ (флеш) не в 10 раз отличаются по производительности, ром только имеет пару циклов пенальти доступа
На самом деле разница бывает в разы
источник

DA

Denis Avgoor in ntwrk
хз, лично не сравнивал
источник

DA

Denis Avgoor in ntwrk
знаю еще что у GigaDevices клонов STM32 флеш отображается в скрытый sram и это дает прирост скорости но не такой уж умопомрачительный
источник

s

sexst in ntwrk
Ну я вот делаю при необходимости такое, я сравнивал.
источник

DA

Denis Avgoor in ntwrk
sexst
Ну я вот делаю при необходимости такое, я сравнивал.
короче речь об оптимизациях компилятора, в рам пихать это другой вид извращений
источник

s

sexst in ntwrk
Ну да
источник

DA

Denis Avgoor in ntwrk
просто я рассматриваю пихалово в рам только в целях сделать какой-то манёвр типа перезаписать флеш или бутлоадер тиснуть, так-то рам не резиновый...
источник

DA

Denis Avgoor in ntwrk
с другой стороны если не хватает производительности, возможно пора подумать о ядре пошвыдче)
источник

DF

Denys Fedoryshchenko in ntwrk
Denis Avgoor
знаю еще что у GigaDevices клонов STM32 флеш отображается в скрытый sram и это дает прирост скорости но не такой уж умопомрачительный
На некоторых задачах он очень существенный, т.к. не надо запихивать в RAM критический к задержкам код, на 72Mhz - 2-wait state может превратить проц в тыкву.
источник

DA

Denis Avgoor in ntwrk
Denys Fedoryshchenko
На некоторых задачах он очень существенный, т.к. не надо запихивать в RAM критический к задержкам код, на 72Mhz - 2-wait state может превратить проц в тыкву.
мне кажется вы от микроконтроллера требуете слишком много :)
источник

DF

Denys Fedoryshchenko in ntwrk
Denis Avgoor
мне кажется вы от микроконтроллера требуете слишком много :)
источник

DA

Denis Avgoor in ntwrk
странно что не написано на ассемблере, не понимаю в чем эксперимент? понять что wait state есть или то что gcc4 дерьмовый конпелятор? :)
источник

DF

Denys Fedoryshchenko in ntwrk
Denis Avgoor
странно что не написано на ассемблере, не понимаю в чем эксперимент? понять что wait state есть или то что gcc4 дерьмовый конпелятор? :)
что на простейших задачах можно наступить на грабли из-за wait-states
а ассемблером, кроме как какие-то вставки - подтереться можно на кортексах, это просто нерентабельно для чего-то более-менее серьезного
источник

DA

Denis Avgoor in ntwrk
Denys Fedoryshchenko
что на простейших задачах можно наступить на грабли из-за wait-states
а ассемблером, кроме как какие-то вставки - подтереться можно на кортексах, это просто нерентабельно для чего-то более-менее серьезного
ну если мерять cycle-precise штуки, то глупо делать это на си а потом играть в -O0-1-2-X
источник

s

sexst in ntwrk
Denys Fedoryshchenko
что на простейших задачах можно наступить на грабли из-за wait-states
а ассемблером, кроме как какие-то вставки - подтереться можно на кортексах, это просто нерентабельно для чего-то более-менее серьезного
Не, ну так то мало где приходится вот такой нежный к задержкам ногодрыг применять. Еоммуникации с периферией? Для этого есть стандарты и DMA. Я уж не припомню когда такое делал даже
источник

DA

Denis Avgoor in ntwrk
делать софтовый усб можно конечно
источник