主頁 > 作業系統 > qcom 8953平臺 LCD亮滅屏流程及LCD知識點總結【轉】

qcom 8953平臺 LCD亮滅屏流程及LCD知識點總結【轉】

2020-09-13 20:15:11 作業系統

一、LK中亮屏流程

  1. gcdb_display_init(),進行display初始化的起始地方;
  2. oem_panel_select(),在這里去選擇哪一款屏,也可以在這里添加新一款屏;
  3. dsi_panel_init()把屏頭檔案中的配置資訊拷貝到結構體中,并一些屏需要的配置;
  4. msm_display_init(),給屏上電和初始化時鐘,申請FB緩沖區,配置display,點亮螢屏,打開背光;
  5. 讀取圖片資料放到緩沖區中,呼叫函式fbcon_extract_to_screen()來把圖片顯示到螢屏上;原理:splash.img內容都會加載到記憶體中,然后把記憶體圖片的資料拷貝到FB記憶體中;
  6. 最后FB的資料會通過DMA的方式把FB中的資料給DSI控制器;
函式加載流程:
dsi_panel_init(struct msm_panel_info *pinfo,struct panel_struct *pstruct)---->panel初始化,獲取屏的基本資訊,從屏對應的頭檔案中;
msm_display_init();---->亮屏的開始
pdata->power_func(1, &(panel->panel_info));---->給屏上電,panel.power_func = mdss_dsi_panel_power;
pdata->dfps_func(&(panel->panel_info));---->panel.dfps_func = mdss_dsi_mipi_dfps_config;
pdata->pll_clk_func(1, &(panel->panel_info));---->使能時鐘;panel.pll_clk_func = mdss_dsi_panel_clock;
msm_fb_alloc(&(panel->fb));----->申請FB緩沖區
msm_display_config();------->LCD的基本配置;如;mipi的配置,DSI控制器的初始化等;
msm_display_on();------>向LCD屏的暫存器中寫入ON_command命令引數,并檢測mipi的資料通道是否是通路;
ret = pdata->bl_func(1);---->背光使能;初始化背光;

二、kernel中亮屏流程

上層呼叫ioctrl()函式向底層FB節點發送亮滅屏事件命令,底層呼叫fb_ioctrl()函式去呼叫fb_blank()以通知鏈的方式去通知TP和加載一系列事件函式,根據事件命令去處理對應的操作,而這個
事件處理函式是在DSI驅動中的probe()函式中注冊的;

  1. 先執行LCD上電事件命令,再執行亮屏事件命令,經過函式呼叫,最侄訓呼叫到在DSI驅動中決議屏的on_command命令引數寫入到LCD屏對應的暫存器中,亮屏后,在打開背光;

  2. 執行滅屏操作和亮屏操作其實差不多,也是把滅屏的OFF_command指令寫到LCD暫存器中,但在執行命令之前,會把背光設定為0,關閉背光;在執行完滅屏事件后,再去執行給LCD下電的操作;

亮屏操作流程;

fb_ioctl()------->framebuff節點對應的函式操作,位置:fbdev/core/fbmem.c ,創建一個FB節點給上層去操作;
  info = file_fb_info(file);---->獲取mdss_fb_probe()里面注冊的一些函式;
  do_fb_ioctl();
  fb_blank(struct fb_info *info, int blank);---->引數blank就是下面函式中的blank_mode;這個是亮屏的起始函式;
    fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);---->TP通知鏈,通知TP做一些相應的動作;
    mdss_fb_blank(int blank_mode, struct fb_info *info);------>啟動事件子系統;---->fb_blank = mdss_fb_blank();在fb_probe中注冊的;
    mdss_fb_blank_sub(int blank_mode, struct fb_info *info,int op_enable);----->switch函式中判斷的根據blank_mode;
      mdss_fb_blank_unblank(mfd);----->亮屏操作;
	mfd->mdp.on_fnc();--->mdp5_interface->on_fnc = mdss_mdp_overlay_on;
	mdss_mdp_overlay_on();------>mdp5_interface->on_fnc = mdss_mdp_overlay_on;
	mdss_mdp_overlay_kickoff();
		mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg,struct mdss_mdp_commit_cb *commit_cb);
			ctl->ops.display_fnc;----->ctl->ops.display_fnc = mdss_mdp_video_display;  mdss_mdp_video_display()回呼函式注冊在mdss_mdp_video_start()中;///////////
			mdss_mdp_video_display();------->亮屏的主要函式;
				mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_LINK_READY, NULL,CTL_INTF_EVENT_FLAG_DEFAULT);---->上電操作;
					mdss_dsi_on(struct mdss_panel_data *pdata);
					mdss_dsi_panel_power_ctrl(pdata, MDSS_PANEL_POWER_ON);---->上電操作
				mdss_mdp_ctl_intf_event(ctl,MDSS_EVENT_UNBLANK, NULL,CTL_INTF_EVENT_FLAG_DEFAULT);----->發送亮屏(MDSS_EVENT_UNBLANK)和滅屏(MDSS_EVENT_BLANK)事件來點亮和熄滅屏;
					rc = pdata->event_handler(pdata, event, arg);------->接受事件去處理;ctrl_pdata->panel_data.event_handler = mdss_dsi_event_handler;
					mdss_dsi_event_handler(struct mdss_panel_data *pdata,int event, void *arg);-----》事件處理函式;
						mdss_dsi_unblank(struct mdss_panel_data *pdata);----->點亮屏和使能TE引腳中斷等功能;
						ctrl_pdata->on(pdata);--->ctrl_pdata->on = mdss_dsi_panel_on;
							mdss_dsi_panel_on(struct mdss_panel_data *pdata);---->發送on命令和螢屏相關引數命令;
								mdss_dsi_panel_cmds_send(ctrl, on_cmds, CMD_REQ_COMMIT);---->發送on_cmds,CE_cmds,CABC_cmds等命令;
				mdss_mdp_ctl_intf_event(ctl,MDSS_EVENT_PANEL_ON, NULL);---->也是點亮屏,只是這個另一模式HS模式,這個模式主要在dtsi檔案中去配;
			mdss_fb_set_backlight(mfd, mfd->unset_bl_level);----->打開背光;

滅屏函式流程:

在這里插入fb_ioctl()------->framebuff節點對應的函式操作,位置:fbdev/core/fbmem.c ,創建一個FB節點給上層去操作;
info = file_fb_info(file);---->獲取mdss_fb_probe()里面注冊的一些函式;
do_fb_ioctl();
fb_blank(struct fb_info *info, int blank);---->引數blank就是下面函式中的blank_mode;這個是亮屏的起始函式;
fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);---->TP通知鏈,通知TP;
mdss_fb_blank(int blank_mode, struct fb_info *info);------>啟動事件子系統;---->fb_blank = mdss_fb_blank();在fb_probe中注冊的;
mdss_fb_blank_sub(int blank_mode, struct fb_info *info,int op_enable);----->switch函式中判斷的根據blank_mode;
mdss_fb_blank_blank();
mdss_panel_is_power_off(req_power_state);----->有一個電源狀態檢測;
mdss_fb_stop_disp_thread(mfd);--->關閉那個dispaly處理執行緒;
mdss_fb_set_backlight(mfd, 0);---->設定背光亮度為0;關閉背光;
mdss_mdp_overlay_off(mfd);---->mdp5_interface->off_fnc = mdss_mdp_overlay_off;
mdss_mdp_ctl_stop(mdp5_data->ctl, mfd->panel_power_state);--->滅屏
mdss_mdp_video_stop(struct mdss_mdp_ctl *ctl, int panel_power_state);-------->ctl->ops.stop_fnc = mdss_mdp_video_stop;
mdss_mdp_video_intfs_stop();
mdss_mdp_video_ctx_stop();
mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_BLANK, NULL,CTL_INTF_EVENT_FLAG_DEFAULT);
mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_PANEL_OFF, NULL,CTL_INTF_EVENT_FLAG_DEFAULT);
mdss_dsi_blank();----->滅屏事件處理函式
ctrl_pdata->off(pdata);---->滅屏指令的發送;
mdss_dsi_panel_off(struct mdss_panel_data *pdata);
mdss_dsi_panel_cmds_send(ctrl, &ctrl->off_cmds, CMD_REQ_COMMIT);
mdss_dsi_off(pdata, power_state);---->下電操作;
mdss_dsi_panel_power_ctrl(pdata, power_state);----下電;代碼片

三、背光呼叫流程

背光概念:背光是控制螢屏亮度,
背光控制有3種方式: 1.LED燈控制背光,通過控制LED的電流大小,來控制最大亮度,通過控制級數來控制背光的變化;(pmic提供引腳)
		  2.PWM的方式控制背光,從電路中引出某一引腳來控制三極管電路,從而控制電路的電流大小;(單獨的電路芯片)
		  3.命令集的方式控制背光,通過以命令的方式向暫存器中寫入控制的值來控制電路;(它的供電的腳是從LCD芯片引出來的)
wled方式背光驅動路徑:kernel/msm-3.18/drivers/leds

背光級別的映射關系:(這個很重要,跟上層設定滑動亮度進度條,亮度值大小有關系,)
#define MDSS_BRIGHT_TO_BL(out, v, bl_max, max_bright) do {\
				out = (2 * (v) * (bl_max) + max_bright);\
				do_div(out, 2 * max_bright);\
				} while (0)

mdss_fb_probe():
backlight_led.brightness = mfd->panel_info->brightness_max;
backlight_led.max_brightness = mfd->panel_info->brightness_max;
	led_classdev_register(&pdev->dev, &backlight_led);---->注冊背光目錄和節點供上層使用;(重要點,上層會操作該目錄的節點去控制背光亮度)
		device_create_with_groups();----->創建背光組控制;一系列的節點檔案;

上層對節點寫亮度值,底層亮度設定的操作流程:
mdss_fb_set_bl_brightness();---->mdss_fb.c
	mdss_fb_set_backlight();----->mdss_fb.c
		mdss_fb_scale_bl(mfd, &temp);----->CABL開啟后,會重新計算出一個背光值,目的是降低功耗;
		pdata->set_backlight(pdata, temp);----->mdss_dsi_panel.c
		mdss_dsi_panel_bl_ctrl(struct mdss_panel_data *pdata, int level);----->這邊已經可以達到4095級別;
			led_trigger_event(struct led_trigger *trig, int brightness);
				led_set_brightness(struct led_classdev *led_cdev, int brightness);
					__led_set_brightness(struct led_classdev *led_cdev, int brightness);
						led_cdev->brightness_set(led_cdev, brightness);----->函式指標的方式跳轉到設定函式;
							qpnp_wled_set(led_cdev, brightness);------->kernel/msm-3.18/drivers/leds/leds-qpnp-wled.c
								schedule_work(&wled->work);----->呼叫作業佇列,使用作業執行緒去執行這設定函式;
									qpnp_wled_set_level(struct qpnp_wled *wled, int level);
										qpnp_wled_write_reg();------>分別向暫存器中寫入高8位和低8位資料;
											qpnp_wled_sync_reg_toggle();---->同步暫存器
									qpnp_wled_module_en();----->背光是否使能;

四、LCD知識點總結

4.1.資料顯示流程frambuff的注冊

4.1.1 FB注冊流程

4.1.2 影像資料顯示流程

4.2.LCD屏上下電機時鐘

DSI時鐘計算如下:
H-total = HorizontalActive + HorizontalFrontPorch + HorizontalBackPorch + HorizontalSyncPulse + HorizontalSyncSkew(data + 前肩 +后肩 + 行同步(換行時鐘 + 電子前移時鐘))

V-total = VerticalActive + VerticalFrontPorch + VerticalBackPorch + VerticalSyncPulse + VerticalSyncSkew

Total pixel = H-total * V-total * 60(Hz通常都是這個,當然可以變).

Bitclk = Total pixel * bpp(byte) *8/lane number(有幾路mipi data lane).

Byteclk = bitclk/8

Dsipclk(Dsi pixel clock) = (Byteclk * lane number)/bpp(byte) = Total pixel * 8

Byteclk = pclk * pixel depth / lane number

另一種寫法:(一秒傳輸資料的所需要的時鐘,這跟幀率有關系)
PLL_CLOCK:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2;

MIPI時鐘是每一條資料通道的時鐘,因為在傳輸資料的時候,是多資料通道同時在傳輸資料,并且只用一個時鐘腳;

4.3.ESD防靜電

高通的esd功能也是通過dtsi來配置的,如:
qcom,esd-check-enabled;
                qcom,mdss-dsi-panel-status-command      = [06 01 00 01 05 00 01 0A];//read reg
                qcom,mdss-dsi-panel-status-command-mode = "dsi_lp_mpde";
                qcom,mdss-dsi-panel-status-check-mode   = "reg_read";
                qcom,mdss-dsi-panel-status-read-length  = <1>;
                qcom,mdss-dsi-panel-status-valid-params = <1>;
                qcom,mdss-dsi-panel-status-value        = https://www.cnblogs.com/linhaostudy/p/<0x9C>;//right value
                qcom,mdss-dsi-panel-max-error-count     = <3>;
需要注意的是,這些屬性對應的引數除qcom,mdss-dsi-panel-max-error-count都沒有默認值,如果配置不完整,可能會導致整個esd功能失效,配置完成后,確保螢屏無例外,
可以修改qcom,mdss-dsi-panel-status-value為其他值,觀察是否有esd resume情況發生,判斷esd機制是否生效,

總結:上層會在定時去檢查螢屏是否有問題,而ESD這個功能的檢測就去檢測是否有問題,ESD功能的檢測有兩種方式,一種是TE引腳的方式(硬體),一種是讀取暫存器值的方式(軟體);
到時候系統去定時檢測屏狀態時,會根據dtsi里配置的ESD方式去呼叫相應的函式來檢測;根據 "qcom,mdss-dsi-panel-status-check-mode"去判斷哪一種模式;

1.讀暫存器方式check dsi 狀態的流程:
__init mdss_dsi_status_init(void);--->驅動加載函式;
  check_dsi_ctrl_status();---->INIT_DELAYED_WORK(&pstatus_data->check_status, check_dsi_ctrl_status);作業佇列的方式;
    mdss_check_dsi_ctrl_status();----->pdsi_status->mfd->mdp.check_dsi_status(work, ESD_interval);作業佇列的方式;
      mdss_dsi_reg_status_check();---->會把這個函式放在延遲作業佇列中去執行;
        mdss_dsi_gen_read_status();------->check_read_status(ctrl_pdata);---->ctrl->check_read_status = mdss_dsi_gen_read_status;
          mdss_dsi_cmp_panel_reg_v2();----->讀取對應的暫存器值,并與在之前的dtsi檔案設定的值,進行比較;

2.TE引腳中斷方式去check dsi 狀態的流程;
__init mdss_dsi_status_init(void);--->q驅動加載函式;
  check_dsi_ctrl_status();---->INIT_DELAYED_WORK(&pstatus_data->check_status, check_dsi_ctrl_status);作業佇列的方式;
    mdss_check_dsi_ctrl_status();----->pdsi_status->mfd->mdp.check_dsi_status(work, ESD_interval);作業佇列的方式;
      mdss_dsi_TE_NT35596_check();------->硬體中斷的方式去檢測DSI狀態;

4.4.螢屏效果及色溫設定方式

4.5.LCD屏dtsi檔案決議

4.6 LCD常見的問題

花屏問題:
1.LCD初始化時序信號不對;
2.花屏還有一種可能是Baseband給LCD送的資料跟LCD作業模式不對,比如你對LCD的作業模式設為RGB565,但你給它送的資料是RGB444或RGB666;
3.host對LCD讀寫過快;

開機LCD亮的瞬間有花屏問題:
解釋:一般都是由于LCD在初始化完成后重繪第一副影像未完全準備好的時候背光已經亮了,解決的辦法就是在UBOOT時候背光亮之前的延時相應的加長一點,

螢屏閃爍問題:1.背光閃爍;2.螢屏閃爍;

  1. 關閉panel打開背光,看是否閃,如果閃可能panel的背光設計有問題或者是殘次品,或者背關芯片供電不穩,(背光閃爍)
  2. 如果背光不閃,panel閃的話大部分原因跟頻率有關系,把頻率調整到何時的值看是否還有閃的現象,調整panel自身的重繪率看所否還有有閃的現象;(螢屏閃爍)

在休眠情況下,重新喚醒屏,使用一段時間出現燒屏問題:
原因:在滅屏情況下,不斷喚醒上電操作和睡眠操作導致IC芯片;PM頻繁呼叫TP suspend/resume,當LCD 處于sleep in狀態,頻繁進出LPWG會導致IC狀態例外,擊穿VCOM,
解決方案:1.只在FFBM模式下PM才能呼叫TP resume/suspend(喚醒/休眠); 2.IC廠商修改TP韌體,保證出現這種現象也不會造成IC芯片啥訓;

打開CABC開關,偶現花屏現象:

原因:螢屏的相關引數問題,在config的時候沒有配置上;

解決方案:修改相關屏的初始化引數,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/27186.html

標籤:嵌入式

上一篇:電池中的NTC功能是什么?【轉】

下一篇:IAR運行程式警告:undefined behavior: the order of volatile accesses is undefined in this statement

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more