سلام وقت بخیر تشکر از سایت سیسوگ و دوستان عزیز این سایت
وقتی من کتابخانه lvgl را به نرم افزار cubeid اضافه میکنم و شروع به نوشتن کد ساده میکنم به دلیل حجم کد
E:/cupide/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.100.202309141235/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld.exe: cubeid-st7789-lvgl.elf section `.text' will not fit in region `FLASH'
E:/cupide/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.100.202309141235/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 228872 bytes
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:191: cubeid-st7789-lvgl.elf] Error 1
این اخطار رو به من میدهد
از میکرو stm32g0b1cbtx استفاده میکنم
چطور میتونم این خطا را برطرف کنم.
ممنون مشم راهنمایی بفرمایید
سلام
با کمک چه آموزشی دارید این کار رو انجام میدید ؟
به چه صورت کتابخانه LVGL رو به cube اضافه کردید ؟
از آموزش های سیسوگ و همچنین ازکلیپ youtube کمک گرفتم و طبق آن انجام دادم و کل پوشه دانلود شده از سایت LVGL رو به پروژه اضافه میکنم. (در پوشه درایور)
همچنین پوشه LVGL رو زیر مجموعه پروژه اصلی قرار میدهم .
حتی اگر کتابخانه خود درایور LCD استفاده نکنم (مثلا درایور ST7735)و داخل پروژه قرار نگیرد باز هم خطا حافظه میدهد به پروژه
سلام وقت بخیر
من با کتابخانه LVGL و TFT_eSPI یک پروژه در حد دمو روی میکرو STM32F103C8T6 ( که البته مدل های فیکش که تو بازار ایران به وفور هست با حافظه 256 کیلوبایت فلش ) پیاده سازی کردم .
تا جایی که من اطلاع دارم حافظه فلش میکرو های G0 حداقل از 512 کیلو شروع میشه . بنابراین به نظر نمیاد که واقعا فلش کم آورده باشید ( که حتی در این صورت میتونید از حافظه های فلش اکسترنال شرکت winbond استفاده کنید )
از اون جایی که من اون پروژه رو با STM32CubeIDE انجام ندادم نمیدونم فرآیند کامپایل این کتابخونه چطور هست تو این نرم افزار . در پلاگین PlatformIO که من پروژه رو باهاش انجام دادم ، توابعی و بخش هایی که از کتابخونه که تو کد استفاده نشده و مورد نیاز نیست ، کامپایل نمیشه و در نتیجه حجم کد هم خیلی بهینه است .
ولی ممکنه وقتی یک فایل رو به دایرکتوری include نرم افزار Cube IDE اضافه میکنید ، لزوما تمام فایل ها و کد ها رو کامپایل و جزو کد محسوب کنه که در این صورت حجم یک کد ساده هم نسبتا زیاد میشه . به عنوان مثال شما هنوز از هیچ کدام یک از ویجت های کتابخونه LVGL استفاده نکردین اما کامپایلر تمام فانکشن های کتابخونه رو جزو بدنه کد حساب کرده و همه اش رو کامپایل کرده . ( البته این حدس من بود شاید خیلی هم درست و مرتبط نباشه صرفا چیزی بود که تو PlatformIO دیدم )
1 پسندیده
اتفاقا به نکته خیلی خوبی اشاره کردید، کامپایلر ARM یک آپشن برای این موضوع داره :
-ffunction-sections
که برای دستیابی بهش توی CubeIDE در پنجره Options و عکس زیر میسره
توضیحات کاملترش هم توی در لینک زیر هست
https://developer.arm.com/documentation/dui0774/l/Compiler-Command-line-Options/-ffunction-sections---fno-function-sections