Tegra K1 内建 2 個顯示控制器 tegradc.0 與 tegradc.1, R21.2 核心配置同時配置 framebuffer 裝置 fb0 與 fb1, tegradc.0 為 fb0, tegradc.1 為 fb1. 

ubuntu@tegra-ubuntu:~$ ls /dev/fb*
/dev/fb0 /dev/fb1

fb1 為 HDMI 顯示器. fb0 為 DSI WXGA 顯示器, 定義於 board-ardbeg-panel.c::ardbeg_panel_configure(). 

default:
        panel = &dsi_p_wuxga_10_1;
        tegra_io_dpd_enable(&dsic_io);
        tegra_io_dpd_enable(&dsid_io);
break;

可使用 fbset 取得 framebuffer 裝置資訊.

<< 安装 fbset >>

ubuntu@tegra-ubuntu:~$ sudo apt-get install fbset

<< 取得 fb0 與 fb1 資訊 >>

ubuntu@tegra-ubuntu:~$ fbset -i -fb /dev/fb0

mode "1920x1200-60"
# D: 154.679 MHz, H: 74.080 kHz, V: 59.984 Hz
geometry 1920 1200 1920 2400 32
timings 6465 32 120 16 17 16 2
hsync high
vsync high
rgba 8/0,8/8,8/16,8/24
endmode

Frame buffer device information:
Name : tegra_fb
Address : 0xf8500000
Size : 18874368      <-- fb0 使用约 18MB
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 7680
Accelerator : No

ubuntu@tegra-ubuntu:~$ fbset -i -fb /dev/fb1

mode "1920x1080-60"
# D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
geometry 1920 1080 1920 2160 32
timings 6734 148 88 36 4 44 5
rgba 8/0,8/8,8/16,8/24
endmode

Frame buffer device information:
Name : tegra_fb
Address : 0xf9700000
Size : 75497472
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 7680
Accelerator : No

本文將修改核心, 利用 CONFIG_TEGRA_HDMI_PRIMARY 配置 fb0 為 HDMI, 去除 fb1. tegradc.1 將配置為 fb0, 停用 tegradc.0.

<< 参考 建立 BusyBox 根文件系統 (ROOTFS) 一文建立 BusyBox 開機 SD 卡 >>

<< 導入核心修正 >>

https://github.com/ArtisteHsu/jetson-tk1-r21.2-kernel/commit/1d7fe9777f88ea3d140772127d6b9613764c9f36

<< 啟動核心 CONFIG_TEGRA_HDMI_PRIMARY 配置 >>

diff --git a/arch/arm/configs/tegra12_defconfig b/arch/arm/configs/tegra12_defconfig
index 0d421c0..32546c6 100644
--- a/arch/arm/configs/tegra12_defconfig
+++ b/arch/arm/configs/tegra12_defconfig
@@ -619,4 +619,4 @@ CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_TWOFISH=m
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_DEV_TEGRA_SE=y
-# CONFIG_TEGRA_HDMI_PRIMARY is not set
+CONFIG_TEGRA_HDMI_PRIMARY=y

<< 编譯核心並更新 BusyBox 開機 SD 卡核心 zImage>>

编譯核心(kernel)與裝置樹(device tree) 

<< 修改 BusyBox 開機 SD 卡 framebuffer console 對應值 >>

修改 /boot/extlinux/extlinux.conf 中 fbcon 参數.

APPEND console=ttyS0,115200n8 console=tty1 no_console_suspend=1 lp0_vec=2064@0xf46ff000 mem=2015M@2048M memtype=255 ddr_die=2048M@2048M section=256M pmuboard=0x0177:0x0000:0x02:0x43:0x00 tsec=32M@3913M otf_key=c75e5bb91eb3bd947560357b64422f85 usbcore.old_scheme_first=1 core_edp_mv=1150 core_edp_ma=4000 tegraid=40.1.1.0.0 debug_uartport=lsport,3 power_supply=Adapter audio_codec=rt5640 modem_id=0 android.kerneltype=normal fbcon=map:0 commchip_id=0 usb_port_owner_info=0 lane_owner_info=6 emc_max_dvfs=0 touch_id=0@0 board_info=0x0177:0x0000:0x02:0x43:0x00 root=/dev/mmcblk1p1 rw rootwait

<< 使用 BusyBox 開機 SD 卡啟動 Jetson TK1 並確認 framebuffer 裝置 >> 

除錯訊息在 HDMI 顯示器且只有 fb0.

Please press Enter to activate this console.
/# ls /dev/fb*
/dev/fb0

 (完成)

 

 

文章標籤
創作者介紹
創作者 版大 的頭像
版大

嵌入式系統

版大 發表在 痞客邦 留言(0) 人氣()