原创 gpio_request()簡單分析

一、軟件環境 Andorid Version:5.0 Cpu & Arch:Intel X86_64 二、File Path include/linux/gpio.h include/asm-generic/gpio.h drivers

原创 Linux內核log等級與printk打印消息控制

預定義的內核log等級 // include/linux/kern_levels.h #define KERN_SOH "\001" /* ASCII Start Of Header */ #define KE

原创 Centos7.3搭建Samba服務器

1. 安裝Samba $ yum install samba samba-client samba-common 2. 啓動Samba服務 查看Samba服務運行狀態 $ systemctl status smb.serv

原创 Linux內核input子系統淺析

kernel version: linux-4.9.13 1. 概述 Linux內核input子系統分爲三層: 設備驅動層 核心層 事件處理層 設備驅動層包含各類輸入設備驅動(如觸摸屏、鼠標、鍵盤等等),獲取輸入事件並上

原创 request_firmware()——Linux固件子系統接口函數分析

1. 概述 一些不帶內置存儲的設備,依賴於驅動預加載的固件才能運行,傳統做法是將固件二進制碼作爲一個數組編譯進驅動代碼,如下所示: static const unsigned char my_firmware[] = { 0x0

原创 初識Systemd

前言 依Linux系統慣例,帶字母d的一般爲守護進程(daemon),Systemd即爲System Daemon,是Linux下的一款系統和服務管理器,用於取代傳統的Init組件。 Systemd功能強大,諸如Gnome桌面、用

原创 Centos7.3串口無輸出問題解決方案

鄙人從事內核驅動開發工作,所使用的調試服務器爲CentOS7.3,只有在BIOS啓動階段有串口日誌,進入OS之後就沒有了。 某日,所寫的驅動一加載就會導致系統重啓,由於看不到內核panic日誌,調試很是棘手,當時因爲臨近deadlin

原创 記錄一次失敗的系統搶救/折騰經歷

一、事故起因 大概描述下事故起因: win10/ubuntu16.04雙系統,分別安裝在兩塊256Gb大小的NVME SSD上,以UEFI模式Grub2引導。某天我心血來潮,想要驗證核顯與獨顯是否能一起工作,多次在系統啓動過程中強制下

原创 Linux系統通過遠程終端修改分辨率

最近的工作是測試服務器的板載GPU,由於一切處於開發階段,連USB驅動都沒有,無法通過鍵鼠操作,切換桌面分辨率成了一項難題。 用谷歌、用百度,總算找到了一個在遠程終端修改分辨率的方法,在此記錄: 修改DISPLAY環境變量 由於通過

原创 # Centos7.3搭建Samba服務器

1. 安裝Samba $ yum install samba samba-client samba-common 2. 啓動Samba服務 查看Samba服務運行狀態 $ systemctl status smb.servic

原创 C編程的預處理技巧

1. 宏定義中的特殊符號 1.1 “#” 符號"#"的作用是將宏參數轉爲字符串常量。 下例定義一個字符串轉化宏: #define STRING(argument) #argument 將宏STRING展開: char *p = ST

原创 linux環境下交叉編譯arm架構jpeglib

1. 官網下載jpeglib源碼 下載地址 http://www.ijg.org/ 選擇目前最新的版本jpegsrc.v9c.tar.gz 2. 配置 $ ./configure --prefix=~/tool/jpeg/ --ho

原创 Ubuntu下使用VirtualBox的小技巧

使用環境 VirtualBox Version: 5.0.32 Host: Ubuntu 16.04 VHost: Win10 擴容虛擬硬盤 新增一個虛擬硬盤 進入VirtualBox虛擬機設置頁面,選擇存

原创 input子系統淺析

概述 數據結構 1 輸入設備 input_dev 2 事件處理器 input_handler 輸入設備與事件處理器的匹配連接 輸入事件的上報流程 kernel version: linux-4.9.13 1.

原创 request_firmware()分析——加載在用戶空間的固件

  一些不帶內置存儲的設備,依賴於驅動預加載的固件才能運行,傳統做法是將固件二進制碼作爲一個數組編譯進驅動代碼,如下所示: static const unsigned char my_firmware[] = { 0x00, 0x