最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

STM32MP157 Linux系統(tǒng)移植開發(fā)篇7:Linux內(nèi)核目錄結(jié)構(gòu)詳解

2021-08-10 08:57 作者:華清遠(yuǎn)見研發(fā)中心  | 我要投稿


本文章為《STM32MP157 Linux系統(tǒng)移植開發(fā)篇》系列中的一篇,筆者使用的開發(fā)平臺為華清遠(yuǎn)見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。stm32mp157是ARM雙核,2個(gè)A7核,1個(gè)M4核,A7核上可以跑Linux操作系統(tǒng),M4核上可以跑FreeRTOS、RT-Thread等實(shí)時(shí)操作系統(tǒng),STM32MP157開發(fā)板所以既可以學(xué)嵌入式linux,也可以學(xué)stm32單片機(jī)。


針對FS-MP1A開發(fā)板,除了Linux系統(tǒng)移植篇外,還包括其他多系列教程,包括Cortex-A7開發(fā)篇、Cortex-M4開發(fā)篇、擴(kuò)展板驅(qū)動移植篇、Linux應(yīng)用開發(fā)篇、FreeRTOS系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇、硬件設(shè)計(jì)篇、人工智能機(jī)器視覺篇、Qt應(yīng)用編程篇、Qt綜合項(xiàng)目實(shí)戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。


關(guān)于FS-MP1A開發(fā)板:

手機(jī)淘寶分享碼:復(fù)制本行文字打開手淘?T4FPXn3YYJ2?

鏈接:https://item.taobao.com/item.htm?id=622457259672


Linux內(nèi)核目錄結(jié)構(gòu)

Linux內(nèi)核源代碼非常龐大,隨著版本的發(fā)展不斷增加。它使用目錄樹結(jié)構(gòu),并且使用Makefile組織配置編譯。

初次接觸Linux內(nèi)核,最好仔細(xì)閱讀頂層目錄的readme文件,它是Linux內(nèi)核的概述和編譯命令說明。readme的說明更加針對X86等通用的平臺,對于某些特殊的體系結(jié)構(gòu),可能有些特殊的地方。

內(nèi)核源碼很復(fù)雜,包含多級目錄,形成一個(gè)龐大的樹狀結(jié)構(gòu),通常稱為Linux源碼目錄樹。本章節(jié)以linux 5.4.31為例來介紹一下linux內(nèi)核目錄結(jié)構(gòu)。

頂層目錄的Makefile是整個(gè)內(nèi)核配置編譯的核心文件,負(fù)責(zé)組織目錄樹中子目錄的編譯管理,還可以設(shè)置體系結(jié)構(gòu)和版本號等。

首先來看第一級目錄


目錄

內(nèi)容

arch

包含各體系結(jié)構(gòu)特定的代碼,如 arm、x86、ia64、mips等,在每個(gè)體系結(jié)構(gòu)目錄下通常都有:

  1. /boot:內(nèi)核需要的 特定平臺代碼。

  2. /kernel:體系結(jié)構(gòu)特有的代碼。

  3. /lib:通用函數(shù)在特定體系結(jié)構(gòu)的實(shí)現(xiàn)。

  4. /math-emu:模擬FPU的代碼。

  5. /mm:特定體系結(jié)構(gòu)的內(nèi)存管理實(shí)現(xiàn)。

  6. /include:特定體系的頭文件 。

block

存放塊設(shè)備相關(guān)代碼

crypto

存放加密、壓縮、CRC校驗(yàn)等算法相關(guān)代碼

Documentation

存放相關(guān)說明文檔,很多實(shí)用文檔,包括驅(qū)動編寫等

drivers

存放 Linux 內(nèi)核設(shè)備驅(qū)動程序源碼。

驅(qū)動源碼在 Linux 內(nèi)核源碼中占了很大比例,常見外設(shè)幾乎都有可參考源碼,對驅(qū)動開發(fā)而言,該目錄非常重要。

該目錄包含眾多驅(qū)動,目錄按照 設(shè)備類別 進(jìn)行分類,如char、block、input、i2c、spi、pci、usb等。

firmware

存放處理器相關(guān)的一些特殊固件

fs

存放所有文件系統(tǒng)代碼,如fat、ext2、ext3、ext4、ubifs、nfs、sysfs等。

include

存放內(nèi)核所需、與平臺無關(guān)的頭文件,與平臺相關(guān)的頭文件已經(jīng)被移動到arch平臺的include目錄,如 ARM 的頭文件目錄<arch/arm/include/asm/>

init

包含內(nèi)核初始化代碼

ipc

存放進(jìn)程間通信代碼

kernel

包含Linux內(nèi)核管理代碼

lib

庫文件代碼實(shí)現(xiàn)

mm

存放內(nèi)存管理代碼

net

存放網(wǎng)絡(luò)相關(guān)代碼

samples

存放提供的一些內(nèi)核編程范例,如kfifo;

相關(guān)用戶態(tài)編程范例,如hidraw。

scripts

存放一些腳本文件,如menuconfig腳本

security

存放系統(tǒng)安全性相關(guān)代碼

sound

存放聲音、聲卡相關(guān)驅(qū)動

tools

編譯過程中一些主機(jī)必要工具

usr

cpio相關(guān)實(shí)現(xiàn)

virt

內(nèi)核虛擬機(jī)KVM

Linux內(nèi)核源碼中接近一半的代碼量是驅(qū)動,對某一個(gè)特定主板的系統(tǒng)而言,驅(qū)動也占據(jù)很大的比例,底層開發(fā)的很大一部分是驅(qū)動相關(guān)工作。掌握從眾多驅(qū)動中找到正確的驅(qū)動源碼文件,并根據(jù)產(chǎn)品的實(shí)際需求進(jìn)行修改調(diào)整的方法,能有效促進(jìn)產(chǎn)品開發(fā)的進(jìn)度。

Linux內(nèi)核源碼樹drivers目錄很復(fù)雜,包含了各種外設(shè)的驅(qū)動。對嵌入式Linux開發(fā)而言,通常需要關(guān)注如下目錄。

目錄

說明

drivers/gpio

系統(tǒng)GPIO子系統(tǒng) 和 驅(qū)動目錄,包括處理器內(nèi)部GPIO以及外擴(kuò)GPIO驅(qū)動。遵循GPIO子系統(tǒng)的驅(qū)動,可通過/sys/class/gpio進(jìn)行訪問

drivers/hwmon

硬件監(jiān)測相關(guān)驅(qū)動,如溫度傳感器、風(fēng)扇監(jiān)測等

drivers/i2c

I2C子系統(tǒng)驅(qū)動。各I2C控制器的驅(qū)動在i2c/busses目錄下

drivers/input

輸入子系統(tǒng)驅(qū)動目錄

drivers/input/keyboard

非HID鍵盤驅(qū)動,如GPIO鍵盤、矩陣鍵盤等

drivers/input/touchscreen

觸摸屏驅(qū)動,如處理器的觸摸屏控制器驅(qū)動、外擴(kuò)串行觸摸屏控制器驅(qū)動、串口觸摸屏控制器驅(qū)動等

drivers/leds

LED子系統(tǒng)和驅(qū)動,如GPIO驅(qū)動的LED。遵循 LED子系統(tǒng)的驅(qū)動 ,可通過/sys/class/leds進(jìn)行訪問

drivers/mfd

多功能器件(Multi-Function Device)驅(qū)動。如果一個(gè)器件能做多種用途,通常需要借助MFD來完成。

drivers/misc

雜項(xiàng)(Miscellaneous)驅(qū)動。所驅(qū)動的設(shè)備可通過/sys系統(tǒng)訪問

drivers/mmc

SD(Secure Digital)/MMC(Mutimedia Card)卡驅(qū)動目錄

drivers/mtd

MTD(Memory Technology Device)子系統(tǒng)和驅(qū)動,包括NAND、oneNAND等。

drivers/mtd/nand

NAND FALSH的MTD驅(qū)動目錄,包括NAND的基礎(chǔ)驅(qū)動和控制器接口驅(qū)動

drivers/net

網(wǎng)絡(luò)設(shè)備驅(qū)動,包括MAC、PHY、CAN、USB 網(wǎng)卡、無線、PPP協(xié)議等

drivers/net/can

CAN設(shè)備驅(qū)動。

Linux已經(jīng)將CAN歸類到網(wǎng)絡(luò)中,采用socket_CAN接口

drivers/net/ethernet

所支持的MAC驅(qū)動。

常見廠家的MAC驅(qū)動都能找到,如broadcom、davicom、marvell、micrel、smsc等廠家的MAC,處理器自帶MAC的驅(qū)動也在該目錄下

drivers/net/phy

PHY驅(qū)動,比如marvell、micrel和smsc的一些PHY驅(qū)動

drivers/rtc

RTC子系統(tǒng)和RTC芯片驅(qū)動

drivers/spi

SPI子系統(tǒng)和SPI控制器驅(qū)動,含GPIO 模擬SPI的驅(qū)動

drivers/tty

TTY 驅(qū)動

drivers/tty/serial

串口驅(qū)動,包括8250串口以及各處理器內(nèi)部串口驅(qū)動實(shí)現(xiàn)

drivers/uio

用戶空間IO驅(qū)動

drivers/usb

USB驅(qū)動,包括USB HOST、Gadget、USB轉(zhuǎn)串口以及OTG等支持。

drivers/video

Video驅(qū)動,包括Framebuffer驅(qū)動、顯示控制器驅(qū)動和背光驅(qū)動等。

drivers/video/backlight

背光控制驅(qū)動

drivers/video/logo

Linux內(nèi)核啟動LOGO圖片目錄

drivers/watchdog

看門狗驅(qū)動,包括軟件看門狗和各種硬件看門狗驅(qū)動實(shí)現(xiàn)


STM32MP157 Linux系統(tǒng)移植開發(fā)篇7:Linux內(nèi)核目錄結(jié)構(gòu)詳解的評論 (共 條)

分享到微博請遵守國家法律
吉水县| 龙海市| 耒阳市| 铜陵市| 五指山市| 五家渠市| 广西| 奎屯市| 沂南县| 隆化县| 吉林省| 炎陵县| 阜新市| 神木县| 墨江| 高台县| 包头市| 砚山县| 花莲县| 富裕县| 麻江县| 涟水县| 麻栗坡县| 天柱县| 墨玉县| 吉林省| 舒城县| 安顺市| 开远市| 天峨县| 廉江市| 哈巴河县| 乌海市| 万山特区| 黄大仙区| 庆城县| 冷水江市| 济宁市| 泸水县| 任丘市| 天全县|