Михась 4 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба И что же там занимало 30кб? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 9:32 AM, Михась said: И что же там занимало 30кб? HAL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 39 minutes ago, dimka76 said: HAL Гм. Неужели этот код был так бездарно написан? Может быть линковщик не выбрасывал неиспользуемые функции, например? Что-то уж странное отношение размеров кода... Но всё может быть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 11 минут назад, haker_fox сказал: Гм. Неужели этот код был так бездарно написан? Ничего странного. Причина не только в самом Кале, но и в тех кто на нём калокодит. Посмотрите в начало этого топика: 21 час назад, Sergo1799 сказал: RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; //Настройка коэффициентов PLL: PLLM = 6; PLLN = 8 RCC->PLLCFGR |= (RCC_PLLCFGR_PLLM_0 | RCC_PLLCFGR_PLLM_2); RCC->PLLCFGR ^= RCC_PLLCFGR_PLLN_4; RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_3; Ведь если так не калокодить, но размер кода раз в 6 меньше получится. Что у dimka76 примерно и получилось. Но - одного без другого не бывает: Каков Кал, таковы и калокодеры, по другому у них не получается. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 10:32 AM, jcxz said: Посмотрите в начало этого топика: Что здесь не так ? А, вы хотите сказать, что вместо одной строчки можно было бы все в одной строке написать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 17 минут назад, haker_fox сказал: Неужели этот код был так бездарно написан? Нет, он был написан еще хуже . Когда запускал USB - собрал пример CDC из куба. 24 К флеша только USB CDC+эхо. Написал свой стек, упихал в ~5 К флеша USB CDC + дешифровку AES + прошивку флеша + обработку протокола и логики загрузчика. 4 минуты назад, dimka76 сказал: Что здесь не так ? Тупые чтение-модификация-запись в каждой операции вместо одного чтения и одной записи. Или вообще одной-единственной записи константы с нужным состоянием сразу всех битов регистра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 2 минуты назад, dimka76 сказал: Что здесь не так ? В смысле что? Отрубание хвоста по частям, естественно. Вместо одной записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 10:42 AM, jcxz said: В смысле что? Отрубание хвоста по частям, естественно. Вместо одной записи. Я уже выше отредактировал свое сообщение )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 16 minutes ago, jcxz said: Каков Кал, таковы и калокодеры, по другому у них не получается. В целом я с Вами полностью согласен! Но бывают и такие ситуации, когда тебе начальство прямым текстом говорит: не пиши свою писанину (да, примерно так), используй по максимуму CMSIS, драйверы из примеров IAR и т.п. И любые аргументы идут лесом. Типа так быстрее. А когда ты неделю ищешь ошибку в этом г...не (как я искал в IAP, Вы должны помнить), это уже не считается... А то, что можно получить более крутого специалиста, который сам всё изучил, пусть и потратил на это время, им невдомёк. Поэтому, я отчасти понимаю тех, кто использует куб. Т.е. такие случаи возможны. 18 minutes ago, Сергей Борщ said: Написал свой стек Ого! Низко склоняю голову! Для меня написать стек USB - это вершина мастерства! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 10:50 AM, haker_fox said: Поэтому, я отчасти понимаю тех, кто использует куб. Т.е. такие случаи возможны. HAL написан с претензией на универсальность. Поэтому в нем для настройки любой периферии присутствует куча условий, который и увеличивают конечный размер кода. Но даже при всем их стремлении к универсальности, полной универсальности не получается. Здесь на форуме не редко возникают вопросы как сделать с помощью HAL то что позволяет сделать периферия, но не позволяет сделать сам HAL. Еще заметил, в этом HAL полностью отсутствует поддержка IEEE 1588, хотя периферия микроконтроллеров STM32 имеет такую поддержку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба Что-то странно что 30К заняло.. Два варианта старых проектов на F1: используются PLL, DMA, USB MSD, SPI, I2C, IAP. В одном проекте без хала и без CMSIS - 9К, из которых 4К - юсб стек + все системное, и 5К все остальное. Системные файлы из Кейла, с некоторым допиливанием : startup.s system.c usbcore.c usbdesc.c usbhw.c usbuser.c mscuser.c Почти аналогичный проект на том-же проце но с халом - 15К, из которых сам хал с ЮСБ стеком - 7К, и 8К - все остальное ("остального" тут сильно побольше, чем в варианте без хала). Конечно, тут хал+юсб с халом занимает 7К, почти вдвое больше чем 4К в первом варианте. Но первый вариант был не только бех хала, но и без CMSIS, и там было все ужато до посинения. P.S. Я вообще не часто использую хал, в основном для разных быстрых временных тестовых поделок, где главное - побыстрее получить результат. Это именно для эксперименов. Требований к памяти в них как правило никаких, а если есть требования к скорости - ну так этот кусок можно и полностью свой написать. В нормальных проектах, я обычно в кубе делаю распределение ножек, и беру с экрана коэффициенты для клоков - это он хорошо и удобно считает. Генерить кубом код тут вообще не обязательно. Но иногда я генерю кубом всю или почти всю начальную инициализацию, ибо для какого-нибудь F7 или H7, с прошивкой в сотни килобайт, займет эта инициализация 10К или 30К - глубоко пофиг, да и как правило, у меня основное место во флеше в таких проектах занимает не столько код, сколько RO-данные (массивы, таблицы). Вот работу в реалтайме с некоторой периферией, как правило прихдится делать свою, в хале в угоду универсальности "для всех случаев", многое сделано крайне не оптимально или просто через ж-пу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 11:13 AM, Allregia said: Что-то странно что 30К заняло.. Ладно, взбодрил тот самый проект, о котором я писал выше. Действительно, в изначальном состоянии была выключена оптимизация. Включил, получил почти 17 кБайт. Еще раз напомню, это только заготовка проекта. Мой проект без HAL, переработанный, полностью завершенный и использующий тот же набор периферии, что изначальный проект-заготовка на HAL, на выходе имеет 5,1 кБайт. Еще, вот вывод размеров объектных файлов для начального проекта-заготовки на HAL с включенной оптимизацией. Spoiler text data bss dec hex filename 536 5 0 541 21d release_1/obj/stm32f4xx_hal.o 710 0 0 710 2c6 release_1/obj/stm32f4xx_hal_cortex.o 1592 0 0 1592 638 release_1/obj/stm32f4xx_hal_dma.o 2828 0 0 2828 b0c release_1/obj/stm32f4xx_hal_dma_ex.o 546 0 0 546 222 release_1/obj/stm32f4xx_hal_exti.o 920 0 0 920 398 release_1/obj/stm32f4xx_hal_flash.o 708 0 0 708 2c4 release_1/obj/stm32f4xx_hal_flash_ex.o 844 0 0 844 34c release_1/obj/stm32f4xx_hal_gpio.o 462 0 0 462 1ce release_1/obj/stm32f4xx_hal_pwr.o 236 0 0 236 ec release_1/obj/stm32f4xx_hal_pwr_ex.o 1758 0 0 1758 6de release_1/obj/stm32f4xx_hal_rcc.o 860 0 0 860 35c release_1/obj/stm32f4xx_hal_rcc_ex.o 10232 0 0 10232 27f8 release_1/obj/stm32f4xx_hal_tim.o 3508 0 0 3508 db4 release_1/obj/stm32f4xx_hal_tim_ex.o 4308 0 0 4308 10d4 release_1/obj/stm32f4xx_hal_uart.o 116 0 0 116 74 release_1/obj/stm32f4xx_it.o 142 4 0 146 92 release_1/obj/system_stm32f4xx.o 270 4 8 282 11a release_1/obj/syscalls.o 812 0 0 812 32c release_1/obj/stm32f4xx_hal_msp.o 494 0 0 494 1ee release_1/obj/startup_stm32f405xx.o Что-то конечно еще компоновщик выкинет. Но, тем не менее. Вот такая цена универсальности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба Ну у Вас так получилось, 5/17, под F4. У меня выше приведено под F1 - 4/7. В любом случае, для F4 я бы сильно не огорчался потерявшимися 12К. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/2/2023 at 3:30 PM, Allregia said: В любом случае, для F4 я бы сильно не огорчался потерявшимися 12К. С одной стороны возможность сэкономить память, а с другой стороны - больше кода при инициализации, следовательно он дольше выполняется, следовательно увеличивается время от момента подачи питания до готовности устройства к работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergo1799 0 2 июня, 2023 Опубликовано 2 июня, 2023 (изменено) · Жалоба Вы тут прекрасно общаетесь между собой. Это хорошо. Но тем товарищам, которые упоминали про "калокод" отвечу, что задачи упихать код в минимум памяти не стоит, проект делается пока на отладке. Критически важные прерывания я делаю по всем правилам. А умничать может каждый вмеру своей калости) Изменено 2 июня, 2023 пользователем Sergo1799 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться