配置kernel
問題總結
lcd模組功能主要是lcd液晶顯示
以 skyworth ili9881c hd為例,首先需要準備東西如下:
1、屏ic data sheet
2、初始化** —>獲得初始化螢幕ic的命令,用於編寫u-boot初始化檔案和.dtsi檔案(kernel)
首先從data sheet或者初始化**中可以獲得以下一些資訊:
1、水平脈衝寬度(qcom,mdss-dsi-h-pulse-width,hsync)為68
2、水平後沿值(qcom,mdss-dsi-h-back-porch,hbp)為120
3、水平前沿值(qcom,mdss-dsi-h-front-porch,hfp)為88
4、垂直脈衝寬度(qcom,mdss-dsi-v-pulse-width,vsync)為8
5、垂直後沿值(qcom,mdss-dsi-v-back-porch,vbp)為24
6、垂直前沿值(qcom,mdss-dsi-v-front-porch,vfp)為16
7、面板高度(qcom,mdss-dsi-panel-height,vadr)為1280
8、面板寬度(qcom,mdss-dsi-panel-width,hadr)為720
參考已有lcd驅動檔案,新增要增加lcd的驅動檔案,命名規則panel_ic_vendor_platform_res_mod.c
從原理圖中獲取gpio lcm_gpio_vcc和lcm_gpio_power
#include "sprd_panel.h"
#include "sprd_dsi.h"
#include "dsi/mipi_dsi_api.h"
#include "sprd_dphy.h"
static uint8_t init_data=
;//傳送命令
static int mipi_dsi_send_cmds
(struct sprd_dsi *dsi,
void
*data)
return0;
}static int ili9881c_init
(void
)//讀取lcd屏id
static int ili9881c_readid
(void);
uint8_t read_buf[4]
=;mipi_dsi_lp_cmd_enable
(dsi,
true);
mipi_dsi_gen_write
(dsi, cmd,
array_size
(cmd));
mipi_dsi_set_max_return_size
(dsi,1)
;mipi_dsi_dcs_read
(dsi,
0xda
,&read_buf[0]
,1);
//mipi_dsi_dcs_read(dsi, 0x01, &read_buf[1], 1);
printk
("lcd_ili9881c_mipi read id 0xda value is 0x%x !\n"
, read_buf[0]
);if(
(0x05
== read_buf[0]
))pr_err
("ili9881c read id failed!\n");
return-1
;}static int ili9881c_power
(int on)
else
return0;
}/*static int ili9881c_set_brightness(int brightness)
; struct sprd_dsi *dsi = &dsi_device;
set_bl_seq[1] = brightness >> 4 & 0x0f;
set_bl_seq[2] = brightness;
mipi_dsi_gen_write(dsi,&set_bl_seq[0], 3);
return 0;}*/
static struct panel_ops ili9881c_ops =
;static struct panel_info ili9881c_info =
,/* mipi dsi specific parameters */
.phy_freq =
552*
1000
,.lane_num =4,
.work_mode =
sprd_mipi_mode_video
,.burst_mode =
panel_video_burst_mode
,.nc_clk_en =
false,}
;struct panel_driver lcd_ili9881c_skyworth_hd_mipi_driver =
;
在bsp/bootloader/u-boot15/drivers/video/sprd/lcd/makefile中新增
obj-$(
config_fb_lcd_ili9881c_skyworth_hd_mipi
)+= lcd_ili9881c_skyworth_hd_mipi.o
在bsp//bootloader/u-boot15/include/configs/8541e_1h10.h
#define lcm_gpio_vcc
72#define lcm_gpio_power
73#define config_fb_lcd_ili9881c_skyworth_hd_mipi
在bsp/bootloader/u-boot15/drivers/video/sprd/lcd/panel_cfg.h中修改
extern struct panel_driver lcd_ili9881c_skyworth_hd_mipi_driver;
static struct panel_cfg supported_panel=
}
在bsp/bootloader/u-boot15/board/spreadtrum/8541e_1h10/ldo_sleep.c是能ldo
void
dcdc_ldo_power_on()
在bspbootloader/u-boot15/board/spreadtrum/8541e_1h10/regulator_init.c中設定ldo電流強度
static int power_on_voltage_init
(void
)
編譯uboot並燒錄,檢視lcd是否被點亮。如果沒有,新增適當log檢視,同時檢視porch值、clk、freq是否配置正確。
arch/arm/boot/dts/lcd/lcd_ili9881c_mipi_skyworth_hd.dtsi
/;}
; oled-backlight ;}
;};}
;
在bsp/kernel/kernel4.14/arch/arm/boot/dts/8541e-1h10.dts中新增
#include "lcd/lcd_ili9881c_mipi_skyworth_hd.dtsi"
編譯kernel並燒錄,檢視lcd是否被點亮。如果沒有,新增適當log檢視,同時檢視porch值、clk、freq是否配置正確。
問題1:u-boot階段lcd未被點亮
解決方法:
1、新增log,檢視lcd id是否讀取正常,保證走正常的init流程
2、檢視porch值、clk、freq是否正常,
phy_feq 理論計算
(pixelclk * 24 * 1.2)/lane_num
pixelclk理論計算
(width+hfp +hbp +hsync )*(height +vfp +vbp +vsync )*fps
問題2:kernel階段lcd未被點亮
解決方案:
檢視porch值、clk、freq是否正常,
phy_feq 理論計算
(pixelclk * 24 * 1.2)/lane_num
pixelclk理論計算
(width+hfp +hbp +hsync )*(height +vfp +vbp +vsync )*fps
問題3:背光調節有問題
解決方案
1、現有lcd背光調節方式為發命令給ic,ic自己調節,展銳預設背光調節為pwm調節,
2、修改kernel/kernel4.14/arch/arm/boot/dts/8541e-1h10-overlay.dts
將 pwm_backlight: sprd_backlight 修改為 pwm_backlight: sprd_pwm_backlight
問題3:調節背光值到最大,宕機
解決方案:
背光調節時,呼叫的為/kernel/kernel4.14/drivers/gpu/drm/sprd/sprd_panel.c中的static int sprd_oled_set_brightness(struct backlight_device *bdev)函式,新增log發現,背光為最大值時,資料溢位,檢視,發現背光brightness-levels個數為255,而struct sprd_oled中定義struct dsi_cmd_desc *cmds[255],當背光為255時,確實溢位了,因此,修改struct dsi_cmd_desc *cmds[255]為struct dsi_cmd_desc *cmds[256].
展銳NB IoT賦能 突破千萬 NB
據最新統計資料顯示,2019 年 nb iot使用者數已經突破 6000 萬,其中nb iot智慧型水表使用者數均超過 1000 萬大關,月增量已經超過2g。隨著物聯網的發展,我國在大力推進智慧型城市的建設。智慧型水務作為智www.cppcns.com慧城市的重要組成部分,已成為中國水務物聯公升級的...
展訊camera驅動除錯
camera驅動目錄 vendor sprd modules libcamera sensor sensor drv classic galaxycore gc030a kernel drivers misc sprd camera sensor csi2 csi sprd r2p0 csi dri...
紫光展銳秋招筆試 錯題筆記
此為我在作完紫光筆試後的錯題記錄與查詢,知識點涉及題目但不包含題目,是自己在考試過程中記錄暴露出來的知識盲區,考試後查的。聊作記錄,避免再犯。iqr中斷過程 mmu ddr cache 彙編arm wfi和wfe指令 arm 使用什麼技術來支援記憶體越界訪問檢測 記憶體顆粒 linux核心驅動dev...