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

Выполнение ф-ций из ram

11 минут назад, AlexRayne сказал:

Иар не магический шар...

... однако автоматизированная среда разработки, которая вне зависимости от конкретных ситуативных оптимизаций компилятора и линковщика, а также неочевидных последствий такой оптимизации, проследит все зависимости и сделает все ок. А Вам, раз уж Вы считаете "простым делом" проследить все эти зависимости и закатывать солнце вручную, остается только пожелать удачи, когда при очередной пересборке что-то отъедет: опять часами искать эти функции и данные, которые попали "не туда":crazy:

У IAR __ramfunc штука удобная. В Keil такого нет, а жаль. Как в GCC - не в курсе.

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


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

2 минуты назад, Arlleex сказал:

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

да ктобы спорил. но иар не всегда под рукой есть. у меня вот гнусный с, какие варианты предложите? 

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


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

12 минут назад, AlexRayne сказал:

да ктобы спорил. но иар не всегда под рукой есть. у меня вот гнусный с, какие варианты предложите? 

А я Keil-ом пользуюсь. GCC не юзаю. Но, как уже сказал, в Keil-е нету такой фишки, как у IAR-а.

Свой вариант я уже предложил - если программа довольно сложная и выцыганить зависимости быстро не получится - она целиком летит в RAM.

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


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

50 минут назад, AlexRayne сказал:

конкретно в приведенном случае придется всю таблицу table000 в озу переложить.

"Всю" это сколько? Как размер определите?

А если определили даже и размер её = 100КБ? А ОЗУ всего = 64КБ. Как?

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


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

20 часов назад, jcxz сказал:

А если определили даже и размер её = 100КБ? А ОЗУ всего = 64КБ. Как?

тогда финита ля комедия.

А как ИАР это сможет разрулить?

20 часов назад, Arlleex сказал:

она целиком летит в RAM.

я редко работаю с контроллерами у которых ОЗУ не забивается данными под завязку. 

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


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

1 час назад, AlexRayne сказал:

А как ИАР это сможет разрулить?

У IAR-а: отдельно - чай, отдельно - сахар. А у вас - чай с сахаром.

Так кому легче отделить сахар от чая?

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


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

22 минуты назад, jcxz сказал:

У IAR-а: отдельно - чай, отдельно - сахар. А у вас - чай с сахаром.

довольно скупое объяснение, невкурил. можно подробнее? как ИАР ссылку на таблицу 100кБ локализует для ram-функции, в вашем примере?

 

Изменено пользователем AlexRayne

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


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

9 minutes ago, AlexRayne said:

как ИАР ссылку на таблицу 100кБ локализует для ram-функции

Точно так же как и для функции из флэш

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


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

19 часов назад, AlexRayne сказал:

довольно скупое объяснение, невкурил. можно подробнее? как ИАР ссылку на таблицу 100кБ локализует для ram-функции, в вашем примере?

IAR-у не нужно это делать. IAR (как и любой компилятор) умеет объединять константы (удаление дубликатов). 100КБ - это объединённый массив констант. Разных констант. То же самое с кодом - одинаковые участки могут быть объединены оптимизатором. А код, имеющий атрибут __ramfunc, не будет объединяться с кодом не имеющим такого атрибута. Аналогично и константы этого кода не будут объединяться.

Пытаться что-то выделить уже после объединения - это пытаться вычерпать сахар из чая.

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


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

4 часа назад, jcxz сказал:

А код, имеющий атрибут __ramfunc, не будет объединяться с кодом не имеющим такого атрибута.

А как поступит IAR, если аттрибутом __ramfunc будет помечена функция, принимающая параметр типа указатель на функцию, и вызывающая её по этому указателю?

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


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

5 минут назад, Darth Vader сказал:

А как поступит IAR, если аттрибутом __ramfunc будет помечена функция, принимающая параметр типа указатель на функцию, и вызывающая её по этому указателю?

Если указатель будет без __ramfunc, то по идее должен ругнуться.

Но зачем спрашивать? Просто попробуйте.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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