点击打开链接

0.关键字

MDSS : Multimedia Display sub system 
DSI: Display Serial Interface

qcom,mdss-dsi-force-clock-lane-hs;          // faulse :clock每帧回lp11   ture: clock不回
qcom,mdss-dsi-hfp-power-mode;               // data 每行回lp11,对应的hfp要修改成300以上
  • 1
  • 2

1.涉及文件

(1) drivers\video\fbmem.c (核心层)

  register_framebuffer(struct fb_info *fb_info)   //对外暴露核心函数
  • 1

(2)drivers\video\msm\mdss\mdss_fb.c (mdss 核心层 fbx平台设备驱动)

// 调用 fbmem.c的 register_framebuffer注册 fbx
  • 1

(4)msm8610-mdss.dtsi (文件名通常为 msmxxx-mdss.dtsi 指定了mdss 的 mdp 和 dsi)

  mdss_mdp: qcom,mdss_mdp@fd900000 {compatible = "qcom,mdss_mdp3";  // 对应mdss驱动 mdss_mdp.c----------mdss_dsi0: qcom,mdss_dsi@fdd00000 {compatible = "qcom,msm-dsi-v2";      // 对应dsi解析驱动 dsi_host_v2.c或者mdss_dsi0: qcom,mdss_dsi_ctrl0@1a94000 {compatible = "qcom,mdss-dsi-ctrl";  // 对应dsi解析驱动 mdss_dsi.c
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(3)drivers\video\msm\mdss\dsi_host_v2.c (lcd驱动 dsi)

// 通过下面函数向 mdss_fb.c 注册了fb_info结构  (包含在mdss_dsi_ctrl_pdata结构中)
dsi_panel_device_register_v2(struct platform_device *dev,struct mdss_dsi_ctrl_pdata *ctrl_pdata)static const struct of_device_id msm_dsi_v2_dt_match[] = {{.compatible = "qcom,msm-dsi-v2"},{}
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

或者 
drivers\video\msm\mdss\mdss_dsi.c


(5)drivers\video\msm\mdss\mdp3.c (mdp)

   .compatible = "qcom,mdss_mdp3",
  • 1
  • 2
  • 3

(6)msm8610-asus.dts (指定mdp中的哪一个配置) 
通常在dts文件的 mdss_dsi0 lab里面通过 qcom,dsi-pref-prim-pan 属性 指定使用哪一个lcd配置

&mdss_dsi0 {qcom,dsi-pref-prim-pan = <&dsi_fl10802_fwvga_vid>;
};
  • 1
  • 2
  • 3

(7)dsi-panel-fl10802-fwvga-video.dtsi

&mdss_mdp {dsi_fl10802_fwvga_vid: qcom,mdss_dsi_fl10802_fwvga_video {qcom,mdss-dsi-panel-name = "fl10802 fwvga video mode dsi panel";qcom,mdss-dsi-drive-ic = "fl10802";qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;qcom,mdss-dsi-panel-type = "dsi_video_mode";qcom,mdss-dsi-panel-destination = "display_1";...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2. mdss_mdp 和 mdss_dsi0 的关系

mdss_mdp 相当于一个数组,里面定义了很多不同lcd显示屏的配置项包括分辨率等等


mdss_dsi0 的 “qcom,dsi-pref-prim-pan ” 属性指定了使用mdss_mdp中哪一个lcd配置选项 


3.时序图

http://download.csdn.net/detail/u012719256/9603691 
画的有点渣,凑活看吧,不要在意细节  


4. 重要结构


结构关系


backLight
关键字:qcom,mdss-dsi-bl-pmic-control-type
  • 1
  • 2
  • 3

struct mdss_dsi_ctrl_pdata {int ndx;    /* panel_num */int (*on) (struct mdss_panel_data *pdata);                              // ★ onint (*off) (struct mdss_panel_data *pdata);                             // ★ offint (*partial_update_fnc) (struct mdss_panel_data *pdata);int (*check_status) (struct mdss_dsi_ctrl_pdata *pdata);int (*cmdlist_commit)(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp);void (*switch_mode) (struct mdss_panel_data *pdata, int mode);struct mdss_panel_data panel_data;                          //★  panel_data.set_backlight   设置背光亮度函数//★  panel_data.panel_info    = struct mdss_panel_info ①unsigned char *ctrl_base;struct dss_io_data ctrl_io;struct dss_io_data mmss_misc_io;struct dss_io_data phy_io;int reg_size;u32 bus_clk_cnt;u32 link_clk_cnt;u32 flags;struct clk *mdp_core_clk;struct clk *ahb_clk;struct clk *axi_clk;struct clk *mmss_misc_ahb_clk;struct clk *byte_clk;struct clk *esc_clk;struct clk *pixel_clk;u8 ctrl_state;int panel_mode; int irq_cnt;int rst_gpio;                   // ★ gpio  qcom,platform-reset-gpio:        Specifies the panel reset gpio.int disp_en_gpio;               // qcom,platform-enable-gpio:               Specifies the panel lcd/display enable gpio.int disp_te_gpio;               // qcom,platform-te-gpio:                   Specifies the gpio used for TE.int mode_gpio;                  // qcom,platform-mode-gpio:             Select video/command mode of panel through gpio when it supports both modes.int disp_te_gpio_requested;int bklt_ctrl;                  /* backlight ctrl 背光类型*/   int pwm_period;int pwm_pmic_gpio;int pwm_lpg_chan;int bklt_max;int new_fps;int pwm_enabled;bool dmap_iommu_map;struct pwm_device *pwm_bl;struct dsi_drv_cm_data shared_pdata;u32 pclk_rate;u32 byte_clk_rate;struct dss_module_power power_data;     // ★ clock & regulatoru32 dsi_irq_mask;struct mdss_hw *dsi_hw;struct mdss_panel_recovery *recovery;struct dsi_panel_cmds on_cmds;          // light on cmd  ★    qcom,mdss-dsi-on-commandstruct dsi_panel_cmds off_cmds;         // off cmd      ★    qcom,mdss-dsi-off-commandstruct dsi_panel_cmds status_cmds;u32 status_value;struct dsi_panel_cmds video2cmd;struct dsi_panel_cmds cmd2video;struct dcs_cmd_list cmdlist;struct completion dma_comp;struct completion mdp_comp;struct completion video_comp;struct completion bta_comp;spinlock_t irq_lock;spinlock_t mdp_lock;int mdp_busy;struct mutex mutex;struct mutex cmd_mutex;bool ulps;struct dsi_buf tx_buf;struct dsi_buf rx_buf;struct dsi_buf status_buf;int status_mode;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80


① struct mdss_panel_info


struct mdss_panel_info {u32 xres;                   // x 分辨率     qcom,mdss-dsi-panel-widthu32 yres;                   // y 分辨率        qcom,mdss-dsi-panel-heightu32 physical_width;         // x 物理大小   qcom,mdss-pan-physical-width-dimensionu32 physical_height;        // y 物理大小   qcom,mdss-pan-physical-height-dimensionstruct lcd_panel_info lcdc; // 边界       (1.1)边界u32 bpp;                    // bpp          qcom,mdss-dsi-bppstruct mipi_panel_info mipi; // mipi显示模式 video or cmd  (1.2)mipiu32 type;u32 wait_cycle;u32 pdest;                 // 第几个fb设备  qcom,mdss-dsi-panel-destination = "display_1";u32 brightness_max;u32 bl_max;u32 bl_min;u32 fb_num;u32 clk_rate;u32 clk_min;u32 clk_max;u32 frame_count;u32 is_3d_panel;u32 out_format;u32 rst_seq[MDSS_DSI_RST_SEQ_LEN];...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26


(1.1)边界


struct lcd_panel_info {u32 h_back_porch;u32 h_front_porch;u32 h_pulse_width;u32 v_back_porch;u32 v_front_porch;u32 v_pulse_width;u32 border_clr;u32 underflow_clr;u32 hsync_skew;/* Pad width */u32 xres_pad;       // qcom,mdss-dsi-h-left-border/* Pad height */u32 yres_pad;       // qcom,mdss-dsi-h-right-border
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(1.2)mipi

struct mipi_panel_info {char mode;      /* video/cmd */   // 显示模式   qcom,mdss-dsi-panel-type = "dsi_video_mode";char interleave_mode;char crc_check;char ecc_check;char dst_format;    /* shared by video and command */char data_lane0;char data_lane1;char data_lane2;char data_lane3;char dlane_swap;    /* data lane swap */char rgb_swap;char b_sel;char g_sel;char r_sel;char rx_eot_ignore;char tx_eot_append;char t_clk_post; /* 0xc0, DSI_CLKOUT_TIMING_CTRL */char t_clk_pre;  /* 0xc0, DSI_CLKOUT_TIMING_CTRL */char vc;    /* virtual channel */struct mdss_dsi_phy_ctrl dsi_phy_db;/* video mode */char pulse_mode_hsa_he;char hfp_power_stop;char hbp_power_stop;char hsa_power_stop;char eof_bllp_power_stop;char last_line_interleave_en;char bllp_power_stop;char traffic_mode;char frame_rate;/* command mode */char interleave_max;char insert_dcs_cmd;char wr_mem_continue;char wr_mem_start;char te_sel;char stream;    /* 0 or 1 */char mdp_trigger;char dma_trigger;/*Dynamic Switch Support*/bool dynamic_switch_enabled;u32 pixel_packing;u32 dsi_pclk_rate;/* The packet-size should not bet changed */char no_max_pkt_size;/* Clock required during LP commands */char force_clk_lane_hs;   //强制DSI_CLK始终处于HS,因我们用DSI CLK as 参考时钟char vsync_enable;char hw_vsync_mode;char lp11_init;u32  init_delay;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55


5.结构赋值

//结构从设备数中获取数据赋值     mdss_dsi_panel.cint mdss_dsi_panel_init(struct device_node *node,struct mdss_dsi_ctrl_pdata *ctrl_pdata,    int ndx)// use
Dsi_host_v2.c (drivers\video\msm\mdss): rc = mdss_dsi_panel_init(dsi_pan_node, ctrl_pdata, cmd_cfg_cont_splash);
Mdss_dsi.c (drivers\video\msm\mdss):            rc = mdss_dsi_panel_init(dsi_pan_node, ctrl_pdata, ndx);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

6.lk中传递lcm使用的dsi配置名字给kernel


aboot_init                           // lk\app\aboot\aboot.ctarget_display_init         // lk\target\msm8953\target_display.cgcdb_display_init        // lk\dev\gcdb\display\gcdb_display.cmsm_display_init  // display.cdisplay_image_on_screen   //aboot_init                           // lk\app\aboot\aboot.ctarget_display_init         // lk\target\msm8953\target_display.cgcdb_display_init        // lk\dev\gcdb\display\gcdb_display.coem_panel_select   // lk\target\msm8953\oem_panel.cpanel_id = NT51021B_INX_WUXGA_VIDEO_PANEL;    // ☆ panel_id 赋值,使用哪个lcd配置init_panel_data     switch (panel_id) {case NT51021B_INX_WUXGA_VIDEO_PANEL:panelstruct->paneldata    = &nt51021b_inx_wuxga_video_panel_data;   // 根据 panel_id 指定传给kernel使用的lcm配置----------// lk\dev\gcdb\display\include\panel_nt51021b_inx_wuxga_video.h  (lcm配置文件)static struct panel_config nt51021b_inx_wuxga_video_panel_data = {"qcom,mdss_dsi_nt51021b_inx_wuxga_video",    // ☆ panel_node_id 对应dtsi中 panel使用的名字 "dsi:0:", "qcom,mdss-dsi-panel",10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 1, 10000, 0, 0, 0, 0, 0, 0, NULL
};                                ----------// arch\arm64\boot\dts\qcom\dsi-panel-nt51021b-inx-wuxga-video.dtsi
&mdss_mdp {dsi_nt51021b_inx_wuxga_vid: qcom,mdss_dsi_nt51021b_inx_wuxga_video {//dts中的 panel名字qcom,mdss-dsi-panel-name = "nt51021b inx wuxga video mode dsi panel";  // 对应 sys/class/graphic/fb0/panl_info 中的信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

6.dts中command格式解析

qcom,mdss-dsi-on-command = [//            延时      reg data              29 01 00 00 01 00 02 8F A529 01 00 00 14 00 02 01 0029 01 00 00 01 00 02 8F A529 01 00 00 00 00 02 8C 8029 01 00 00 00 00 02 C7 5029 01 00 00 00 00 02 C5 5029 01 00 00 00 00 02 85 0429 01 00 00 00 00 02 86 0829 01 00 00 00 00 02 83 AA29 01 00 00 00 00 02 84 1129 01 00 00 00 00 02 A0 3629 01 00 00 00 00 02 A1 3629 01 00 00 00 00 02 9C 1029 01 00 00 00 00 02 A9 4B29 01 00 00 00 00 02 8F 00];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

7.fb旋转参数配置

(1) 方法1

fb_info->var->rotate                             // 是否旋转
  • 1

(2) 方法2


msm_fb_data_type->panel_orientation                  //是否旋转fb   (mdss_fb.h)// 通过dsi中的 qcom,mdss-dsi-panel-orientation 关键字控制  (mdss_dsi_panel.c)
data = of_get_property(np, "qcom,mdss-dsi-panel-orientation", NULL);if (data) {pr_debug("panel orientation is %s\n", data);if (!strcmp(data, "180"))pinfo->panel_orientation = MDP_ROT_180;else if (!strcmp(data, "hflip"))pinfo->panel_orientation = MDP_FLIP_LR;else if (!strcmp(data, "vflip"))pinfo->panel_orientation = MDP_FLIP_UD;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(3)方法三 
system/build.prop 
+ ro.panel.mountflip=3

frameworks/native/services/surfaceflinger/DisplayDevice.cpp
DisplayDevice::DisplayDevice// 1: H-Flip, 2: V-Flip, 3: 180 (HV Flip)property_get("ro.panel.mountflip", property, "0");mPanelMountFlip = atoi(property);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.展频

mdss-pll.c展频开关:arch/arm/boot/dts/qcom/msm8953-mdss-pll.dtsi   qcom,dsi-pll-ssc-en;mode:qcom,dsi-pll-ssc-mode = "down-spread";two parameters to program SSC :clk/msm/mdss/mdss-dsi-pll-8996.c:ssc_ppm_default & ssc_freq_default展频范围:down mode : freq - freq * (ssc_ppm/1000,000)center mode : freq ± freq * (ssc_ppm/1000,000) / 2up mode : freq + freq * (ssc_ppm/1000,000)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

9.bklt_en_gpio、 disp_en_gpio、 rst_gpio相关gpio口



// (msm8917-pmi8937-qrd-sku5.dtsi  board.dtsi )   mdss_dsi_active   mdss_dsi_suspend  qcom,platform-reset-gpio  qcom,platform-enable-gpio
&mdss_dsi0 {  qcom,dsi-pref-prim-pan = <&dsi_hx8394f_720p_video>;pinctrl-names = "mdss_default", "mdss_sleep";pinctrl-0 = <&mdss_dsi_active>;pinctrl-1 = <&mdss_dsi_suspend>;qcom,platform-reset-gpio = <&tlmm 60 0>;      // rstqcom,platform-enable-gpio= <&tlmm 46 0>;    //供电引脚
};//(mdss_dsi.c)   disp_en_gpio bklt_en_gpio rst_gpio// mdss_dsi_parse_gpio_params ctrl_pdata->disp_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-enable-gpio", 0);ctrl_pdata->disp_te_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-te-gpio", 0);ctrl_pdata->bklt_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-bklight-en-gpio", 0);ctrl_pdata->rst_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-reset-gpio", 0);ctrl_pdata->mode_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-mode-gpio", 0);// mdss_dsi_panel_power_onmdss_dsi_panel_reset(pdata, 1);   // (mdss_dsi_panel.c)gpio_set_value((ctrl_pdata->bklt_en_gpio), 0);gpio_set_value((ctrl_pdata->disp_en_gpio), 0);gpio_set_value((ctrl_pdata->rst_gpio), 0);// mdss_dsi_panel_power_offmdss_dsi_panel_reset(pdata, 0); // (mdss_dsi_panel.c)gpio_set_value((ctrl_pdata->bklt_en_gpio), 0);gpio_set_value((ctrl_pdata->disp_en_gpio), 0);gpio_set_value((ctrl_pdata->rst_gpio), 0);// (msm8917-pinctrl.dtsi)pmx_mdss: pmx_mdss {mdss_dsi_active: mdss_dsi_active {mux {pins = "gpio60", "gpio46";function = "gpio";};config {pins = "gpio60", "gpio46";drive-strength = <8>; /* 8 mA */bias-disable = <0>; /* no pull */
//                  output-high;};};mdss_dsi_suspend: mdss_dsi_suspend {mux {pins = "gpio60", "gpio46";function = "gpio";};config {pins = "gpio60", "gpio46";drive-strength = <2>; /* 2 mA */bias-pull-down; /* pull down */};};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

10.esd功能

qcom,esd-check-enabled                      // 是否使用esd check 功能
qcom,mdss-dsi-panel-status-check-mode       // esd check的方式 te_signal_check (只能在cmd模式下用)or reg_read
  • 1
  • 2
  • 3

10.1 cmd mode demo

qcom,mdss-dsi-te-pin-select = <1>;qcom,mdss-dsi-te-v-sync-rd-ptr-irq-line = <0x2c>;qcom,mdss-dsi-te-v-sync-continue-lines = <0x3c>;qcom,mdss-dsi-te-dcs-command = <1>;qcom,esd-check-enabled;                                         // enable esd checkqcom,mdss-dsi-panel-status-check-mode = "te_signal_check";              // esd check mode   te模式 (只能用作cmd模式)qcom,mdss-dsi-te-check-enable;                                      // teqcom,mdss-dsi-te-using-te-pin;                                      // use te pin   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10.2 video mode demo

qcom,esd-check-enabled;qcom,mdss-dsi-panel-status-check-mode = "reg_read";qcom,mdss-dsi-panel-status-command = [06 01 00 01 05 00 02 0A 08];qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode";qcom,mdss-dsi-panel-status-read-length = <1>;qcom,mdss-dsi-panel-max-error-count = <2>;qcom,mdss-dsi-panel-status-value = <0x9c>;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

linux qcom LCD framwork相关推荐

  1. Linux下LCD自动关闭解决方法,一般就自动十分钟黑屏的原因

    Linux下LCD自动关闭解决方法 主机环境:Gentoo Linux 11.2 内核版本:Linux Kernel 3.2.1 原创作品,转载请表明http://blog.csdn.net/ymin ...

  2. Linux内核 LCD 驱动程序框架

    Linux 内核 LCD 驱动程序框架 1. framebuffer 简介 1.1 什么是 framebuffer 1.2 framebuffer的作用 2. framebuffer 驱动的框架 3. ...

  3. Linux下LCD编程

    Linux下的帧缓冲lcd应用编程 (2009-12-16 22:25)一键转载 分类: xserver 原文地址:http://www.dzkf.cn/html/qianrushixitong/20 ...

  4. linux系统LCD驱动(三):mtk lcd驱动lcm的加载以及初始化

    上一篇博文(linux系统LCD驱动(二):mtk lcd驱动fb_info初始化)https://blog.csdn.net/Ian22l/article/details/105929192 提到m ...

  5. 【linux】Linux下LCD自动熄屏解决方法

    1.原因分析 参考博客: https://blog.csdn.net/BOJUE01/article/details/53468026?locationNum=5&fps=1 https:// ...

  6. linux pwm 调屏_基于嵌入式Linux的LCD背光调节及驱动的实现

    0 引言 在手持式设备中,液晶显示屏的使用越来越广泛.由于LCD自身是不能发光的,它需要一个强劲的光源来给它提供背光,以便清晰地显示信息.这样的光源是非常耗电的,通常液晶显示屏的功耗常常占到系统总功耗 ...

  7. Linux下LCD 10分钟自动关屏的问题总结

    记录一下,防止博客丢失.来自:http://blog.csdn.net/mao0514/article/details/46562057 Linux下的LCD驱动默认10分钟后会自动关闭屏幕,我们可以 ...

  8. Linux 2440 LCD 控制器

    嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http:/ ...

  9. 【正点原子I.MX6U-MINI应用篇】5、嵌入式Linux在LCD上显示BMP、JPG、PNG图片

    一.BMP图像介绍与显示 我们常用的图片格式有很多,一般最常用的有三种:JPEG(或 JPG).PNG.BMP和GIF.其中 JPEG(或JPG).PNG以及 BMP 都是静态图片,而 GIF 则可以 ...

最新文章

  1. 互联网10年,激战如梦
  2. a1278 win10声卡驱动_windows安装系列教程—驱动安装
  3. javascript中关于作用域和闭包
  4. linux的nohup命令的用法
  5. 详解@Autowired、@Qualifier和@Required
  6. [导入]WINRAR 命令行语法[转载]
  7. 独家 | 一文读懂自然语言处理NLP(附学习资料)
  8. 多站合一音乐搜索神器网站源码
  9. 【国产化电脑】如何有效避免违规外联
  10. java三国策略手游_策略三国下载-策略三国手游官网版下载-Minecraft中文分享站
  11. spark学习之资源调度
  12. 2012服务器系统怎么安装sql,使用安装向导安装 SQL Server 2012(安装程序)
  13. json模块错误:Expecting value: line 1 column 1 (char 0)
  14. (八)博客详情页面(内容排版typo.css)插件集成
  15. 3dmax2022兼容疯狂模渲大师最新版|疯狂模渲大师3.6.0.4下载安装步骤教程怎么激活素材库和装机3dmax超一流辅助客户端的?
  16. CSS盒子边框(border)样式综合样式
  17. 计算机网络原理 笔记整理
  18. 唯一ID生成算法剖析
  19. 我是新来的请多多关照
  20. Maya动画1:基础知识小球弹跳

热门文章

  1. java if语句选择题_选择语句(if else) 习题(2017/12/1)
  2. matebook14支持触摸屏吗_华为MateBook 14 2021发布,触摸屏成标配
  3. 092_元素的几种宽度和高度
  4. java框架核心技术_你必须掌握的 21 个 Java 核心技术!(干货)
  5. python xlrd xlwt综合_xlrd和xlwt -- python
  6. l2-004 这是二叉搜索树吗?_LeetCode 例题精讲 | 11 二叉树转化为链表:二叉树遍历中的相邻结点...
  7. Java关键字final、static、this、super使用总结
  8. Java基础:基本数据类型包装类
  9. Android CardView 开发过程中要注意的细节
  10. html 监听input输入框的值,利用原生JS实时监听input框输入值