Arlleex 177 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба 11 минут назад, AlexRayne сказал: Иар не магический шар... ... однако автоматизированная среда разработки, которая вне зависимости от конкретных ситуативных оптимизаций компилятора и линковщика, а также неочевидных последствий такой оптимизации, проследит все зависимости и сделает все ок. А Вам, раз уж Вы считаете "простым делом" проследить все эти зависимости и закатывать солнце вручную, остается только пожелать удачи, когда при очередной пересборке что-то отъедет: опять часами искать эти функции и данные, которые попали "не туда" У IAR __ramfunc штука удобная. В Keil такого нет, а жаль. Как в GCC - не в курсе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба 2 минуты назад, Arlleex сказал: однако автоматизированная среда разработки, которая вне зависимости от конкретных ситуативных оптимизаций компилятора и линковщика, а также неочевидных последствий такой оптимизации, проследит все зависимости и сделает все ок. да ктобы спорил. но иар не всегда под рукой есть. у меня вот гнусный с, какие варианты предложите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 177 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба 12 минут назад, AlexRayne сказал: да ктобы спорил. но иар не всегда под рукой есть. у меня вот гнусный с, какие варианты предложите? А я Keil-ом пользуюсь. GCC не юзаю. Но, как уже сказал, в Keil-е нету такой фишки, как у IAR-а. Свой вариант я уже предложил - если программа довольно сложная и выцыганить зависимости быстро не получится - она целиком летит в RAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба 50 минут назад, AlexRayne сказал: конкретно в приведенном случае придется всю таблицу table000 в озу переложить. "Всю" это сколько? Как размер определите? А если определили даже и размер её = 100КБ? А ОЗУ всего = 64КБ. Как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 23 февраля, 2022 Опубликовано 23 февраля, 2022 · Жалоба 20 часов назад, jcxz сказал: А если определили даже и размер её = 100КБ? А ОЗУ всего = 64КБ. Как? тогда финита ля комедия. А как ИАР это сможет разрулить? 20 часов назад, Arlleex сказал: она целиком летит в RAM. я редко работаю с контроллерами у которых ОЗУ не забивается данными под завязку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 23 февраля, 2022 Опубликовано 23 февраля, 2022 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 февраля, 2022 Опубликовано 23 февраля, 2022 · Жалоба 1 час назад, AlexRayne сказал: А как ИАР это сможет разрулить? У IAR-а: отдельно - чай, отдельно - сахар. А у вас - чай с сахаром. Так кому легче отделить сахар от чая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 23 февраля, 2022 Опубликовано 23 февраля, 2022 (изменено) · Жалоба 22 минуты назад, jcxz сказал: У IAR-а: отдельно - чай, отдельно - сахар. А у вас - чай с сахаром. довольно скупое объяснение, невкурил. можно подробнее? как ИАР ссылку на таблицу 100кБ локализует для ram-функции, в вашем примере? Изменено 23 февраля, 2022 пользователем AlexRayne Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 23 февраля, 2022 Опубликовано 23 февраля, 2022 · Жалоба 9 minutes ago, AlexRayne said: как ИАР ссылку на таблицу 100кБ локализует для ram-функции Точно так же как и для функции из флэш Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 24 февраля, 2022 Опубликовано 24 февраля, 2022 · Жалоба 19 часов назад, AlexRayne сказал: довольно скупое объяснение, невкурил. можно подробнее? как ИАР ссылку на таблицу 100кБ локализует для ram-функции, в вашем примере? IAR-у не нужно это делать. IAR (как и любой компилятор) умеет объединять константы (удаление дубликатов). 100КБ - это объединённый массив констант. Разных констант. То же самое с кодом - одинаковые участки могут быть объединены оптимизатором. А код, имеющий атрибут __ramfunc, не будет объединяться с кодом не имеющим такого атрибута. Аналогично и константы этого кода не будут объединяться. Пытаться что-то выделить уже после объединения - это пытаться вычерпать сахар из чая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 24 февраля, 2022 Опубликовано 24 февраля, 2022 · Жалоба 4 часа назад, jcxz сказал: А код, имеющий атрибут __ramfunc, не будет объединяться с кодом не имеющим такого атрибута. А как поступит IAR, если аттрибутом __ramfunc будет помечена функция, принимающая параметр типа указатель на функцию, и вызывающая её по этому указателю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 24 февраля, 2022 Опубликовано 24 февраля, 2022 · Жалоба 5 минут назад, Darth Vader сказал: А как поступит IAR, если аттрибутом __ramfunc будет помечена функция, принимающая параметр типа указатель на функцию, и вызывающая её по этому указателю? Если указатель будет без __ramfunc, то по идее должен ругнуться. Но зачем спрашивать? Просто попробуйте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 24 февраля, 2022 Опубликовано 24 февраля, 2022 · Жалоба Две страницы воды, вместо 5 минут на просмотр примера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться