開發板
lcd
的螢幕驅動,
itop-4412
開發板支援
4.3
寸, 7
寸, 9.7
寸的 lcd
顯示屏。其中
4.3
寸屏是用的
cpu
直接出來的
rgb
訊號,7
寸屏和
9.7
寸屏是用的
lvds
訊號,硬體 上 使 用 了 一 個
rgb
轉 lvds
的 芯 片 實 現 的 。 我 們 來 看 下 顯 示 驅 動 , 顯 示 驅 動 在 內 核 的「
drivers/video/samsung
」 目錄下面, 這個驅動是三星提供好的, 我們這支只講下我們需要修改的幾個檔案。
首先是關於螢幕的解析度的修改,因為不同的螢幕解析度,頻率以及其他一些硬體引數是不同的,所以我們需要根據這些引數去配置 cpu
的顯示控制器, 關於這些引數是在 「
driversvideo/samsung/s3cfb_wa101s.c
」這個檔案,開啟這個檔案我們可以看到這個檔案主要就是定義了乙個型別是
s3cfb_lcd
的變數
wa101
,螢幕的硬體引數(解析度,時鐘頻率以及其它)就是儲存在這個變數裡面,現在我們來看下這個變數結構型別的定義:
struct s3cfb_lcd ;
其中的 width
和 height
指螢幕的解析度,
freq
是時鐘頻率,
bpp
是資料位。
timing
是螢幕的其他一些引數,
timing 的型別定義如下:
struct s3cfb_lcd_timing ;
這個結構代表螢幕的左間距,右間距,水平同步訊號寬度,垂直同步訊號的有效行數等螢幕的硬體引數,這些
引數可以通過檢視螢幕的資料手冊獲得。
下面是 polarity
變數,他的定義如下:
struct s3cfb_lcd_polarity ;
這個變數代表時鐘行場的極性。
通過修改這個檔案裡面的這些引數就可以設定 cpu
的顯示控制器來支援我們使用的
lcd
螢幕了。
itio-4412 開發板核心啟動時
lcd
會顯示
logo
,關於這個
logo
是儲存在「
drivers/video/samsung/
itop-4412.h」檔案,開啟這個檔案,會看到裡面指示定義了乙個陣列
ibitmapdata_q
,這個陣列的內容就是
要顯示的 logo
。我們修改
logo
,就需要準備一張
480x640
的 bmp
然後使用
image2lcd
軟體轉換成
陣列,把 ibitmapdata_q
裡面的內容用新生成的陣列替換掉。
有 可 能 我 們 自 己 制 作 的 logo
沒 有 顯 示 在 屏 幕 的 最 中 央 , 那 我 們 需 要 修 改 下 文 件
「drivers/video/samsung/ s3cfb_ops.c
」 ,在這個檔案找到函式:
s3cfb_draw_logo
int s3cfb_draw_logo(struct fb_info *fb)
else
top = 170;
left = 230;
index = 0;
for (i = 0; i < 480; i++)
}#endif
#endif
return 0;
}修改這個函式裡面的 top
和 left
就可以控制在螢幕顯示的位置了。
下面我們來看一下 lcd
的控制檔案:
arch/arm/mach-exynos/setup-fb-s5p.c
在這個檔案的 s3cfb_cfg_gpio
函式完成
lcd
資料引腳初始化, 驅動能力設為最高
s5p_gpio_drvstr_lv4
;管腳驅動能力,s5p_gpio_drvstr_lv1-4
四個等級選擇,並且設定
lvds
晶元的使能引腳輸出高:
void s3cfb_cfg_gpio(struct platform_device *pdev)
gpio_direction_output(exynos4_gpl1(0), 1);
s3c_gpio_cfgpin(exynos4_gpl1(0), s3c_gpio_output);
gpio_free(exynos4_gpl1(0));
#endif
}然後是時鐘控制函式,完成時鐘的使能和關閉:
int s3cfb_clk_on(struct platform_device *pdev, struct clk **s3cfb_clk)
ret = clk_enable(lcd_clk);
if (ret < 0)
clk_put(lcd_clk);
sclk = clk_get(&pdev->dev, "sclk_fimd");
if (is_err(sclk))
if (soc_is_exynos4210())
mout_mpll = clk_get(&pdev->dev, "mout_mpll");
else
mout_mpll = clk_get(&pdev->dev, "mout_mpll_user");
if (is_err(mout_mpll))
ret = clk_set_parent(sclk, mout_mpll);
if (ret < 0)
ret = clk_set_rate(sclk, 800000000);
if (ret < 0)
dev_dbg(&pdev->dev, "set fimd sclk rate to %d\n", rate);
clk_put(mout_mpll);
ret = clk_enable(sclk);
if (ret < 0)
*s3cfb_clk = sclk;
return 0;
err_clk2:
clk_put(mout_mpll);
err_clk1:
clk_put(sclk);
err_clk0:
clk_put(lcd_clk);
return -einval;
}int s3cfb_clk_off(struct platform_device *pdev, struct clk **clk)
clk_disable(lcd_clk);
clk_put(lcd_clk);
clk_disable(*clk);
clk_put(*clk);
*clk = null;
return 0;
err_clk0:
clk_put(lcd_clk);
return -einval;
}void s3cfb_get_clk_name(char *clk_name)
然後是 s3cfb_backlight_on
函式,這個是使能螢幕顯示,
s3cfb_backlight_off
關閉螢幕顯示。
iTOP 4412開發板刷ubuntu
此文章講解了itop 4412開發板上刷寫ubuntu的流程。android qt 最小linux系統的刷寫也可以此為參考,但這三個系統更建議使用fastboot刷寫方式,速度更快,更簡單。準備工具 2g以上大小tf卡乙個 ubuntu虛擬機器 其他linux虛擬機器也可 乙個 超級終端 secur...
迅為iTOP 4412開發板精英版
核心板引數 核心板尺寸 60mm 70mm 高度 連同聯結器在內2.6mm cpu exynos4412,四核cortex a9,主頻為1.4ghz 1.6ghz 記憶體 1gb 雙通道 ddr3 2gb可選 儲存 4gb emmc 16gb可選 電源管理 低功耗動態三星s5m8767電源管理,最優...
iTOP 4412開發板 mqtt移植教程(二)
基於迅為itop 4412開發板在 ubuntu 的 home topeet 下建立乙個 mqtt arm 的資料夾,如下圖所示 我們進入我們安裝的 mosquitto 1.5 目錄下,作者這裡是安裝在了 opt mosquitto arm 下,如下圖所示 我們把當前路徑下的 etc mosquit...