1.1 适用范围
ES403属于商显智能主板,普遍适用于:广告机、数字标牌、智能自助终端、智能零售终端、O2O智能设备等。
1.2 产品概述
ES401采用全志V40Cortex-A7 四核CPU,搭载Android5.1系统,主屏高达1.2GHz,性能突出,性价比高。GPU采用Mail 400MP2,一流的图片和视频处理能力,是您在广告机、智能终端上的最佳选择。
1.3 产品特点
♦ 高清晰度。最大支持1080P的解码和各种LVDS信号显示屏;4lane MIPI DSI,最大支持1920X1200@60fps
♦ 支持远程、SD卡/TF卡、电脑等多种升级方式。
♦ SD卡/FG卡配置屏参,即插即亮,完美支持各尺寸,各分辨率LVDS显示屏。
♦ 完美支持行业主流发布软件、行业应用软件,即装即用。
♦ 完美支持红外、光学、电容、电阻等多种主流触摸屏,支持免驱触摸屏的HID配置,无需调试。
♦ 高扩展度。4路USB和7路串口,3路I2C、I2S和SPI接口,完美支持主流USB/串口设备,打印机、刷卡器、密码键盘、指纹仪、摄像头、身份证识别、二维码扫描仪等,提供demon测试程序。
♦ 内置3G/4G接口,支持华为、龙尚、中兴、域格、美格等主流模块,支持上网和通话。
1.4 外观及接口示意图
主要硬件指标 |
|
CPU |
全志V40,四核,主屏1.2GHz |
内存 |
*G |
内置存储器 |
EMMC/NAND FLASH 4/8/16/32G(可选) |
解码分辨率 |
最高支持1080P |
操作系统 |
Android 4.42 |
播放模式 |
支持循环、定时、插播等多种播放模式 |
网络支持 |
3G、以太网、支持WIFI、蓝牙4.0、无线外设扩展 |
视频播放 |
支持wmv、avi、flv、rm、rmvb、mpeg、ts、mp4等 |
图片格式 |
支持BMP、JPEG、PNG、GIF |
USB2.0接口 |
3个 USB HOST、1个USB插座 |
串口 |
7个串口插座 |
以太网 |
1个,10M/100M自适应以太网 |
SD卡 |
SD/TF卡(可选) |
SATA接口 |
支持内置SATA硬盘 |
LVDS输出 |
1个,支持双通道LVDS,最大1080P@60fps |
MIPI输出 |
1个,支持支持4 lane MIPI DSI,最大1920X1200@60fps |
RGB输出 |
1个,支持24位RGB屏,最大1080P@60fps |
HDMI输出 |
1个,支持1080P输出 |
音视频输出 |
支持SVBS视频输出、左右声道输出,内置双通道4R/3W功放 |
RTC实时时钟 |
支持 |
定时开关机 |
支持 |
系统升级 |
支持USB升级,网络升级,SD/TF卡升级 |
这次基于全志的车机平台的代码 android 4.42作为来修改,因为作为一款车机平台,用到的显示接口比较单一,一般就是LCD接口。项目要求支持双显,这里我们把HDMI 修改为EXTERNAL DISPLAY, LVDS MAIN DISPLAY,改动比较大,从内核驱动,到显示框架,全部修改了一遍。
显示相关的代码路径如下:
lichee/linux-3.10/drivers/video/sunxi/disp2/
disp hdmi tv
frameworks/base/core/java/android/hardware/display
DisplayManagerGlobal.java IDisplayManager.aidl VirtualDisplay.java WifiDisplaySessionInfo.java
DisplayManager.java IDisplayManagerCallback.aidl WifiDisplay.aidl WifiDisplayStatus.aidl
DisplayManagerPolicy2.java outputstate WifiDisplay.java WifiDisplayStatus.java
hardware/aw/hwc/magton/
Android.mk hal.cpp hwc.cpp hwc.h hwc_others.cpp hwc_sunxi.cpp sunxi_display2.h
;----------------------------------------------------------------------------------
;disp init configuration
;
;disp_mode (0:screen0
;screenx_output_type (0:none; 1:lcd; 3:hdmi;)
;screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)
; (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)
;fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444)
;fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA)
;fb0_scaler_mode_enable(scaler mode enable, used FE)
;fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)
;lcdx_backlight (lcd init backlight,the range:[0,256],default:197
;lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50)
;lcd0_contrast (LCD contrast, 0~100)
;lcd0_saturation (LCD saturation, 0~100)
;lcd0_hue (LCD hue, 0~100)
;----------------------------------------------------------------------------------
[disp]
disp_init_enable = 1
disp_mode = 0
;dev%d_output_type 1.LCD 2.TV 4.HDMI 8.VGA
dev0_output_type = 1
dev0_output_mode = 0
dev0_screen_id = 0
dev0_do_hpd = 0
def_output_dev = 0
hdmi_mode_check = 1
screen0_output_type = 1
screen0_output_mode = 0
screen1_output_type = 3
screen1_output_mode = 4
fb0_format = 0
fb0_width = 0
fb0_height = 0
fb1_format = 0
fb1_width = 0
fb1_height = 0
lcd0_backlight = 50
lcd1_backlight = 50
lcd0_bright = 50
lcd0_contrast = 50
lcd0_saturation = 57
lcd0_hue = 50
lcd1_bright = 50
lcd1_contrast = 50
lcd1_saturation = 57
lcd1_hue = 50
;----------------------------------------------------------------------------------
;lcd0 configuration
;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi
;lcd_x: lcd horizontal resolution
;lcd_y: lcd vertical resolution
;lcd_width: width of lcd in mm
;lcd_height: height of lcd in mm
;lcd_dclk_freq: in MHZ unit
;lcd_pwm_freq: in HZ unit
;lcd_pwm_pol: lcd backlight PWM polarity
;lcd_pwm_max_limit lcd backlight PWM max limit(<=255)
;lcd_hbp: hsync back porch
;lcd_ht: hsync total cycle
;lcd_vbp: vsync back porch
;lcd_vt: vysnc total cycle
;lcd_hspw: hsync plus width
;lcd_vspw: vysnc plus width
;lcd_lvds_if: 0:single link; 1:dual link
;lcd_lvds_colordepth: 0:8bit; 1:6bit
;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode
;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither
;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase;
; 8~11bit:dclk phase; 12~15bit:de phase)
;lcd_gamma_en lcd gamma correction enable
;lcd_bright_curve_en lcd bright curve correction enable
;lcd_cmap_en lcd color map function enable
;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch)
;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10;
; decrease it while lcd is not bright enough; increase while lcd is too bright
;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch)
;----------------------------------------------------------------------------------
[lcd0]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_backlight = 100
lcd_if = 3
lcd_x = 1920
lcd_y = 1080
lcd_width = 150
lcd_height = 94
lcd_dclk_freq = 150
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_pwm_max_limit = 255
lcd_hbp = 20
lcd_ht = 2200
lcd_hspw = 10
lcd_vbp = 10
lcd_vt = 2250
lcd_vspw = 5
lcd_lvds_if = 1
lcd_lvds_colordepth = 0
lcd_lvds_mode = 0
lcd_frm = 1
lcd_hv_clk_phase = 0
lcd_hv_sync_polarity= 0
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 1
lcdgamma4iep = 22
smart_color = 90
lcd_bl_en = 1
lcd_bl_en_used =1
lcd_bl_en =port:PB09<1><0>
lcd_power = "vcc-lcd"
lcdd0 = port:PD00<3><0>
lcdd1 = port:PD01<3><0>
lcdd2 = port:PD02<3><0>
lcdd3 = port:PD03<3><0>
lcdd4 = port:PD04<3><0>
lcdd5 = port:PD05<3><0>
lcdd6 = port:PD06<3><0>
lcdd7 = port:PD07<3><0>
lcdd8 = port:PD08<3><0>
lcdd9 = port:PD09<3><0>
lcdd10 = port:PD10<3><0>
lcdd11 = port:PD11<3><0>
lcdd12 = port:PD12<3><0>
lcdd13 = port:PD13<3><0>
lcdd14 = port:PD14<3><0>
lcdd15 = port:PD15<3><0>
lcdd16 = port:PD16<3><0>
lcdd17 = port:PD17<3><0>
lcdd18 = port:PD18<3><0>
lcdd19 = port:PD19<3><0>
lcd_pin_power = "vcc-pd"
[lcd0_suspend]
lcdd0 = port:PD00<7><0>
lcdd1 = port:PD01<7><0>
lcdd2 = port:PD02<7><0>
lcdd3 = port:PD03<7><0>
lcdd4 = port:PD04<7><0>
lcdd5 = port:PD05<7><0>
lcdd6 = port:PD06<7><0>
lcdd7 = port:PD07<7><0>
lcdd8 = port:PD08<7><0>
lcdd9 = port:PD09<7><0>
lcdd10 = port:PD10<7><0>
lcdd11 = port:PD11<7><0>
lcdd12 = port:PD12<7><0>
lcdd13 = port:PD13<7><0>
lcdd14 = port:PD14<7><0>
lcdd15 = port:PD15<7><0>
lcdd16 = port:PD16<7><0>
lcdd17 = port:PD17<7><0>
lcdd18 = port:PD18<7><0>
lcdd19 = port:PD19<7><0>
;----------------------------------------------------------------------------------
;pwm config
;----------------------------------------------------------------------------------
[pwm0]
pwm_used = 1
pwm_positive = port:PB2<3><0>
[pwm0_suspend]
pwm_positive = port:PB2<7><0>
;----------------------------------------------------------------------------------
;hdmi configuration
;hdmi_used: if hdmi is used
;hdmi_hdcp_enable: if hdmi hdcp function enable
;hdmi_cts_compatibility:if hdmi cts test compatibility enable
;hdmi_power: power name for hdmi
;----------------------------------------------------------------------------------
[hdmi]
hdmi_used = 1
hdmi_hdcp_enable = 0
hdmi_cts_compatibility = 0
双显实现了,剩下就是调用系统的api接口实现异显的功能了。