用XIP方式實現LVGL的Image資源


LVGL是嵌入式設備上GUI圖形開發的新晉利器,系統小,效果也很不錯。在LVGL中調用圖片資源有兩種方式,一種是將圖片轉換為C Array,直接使用,一種是用文件形式。

詳見:LVGL官方文檔 https://docs.lvgl.io/master/overview/image.html

  • C Array的優勢在於直接編譯到系統中,速度快,使用起來也方便。問題是嵌入式的設備內存有限,圖片一多就比較麻煩了。
  • 文件形式很顯然就是內存占用少,但是讀取文件本身速度有些影響,另外在嵌入式系統中不得不引入文件系統(SPIFFS,FATFS)等,系統會變大,而且需要自己去Porting

怎么解決這個問題呢?XIP的解決方法浮出水面。


 

什么是XIP? 

剛開始看見這個單詞XIP,也是一頭霧水,是文件系統的一種嗎?Google之后,了解到就是直接物理地址訪問On-Chip的Flash或者SPI Flash上的數據塊。

在MCU的嵌入式設備中的內存地址與物理地址不是完全分隔開的,訪問On-Chip的Flash或者SPI Flash上的數據是可以直接用物理地址來訪問的。

這樣我們就可以將LVGL的Image的 C Array內容直接寫到Flash上,C Array的指針指向Flash的物理地址就可以了。


 

怎么將圖片的C Array 數據寫入Flash上呢?

Flash的數據其實就是Binary數據,方法就是在Host機器上將C Array寫入數據文件*.bin中,然后通過J-Flash等工具將bin文件寫到Flash的固定地址上,將C Array的指針指向固定地址。

這樣做起來就比較麻煩,需要先將圖片轉換為C Array,然后在Host機器上將C Array的內容保存到.bin文件中,在修改C Array的c文件,在Host機器上編譯設備上的可執行文件。

為了解決這些麻煩問題,研究了一下LVGL的Image Convert工具轉換成Bin文件形式的格式(其實就是一個圖片基本信息+C Array內容),所以就做了一個小工具讀取Image Convert轉換的Bin文件,

根據bin文件生成使用XIP指定地址的C Array.同時將多個圖片的.bin文件合並成一個大的.bin文件,這樣方便一次將系統中需要的所有圖片文件合並起來Download到Flash上。


使用C Array的代碼構成如下:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_IMG_HAND_GREEN uint8_t img_hand_green_map[] = {
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
  /*Pixel format: Blue: 2 bit, Green: 3 bit, Red: 3 bit, Alpha 8 bit */
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x47, 0x1c, 0x57, 0x1c, 0x57, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x14, 0x0c, 0x18, 0x74, 0x1c, 0xeb, 0x1c, 0xf0, 0x18, 0xbc, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x1c, 0x8f, 0x1c, 0xfb, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xec, 0x1c, 0x87, 0x18, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x10, 0x0f, 0x18, 0xcb, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xc4, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa0, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xf8, 0x1c, 0xa8, 0x14, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x1c, 0x4b, 0x1c, 0xff, 0x1c, 0xdb, 0x14, 0x54, 0x14, 0x50, 0x1c, 0xb8, 0x1c, 0xff, 0x1c, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xfb, 0x18, 0xe8, 0x18, 0xe4, 0x18, 0xdc, 0x18, 0xd7, 0x18, 0xd0, 0x18, 0xb3, 0x18, 0xb0, 0x18, 0xaf, 0x18, 0xab, 0x18, 0xa7, 0x18, 0x87, 0x18, 0x84, 0x18, 0x80, 0x18, 0x7f, 0x18, 0x7b, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x18, 0x9c, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x18, 0xa0, 0x1c, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x18, 0x50, 
  0x18, 0xb7, 0x1c, 0xff, 0x18, 0x8c, 0x10, 0x04, 0x14, 0x0f, 0x1c, 0x37, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xfc, 0x1c, 0xfb, 0x1c, 0xf8, 0x1c, 0xf7, 0x1c, 0xf4, 0x1c, 0xf3, 0x1c, 0xf3, 0x1c, 0xf3, 0x1c, 0xf0, 0x1c, 0xec, 0x1c, 0xeb, 0x1c, 0xeb, 0x1c, 0xeb, 0x1c, 0xeb, 0x1c, 0xe8, 
  0x18, 0x77, 0x1c, 0xff, 0x1c, 0x8b, 0x14, 0x03, 0x14, 0x14, 0x18, 0x5c, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xff, 0x18, 0xfc, 0x18, 0xf7, 0x18, 0xb7, 0x18, 0xa8, 0x18, 0xa3, 0x18, 0xa3, 0x18, 0xa8, 0x18, 0x93, 0x18, 0x7f, 0x18, 0x6b, 0x1c, 0x5c, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x57, 0x1c, 0x9c, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x18, 0xff, 0x18, 0x90, 0x1c, 0x54, 0x1c, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x18, 0x57, 0x14, 0x53, 0x14, 0x4b, 0x14, 0x44, 0x14, 0x37, 0x14, 0x2f, 0x14, 0x27, 0x14, 0x24, 0x14, 0x24, 0x14, 0x24, 0x10, 0x17, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x1c, 0x30, 0x1c, 0xf4, 0x1c, 0xff, 0x18, 0xff, 0x18, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xcc, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xf8, 0x1c, 0xa8, 0x14, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x14, 0x2b, 0x1c, 0xf3, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xf3, 0x1c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x18, 0xd8, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1c, 0xec, 0x1c, 0x87, 0x18, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x18, 0x5f, 0x18, 0x8c, 0x10, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x54, 0x1c, 0x57, 0x1c, 0x57, 0x18, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
#endif
};

const lv_img_dsc_t img_hand_green = {
  .header.always_zero = 0,
  .header.w = 100,
  .header.h = 9,
  .data_size = 900 * LV_IMG_PX_SIZE_ALPHA_BYTE,
  .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
  .data = img_hand_green_map,
};

使用工具轉換后,生成用XIP方式后代碼:

#include "assets_xip.h" 

#define  needle_green_map  (const uint8_t*)(XIP_ADDR_START + 0x00011604)

const lv_img_dsc_t needle_green = {
  .header.always_zero = 0,
  .header.w = 100,
  .header.h = 9,
  .data_size = 4500,
  .header.cf = 5,
  .data = needle_green_map,
  };

needle_green_map指向的就是FLash上的絕對地址。


還沒想好將這個小工具放在哪里合適,有想要這個小工具的愛好者,可以留言找我要。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM