<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      lvgl 經典編譯錯誤解決之道:section `.bss' is not within region `dram0_0_seg'

      #NodeMCU# #PlatformIO#或#Arduino IDE#
      能規避 lvgl+TFT_eSPI 經典編譯錯誤(如下所示)的點不多。
      Linking .pio\build\nodemcu\firmware.elf
      ld.exe: address 0x3fffd538 of .pio\build\nodemcu\firmware.elf section `.bss' is not within region `dram0_0_seg'
      collect2.exe: error: ld returned 1 exit status
      *** [.pio\build\nodemcu\firmware.elf] Error 1
      因為我們在源碼上能做的事情不多:
      (1)在 lvgl 庫的 lv_conf.h 中將這個自定義內存分配標志
      /* 1: use custom malloc/free, 0: use the built-in `lv_mem_alloc` and `lv_mem_free` */
      #define LV_MEM_CUSTOM 0
      從0改為1。
      (2)在 TFT_eSPI 庫的 User_Setup.h 里,選完 driver 之后,再選擇如下屏幕設置選項的其中之一
      //#define ST7735_GREENTAB
      //#define ST7735_GREENTAB2
      //#define ST7735_GREENTAB3
      #define ST7735_GREENTAB128    // For 128 x 128 display
      (3)在 TFT_eSPI 庫的 User_Setup.h 里,關閉下面的宏定義,不使用SPIFFS:
      // Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
      // this will save ~20kbytes of FLASH
      #define SMOOTH_FONT
      同樣,在與 driver 對應的 Setup7_ST7735_128x128.h 里,注釋掉下面的宏定義:
      #define SMOOTH_FONT//注釋掉,避免spiffs-deprecation-warning
      (4)在 platformio.ini 中增加一條編譯選項,表明開發板有 PSRAM 可用:
      build_flags = -D BOARD_HAS_PSRAM
       
      小結:
      實驗證明,宏定義 LV_MEM_CUSTOM 從 0 改為 1,對 LVGL+TFT_eSPI 編譯時不再提示
      “section `.rodata' will not fit in region `dram0_0_seg'”
      “section `.bss' is not within region `dram0_0_seg'”錯誤,有關鍵性幫助。這時 lvlg 將使用 stdlib.h 頭文件內的函數進行內存分配,從而可以充分使用到 SRAM 和 PSRAM 的內存。
      這種錯誤說白了就是,編譯出來的數據量太大,DRAM 放不下了。我們知道,代碼被分為許多個section,常見的如:
      .bss
      .text
      .rodata
      .data
      可以簡單理解為,IRAM 是用來存放指令的,而 DRAM 用來存放數據的。
      如下圖所示, ESP32 內部存儲器(SRAM)有 3 個存儲塊 SRAM0、SRAM1 和SRAM2。
      SRAM 以兩種方式使用:一種用于指令存儲,稱為 IRAM(用于執行代碼,text 段),另一種用于數據存儲,稱為 DRAM(用作 .bss 段,.data 段和堆)。SRAM0 和 SRAM1 可以用作連續的 IRAM,而 SRAM1 和 SRAM2 可以用作連續的 DRAM 地址空間。
      0
      圖1 ESP32 SRAM 布局
      編譯報錯的地址段“address 0x3fffd538”就落在上圖中的 DRAM 中。
      我們再來看一下 DRAM 的內存布局,如下圖所示。
      0
      圖2 DRAM 布局
      上圖顯示了應用程序的典型(簡化)DRAM 布局。由于 DRAM 地址從 SRAM2 的末尾開始,并向后增加,因此鏈接階段空間的分配從 SRAM2 的末尾開始。
      • 前 8KB(0x3FFA_E000–0x3FFA_FFFF)用作某些 ROM 內置函數的數據空間;
      • 鏈接器緊接著將已初始化的數據段放在第一個 8KB 存儲器之后;
      • 接下來是未初始化的 .bss 段;
      • 數據段和 .bss 段之后剩余的內存被配置為堆,典型的動態內存分配一般分配至該位置。
      所以,數據段和 .bss 段的大小取決于應用程序,lvgl 的編譯錯誤就發生于此。
       
      參考資源:
      posted @ 2023-04-08 16:06  老兵筆記  閱讀(2175)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av网一区天堂福利| 亚洲乱色伦图片区小说| 国产精品无码专区| 日韩av毛片福利国产福利| 狠狠色丁香婷婷综合尤物| 久久精品免视看国产成人| 日韩一卡二卡三卡四卡五卡| 无码AV无码天堂资源网影音先锋| 国产私拍福利精品视频| 在线日韩一区二区| 国产成人av免费观看| 国内熟妇与亚洲洲熟妇妇| 亚洲ΑV久久久噜噜噜噜噜| 经典国产乱子伦精品视频| 999精品色在线播放| 人妻少妇无码精品专区| 亚洲成色精品一二三区| 天堂mv在线mv免费mv香蕉| 亚洲视频免费一区二区三区| av色蜜桃一区二区三区| 性人久久久久| 蜜桃视频一区二区在线观看| 人妻少妇无码精品专区| 亚洲一区二区不卡av| 成人国产精品中文字幕| 国产内射xxxxx在线| 国产精品自在自线视频| 国产四虎永久免费观看| 亚洲一区二区三区av激情| 国产精品免费观在线| 国产又色又爽又黄的免费软件| 国产亚洲精品合集久久久久| 国产SUV精品一区二区四| 亚洲中文字幕一区精品自| 精品国产线拍大陆久久尤物| 午夜爽爽爽男女污污污网站| 欧美日韩精品一区二区三区不卡| 日韩国产中文字幕精品| 国产盗摄视频一区二区三区| 狠狠色狠狠色综合日日不卡| 国产欧美日韩精品丝袜高跟鞋|