最近在研究基于imx6ull開發闆,想讓開發闆支援顯示圖檔、字元串、背景色的功能。
操作的主要步驟如下:
- 移植裝置樹和驅動
- 移植libjpeg庫
- 編寫測試程式
一、移植裝置樹和驅動
開發闆原廠SDK已經移植了lcd對應的裝置樹和驅動。具體可以參考韋東山老師的文章
https://blog.csdn.net/thisway_diy/article/details/104697924
二、移植libjpeg庫
1.下載下傳libjpeg庫
下載下傳位址:
http://www.ijg.org/files/
選擇版本:jpegsrc.v6b.tar.gz
2.解壓
yikou@ubuntu:/work/lib$ tar -zxvf jpegsrc.v6b.tar.gz
3.配置
yikou@ubuntu:/work/lib$ cd jpeg-6b/
./configure --host=arm-linux-gnueabihf --prefix=$PWD/temp_install
如果遇到錯誤提示沒有某個目錄,隻需要手動建立即可
4. 安裝
yikou@ubuntu:/work/lib/jpeg-6b$ make
yikou@ubuntu:/work/lib/jpeg-6b$ make install
5.檢視
yikou@ubuntu:/work/lib/jpeg-6b$ cd temp_install/
yikou@ubuntu:/work/lib/jpeg-6b/temp_install$ ls
bin include lib share
我沒有使用動态庫,而是直接使用靜态庫/work/lib/jpeg-6b/libjpeg.a 編譯代碼,友善操作。
三、 編譯測試程式
一口君是把靜态庫直接拷貝到測試代碼目錄lib下,頭檔案拷貝到include下。
- lcd.c、lcd_show_jpeg.c為基于libjpeg庫實作的顯示漢字、顯示圖檔、劃線等功能函數。
- HZK16為漢字庫
- ./lib/libjpeg.a 是libjpeg靜态庫
- include下的頭檔案是圖檔格式處理、顯示字元串、劃線要用到的其他的頭檔案
這些功能具體原理,可以自己檢視代碼,暫不讨論。
完整代碼請關注 一口Linux,背景回複IMX6ULLlcd
以下是測試程式檔案:
main.c
#include <stdio.h>
#include <unistd.h>
#include "lcd.h"
#include "lcd_show_jpeg.h"
int main(int argc, const char *argv[])
{
LCD_Init(); //初始化
LCD_Clear(RED);//背景呈紅色
for(;;)
{//1024 * 600
printf("------一口Linux----------\n");
LCD_PutString(240,136,"一口Linux",BLUE,RED);//在240.136位置顯示一口Linux,藍字紅底
sleep(1);
LCD_Clear(BLUE);
show_jpeg("test.jpeg");//顯示圖檔test.jpeg
sleep(10);
}
return 0;
}
arm-linux-gnueabihf-gcc *.c -o run -I ./include/ ./lib/libjpeg.a
執行結果:
想呈現其他顯示效果,隻需根據執行個體調用對應函數即可。
備注:常見錯誤解決
如果版本選擇的不對,會遇到以下錯誤:
Wrong JPEG library version: library is 90, caller expects 62
因為使用的庫版本太高是90的,是以需要下載下傳62版本,對應的是這個壓縮包jpegsrc.v6b.tar.gz。
其中:62 對應 6b
在移植mjpeg-streamer也會遇到類似錯誤,按照步驟修改即可。
然後按照1-5步驟重新操作即可
更多linux知識,關注 一口Linux
歡迎關注公衆号:一口Linux