日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux开发摘要

發布時間:2025/4/16 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux开发摘要 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.linux內核文檔鏈接點擊打開鏈接

2.配置文件

在out\target\product\project\obj\KERNEL_OBJ\.config中可以看到

?

  • #?CONFIG_MTD_LPDDR?is?not?set??
  • #?CONFIG_MTD_UBI?is?not?set??
  • CONFIG_DTC=y??
  • CONFIG_OF=y??
  • ??
  • ??
  • #??
  • #?Device?Tree?and?Open?Firmware?support??
  • #??
  • #?CONFIG_PROC_DEVICETREE?is?not?set??
  • #?CONFIG_OF_SELFTEST?is?not?set??
  • CONFIG_OF_FLATTREE=y??
  • CONFIG_OF_EARLY_FLATTREE=y??
  • CONFIG_OF_ADDRESS=y??
  • CONFIG_OF_IRQ=y??
  • CONFIG_OF_DEVICE=y??
  • CONFIG_OF_I2C=y??
  • CONFIG_OF_NET=y??
  • CONFIG_OF_MDIO=y??
  • CONFIG_OF_SPMI=y??
  • CONFIG_OF_MTD=y??
  • CONFIG_OF_SLIMBUS=y??
  • CONFIG_OF_BATTERYDATA=y??
  • CONFIG_OF_RESERVED_MEM=y??
  • ...??
  • 但這個文件是自動生成的,應該主要是由\kernel\arch\arm\configs下的文件匯總的,但是沒有找到定義CONFIG_OF=y的源頭。

    對于msm8909平臺user版本,.config文件是由msm8909-1gb_defconfig、kernel下Kconfig文件內容匯總在一起。每個Kconfig分別描述了所屬目錄源文件相關的內核配置菜單

    但如果msm8909-1gb_defconfig注釋了#CONFIG_QPNP_VM_BMS=y,但W:\kernel\drivers\power\Kconfig下對應的下有default=y,最后是以Kconfig的為準的

    config QPNP_VM_BMS
    tristate "QPNP Voltage-Mode Battery Monitoring System driver"
    depends on SPMI
    depends on MSM_QPNP_INT
    default y
    help
    ??Say Y here to enable support for QPNP chip vm-bms device.
    ??The voltage-mode (vm) BMS driver uses periodic VBATT
    ??readings from the battery to calculate the State of
    ??Charge.

    如果Kconfig沒有default,msm8909-1gb_defconfig的為#CONFIG_QPNP_VM_BMS=y或是CONFIG_QPNP_VM_BMS=,也就是沒有選擇或是沒有設置,就在.config文件中插入一行注釋# CONFIG_QPNP_VM_BMS is not set

    3.主要的設備樹文件

    ?\kernel\Documentation\devicetree\bindings\fb\mdss-dsi-panel.txt描述顯示屏panel的配置信息
    kernel\Documentation\devicetree\bindings\arm\gic.txt-----ARM Generic Interrupt Controller,ARM一般中斷控制器設備樹信息描述
    kernel\Documentation\devicetree\bindings\interrupt-controller\interrupts.txt----Specifying interrupt information for devices

    ?\kernel\Documentation\input\input.txt和input-programming.txt介紹輸入子系統

    \kernel\Documentation\devicetree\bindings\pinctrl\msm-pinctrl.txt------------MSM TLMM pinmux controller

    kernel\Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt

    ?

    4..CONFIG_OF

    在一些驅動中經常看到#ifdef CONFIG_OF,這里的OF是Open Firmware。

    Open Firmware. This was invented long time ago when Apple was producing laptops based on PowerPC CPUs. Openfirmware provides a good description of the devices connected to the platform. In Linux kernel the part that works with device data is called Device Tree (DT). More details in the?Usage model.

    詳細參考kernel\Documentation\devicetree\usage-model.txt

    ?

    5.mk文件(makefile)

    ?

    +=?(在現有的文件上,追加)
    :=?(之前的值清空,重新賦值)

    ?

    6.fdt:flatteneddevice tree

    ?

    7.modules.order:這個文件記錄了Makefile中模塊出現的順序。modprobe通過它來確定解決多個模塊匹配的別名(指定模塊的絕對路徑)。
    如:kernel//home/cjz/Desktop/test/driver/input/vms.ko
    ?modules.builtin:這個文件列出了所有編譯到內核的模塊,通過這個當modprobe加載一些內核模塊時就不會失敗。

    ?

    8.注冊驅動的時候,通過對應的總線匹配到對應的設備,設備在設備樹中有對應的描述,在bootloader階段會傳遞設備樹內容給內核,匹配到對應的設備后調用驅動的probe函數

    設備樹中每個表示一個設備的節點都需要一個 compatible 屬性。compatible 屬性是操作系統用來決定使用哪個設備驅動來綁定到一個設備上的關鍵因素

    ?

    9.典型的外設、核心和主機驅動圖

    10.設備樹英文文檔鏈接點擊打開鏈接

    11.驅動加載順序

    優先級定義在include/linux/init.h,其中對于同一級別的 __initcall的次序 主要由MakeFile中.o文件的鏈接次序決定,具體看Kernel下的主Makefile ---- Build vmlinux以及kernel/driver 下的obj-y

    12.linux為什么要掛載到/mnt或其它目錄,直接訪問/dev不行嗎?

    /dev是不加文件系統的,只能通過read/write命令對他進行讀寫。但是你看不到的。想要看到他里面有那個文件或者文件夾,只有加載了文件系統,才可以。所以你用mount命令的時候要加-t指定文件系統,例如:mount -t vfat /dev/hda1 /mnt,掛載/dev/hda1設備到/mnt,文件系統是vfat。

    13.config的生成

    通過menuconfig生成。每個開發平臺都有一個可供參考的配置文件,如arch/arm/configs/xxxxxx_defconfig目錄下的文件,都是硬件廠商提供的,針對硬件平臺的配置文件。當我們執行make menuconfig就會讀取源碼目錄下所有Kconfig內容,并生成界面中的選項菜單


    14. 一個模塊由多個源文件編譯生成

    kernel\msm-3.18\Documentation\kbuild\makefiles.txt

    If a kernel module is built from several source files, you specify
    that you want to build a module in the same way as above; however,
    kbuild needs to know which object files you want to build your
    module from, so you have to tell it by setting a $(<module_name>-y)
    variable.
    Example:
    #drivers/isdn/i4l/Makefile
    obj-$(CONFIG_ISDN_I4L) += isdn.o
    isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o

    isdn就是模塊名字,isdn.o由isdn_net_lib.o isdn_v110.o isdn_common.o組成


    15.debugfs對應/sys/kernel/debug目錄


    16.一種方法可以快速知道device對應的驅動


    17.如何查看gpio 使用狀態,以及被那些模塊request

    cat /sys/kernel/debug/gpio


    18.objdump命令是用查看目標文件或者可執行的目標文件的構成的gcc工具


    19.?tree命令以樹狀圖列出文件目錄結構,


    20 代碼中I2C從設備采用7位的地址,最后一位讀寫由i2c_msg結構體的flags來決定。

    struct i2c_msg {
    __u16 addr; /* slave address */
    __u16 flags;
    #define I2C_M_TEN 0x0010 /* this is a ten bit chip address */
    #define I2C_M_RD 0x0001 /* read data, from slave to master */
    #define I2C_M_STOP 0x8000 /* if I2C_FUNC_PROTOCOL_MANGLING */
    #define I2C_M_NOSTART 0x4000 /* if I2C_FUNC_NOSTART */
    #define I2C_M_REV_DIR_ADDR 0x2000 /* if I2C_FUNC_PROTOCOL_MANGLING */
    #define I2C_M_IGNORE_NAK 0x1000 /* if I2C_FUNC_PROTOCOL_MANGLING */
    #define I2C_M_NO_RD_ACK 0x0800 /* if I2C_FUNC_PROTOCOL_MANGLING */
    #define I2C_M_RECV_LEN 0x0400 /* length will be first received byte */
    __u16 len; /* msg length */
    __u8 *buf; /* pointer to msg data */
    };

    21.監測系統可用內從,用cat /proc/meminfo下的MemAvailabble這項,而不是MemFree來判斷,這些項的意義,可參考kernel\msm-3.18\Documentation\filesystems\proc.txt文檔介紹

    總結

    以上是生活随笔為你收集整理的linux开发摘要的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 波多野结衣国产在线 | 女女h百合无遮涩涩漫画软件 | 国产福利资源 | 亚洲黄色免费网站 | 噜噜噜av | 极品新婚夜少妇真紧 | 特级西西人体4444xxxx | 国产精品美女久久久 | 能看的毛片 | 日本美女视频一区 | 老头糟蹋新婚少妇系列小说 | 天天澡天天狠天天天做 | 伦理自拍 | 欧美成人性生活视频 | 无码国内精品人妻少妇蜜桃视频 | 熟女高潮一区二区三区 | 五月花成人网 | 亚洲一区电影 | 四虎8848 | 韩国三级久久 | 姐姐的朋友2在线 | 欧美乱妇日本无乱码特黄大片 | 天堂va欧美va亚洲va老司机 | 一级少妇精品久久久久久久 | 亚洲欧美变态另类丝袜第一区 | 男女h网站| 北条麻妃一区二区三区在线观看 | 日韩精品中文字幕一区二区三区 | 日韩久久一区二区三区 | 手机在线观看日韩av | 中文av一区二区 | 性色一区二区 | 欧美人与动牲交xxxxbbbb | 黑人3p波多野结衣在线观看 | 亚洲成人av免费观看 | 午夜久久久久久久久久影院 | 久久99国产视频 | 激情欧美日韩 | 久久丫精品 | 中文字幕免费在线观看视频 | 欧美乱强伦 | 老牛影视一区二区三区 | 乱精品一区字幕二区 | 欧洲亚洲激情 | av伦理在线 | 精品日韩欧美 | 伊人久久久久久久久久久久久 | 日韩免费黄色 | 成人免费看片在线观看 | 亚洲成人高清在线 | 久久不卡区 | 精品久久电影 | 欧美亚洲| 久久久久久久 | 成人在线免费高清视频 | 香蕉视频日本 | 日韩福利影院 | 天堂在线中文字幕 | 日韩中文在线播放 | 国产伦理一区二区三区 | 国产九区 | 在线观看亚洲精品视频 | 国产91在线观看 | 久久久一区二区三区四区 | 东京热一区二区三区四区 | 天天爱天天射 | 日批视频免费播放 | 影音先锋在线视频观看 | 成人福利视频在线观看 | 国产欧美久久久久 | 一本加勒比波多野结衣 | 国产视频一区二区三区在线播放 | 一区二区日韩欧美 | 欧美精产国品一二三区 | 久久人人爽人人 | 亚洲国产精品99久久 | 欧美a网站 | 99产精品成人啪免费网站 | 少妇人妻无码专区视频 | 亚洲色妞| 国产欧美在线精品日韩 | 成年人黄国产 | 国产剧情在线一区 | 午夜丁香婷婷 | 97涩涩网 | 国产精品一二三四五区 | 欧美性受xxxx白人性爽 | 黄色av网站免费观看 | av一区三区| 娇妻之欲海泛舟无弹窗笔趣阁 | 国产在线精品成人欧美 | 国产农村乱对白刺激视频 | 欧美久久久久久又粗又大 | 99av视频 | 亚洲福利网址 | 国产精品伦子伦 | 日韩欧美亚洲成人 | 日韩电影第一页 | av东方在线 |