我覺(jué)得我的文章相對(duì)來(lái)說(shuō)都是比較淺顯的。一些初學(xué)者可以看看,對(duì)于高手來(lái)說(shuō),如果你們不吝嗇時(shí)間的話,希望也能幫我看看,指點(diǎn)一下其中的錯(cuò)誤。這也是我到這里來(lái)和大家交流的目的。?
?????? 閱讀Linux內(nèi)核啟動(dòng)代碼的直接動(dòng)力是我想編寫(xiě)RTL8019AS的網(wǎng)卡驅(qū)動(dòng)程序(2.4.18內(nèi)核只支持了CS8900A)。既然要寫(xiě)驅(qū)動(dòng),我就想知道它是怎么樣被加載的,好奇心驅(qū)使我先去搞定這個(gè)問(wèn)題。?
?????? 拿到2.4.18的軟件包,一萬(wàn)多個(gè)文件,我不知怎么下手。所幸手頭有這么三件工具助我入門:?
?????? 1,一塊移植好linux的開(kāi)發(fā)板,通過(guò)它可以看到linux啟動(dòng)過(guò)程打印的消息。?
?????? 2, google,網(wǎng)上關(guān)于linux的資料真是太多了?。?!?
?????? 3, Windows文件搜索引擎,通過(guò)它可以知道在那些文件中打印出那些消息。?
?????? 很快,我就找到了linux啟動(dòng)的總的入口,/arch/arm/boot/compressed/head.s。?
?????? head.s完成的工作主要是底層寄存器、MMU的一些設(shè)定以及kernel的解壓縮。匯編文件中調(diào)用的C代碼大多位于該目錄下misc.c文件,比如decompress_kernel。?
?????? 當(dāng)然,這部分不是重點(diǎn),head執(zhí)行完畢以后就跳到start_kernel(),這才是我們的重點(diǎn)所在,這個(gè)函數(shù)位于文件/init/main.c中。這個(gè)文件是啟動(dòng)的主線?。?!?
?????? 在start_kernel中,依次執(zhí)行各個(gè)初始話函數(shù),這里具體我沒(méi)有看,一直到最后rest_init(),在這個(gè)函數(shù)里啟動(dòng)了一個(gè)init線程,而主線程自己則進(jìn)入了IDLE狀態(tài)。所以我們關(guān)心一下init線程做了什么事情,看文件最后init函數(shù)。?
?????? 在這個(gè)函數(shù)里面,先lock_kernel,然后調(diào)用do_basic_setup,在這個(gè)函數(shù)里面又是一堆的初始化,有一個(gè)函數(shù)要引起我們的注意:do_initcalls。看看它干了什么:(這之后的東西在下文文件系統(tǒng)中講解)
static void __init do_initcalls(void)
{
initcall_t *call;
call = &__initcall_start;
do {
(*call)( );
call++;
} while (call < &__initcall_end);
/* Make sure there is no pending stuff from the initcall sequence */
flush_scheduled_tasks();
}?
?????? 很難相信,我們關(guān)心的外圍模塊的驅(qū)動(dòng)就是被這一段程序加載的。怎么回事?我們慢慢來(lái)看:?
?????? 首先看__initcall_start和__initcall_end,找遍了所有C代碼,沒(méi)有它們的定義。后來(lái)在vmlinux-armv.lds.in文件中找到了它們:
__initcall_start = .;
*(.initcall.init)
__initcall_end = .;?
?????? 這個(gè)文件是和link相關(guān)的文件,它決定代碼在load環(huán)境中的位置,就好比ADS中的scf文件。我們還是先看.initcall.init的含義吧,它在/include/linux/init.h中定義:
#define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))?
?????? 參考GCC說(shuō)明,這段話的意思就是說(shuō)所有以__init_call前綴定義的函數(shù)在鏈接過(guò)程中都放到名字為.initcall.init的段(section)里面。OK,有點(diǎn)味道了,也就是說(shuō),如果我們給一個(gè)函數(shù)冠以__init_call,那么它在編譯鏈接的時(shí)候就會(huì)放到.initcall.init這個(gè)段里面。而上面這段循環(huán)所做的事情就很清楚了,它從段的首地址開(kāi)始,依次執(zhí)行每一個(gè)函數(shù),直到段尾為止。?
?????? 這個(gè)時(shí)候,我們應(yīng)該在想,那些要注冊(cè)的外圍模塊的初始化程序是不是都是定義成__init_call類型的呢?正如我們所料,查看各個(gè)模塊我們會(huì)發(fā)現(xiàn)其初始化函數(shù)x會(huì)被定義成為module_init(x),在/include/linux/init.h中它定義如下:
#define module_init(x) __initcall(x);
#define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn?
?????? 這段代碼說(shuō)module_init(x)等價(jià)于__initcall(x),而__initcall(x)表示函數(shù)x是靜態(tài)的具有__init_call性質(zhì)的函數(shù)(這里名字比較多,容易看亂),因此在鏈接時(shí),它會(huì)被放在.initcall.init段中。只要x函數(shù)運(yùn)行起來(lái)了,那就可以注冊(cè)設(shè)備、中斷入口、中斷服務(wù)函數(shù)了。接下來(lái)的事情就好辦了?
?????? 搞清出設(shè)備如何被加載以后,我們還需要知道另外一個(gè)問(wèn)題:怎樣把一個(gè)模塊的驅(qū)動(dòng)程序加載到內(nèi)核里面呢?SO簡(jiǎn)單,make menuconfig,把對(duì)應(yīng)設(shè)備打開(kāi)。但是能不能再具體一點(diǎn)呢,我們做這么一個(gè)改動(dòng),怎么映射到編譯&鏈接過(guò)程呢。我這個(gè)人就是喜歡找麻煩,因此又在網(wǎng)上搜啊搜,而且用了最笨的方*,看看make menuconfig前后那些文件的修改日期發(fā)生了變化。最終還是找到了一點(diǎn),/scripts下的文件是用來(lái)支持各種config模式的(當(dāng)然包括menuconfig),核心代碼在Kconfig中。在每個(gè)驅(qū)動(dòng)設(shè)備的文件夾下(比如net,mtd)都有一個(gè)叫config.in的文件,這些文件定義了我們?cè)趍enuconfig畫(huà)面中看到的目錄結(jié)構(gòu)&選項(xiàng)。?
?????? 眼睛看到的畫(huà)面總歸都是虛的,這些改動(dòng)究竟反映到了哪里去了呢??jī)蓚€(gè)文件:./config和/include/linux/ autoconf.h。我們做完menuconfig以后,所有改動(dòng)就反映到了這兩個(gè)文件中,這兩個(gè)文件的內(nèi)容是一致的。在我們做編譯的過(guò)程中,頂層的makefile文件從autoconf.h文件中讀取各項(xiàng)宏定義然后傳遞給子一層的makefile,這些makefile根據(jù)宏定義選擇那些.o文件被鏈接進(jìn)來(lái)加到內(nèi)核中。?
?????? 好了,知道這些我就知道怎么給8019添加驅(qū)動(dòng)了,yy一下:?
?????? 1,首先要有驅(qū)動(dòng)程序代碼,8019.c?
?????? 2,修改net目錄下的config.in文件中添加一項(xiàng),?
?????? dep_tristate ' RTL8019 support' CONFIG_RTL8019 $CONFIG_ISA?
?????? 3,打開(kāi)menuconfig,將RTL8019 support選擇y,保存推出后autoconf文件中應(yīng)該就有了一個(gè)宏定義:#define CONFIG_RTL8019?
?????? 4,打開(kāi)net目錄下的makefile,添加:?
?????? obj-$( CONFIG_RTL8019) += 8019.o?
?????? 5,make dep; make zImage;搞定!?
?????? 注:在menuconfig中選擇m和 y的區(qū)別:?
?????? y: 模塊驅(qū)動(dòng)編譯到內(nèi)核中,啟動(dòng)時(shí)自動(dòng)加載?
?????? m:模塊會(huì)被編譯,但是不會(huì)被編譯到內(nèi)核中,只是生成.o文件,我們可以收集這些.o文件做到linux的文件系統(tǒng)中,然后用insmod實(shí)現(xiàn)動(dòng)態(tài)加載。
Linux啟動(dòng)過(guò)程中硬件模塊的加載
- Linux(218417)
- 硬件模塊(6622)
相關(guān)推薦
熱點(diǎn)推薦
Linux啟動(dòng)過(guò)程中文件系統(tǒng)的加載
我覺(jué)得我的文章相對(duì)來(lái)說(shuō)都是比較淺顯的。一些初學(xué)者可以看看,這也是我不在嵌入式那個(gè)版上發(fā)文的原因。對(duì)于高手來(lái)說(shuō),如果你們不吝嗇時(shí)間的話,希望也能幫我看看,指點(diǎn)一下其
2011-10-01 00:48:46
2697
2697STM32H7的啟動(dòng)過(guò)程分析
本章教程主要跟大家講STM32H7的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-10-17 14:42:52
3141
3141詳解STM32啟動(dòng)過(guò)程
本章教程主要跟大家講STM32H7的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-11-14 11:24:11
2326
2326linux內(nèi)核啟動(dòng)的原理 linux項(xiàng)目的存儲(chǔ)方案
例外,也是先將代碼加載到內(nèi)存中,然后從RAM啟動(dòng),不過(guò)它需要U-boot,也就是我們常說(shuō)的bootloader來(lái)引導(dǎo),將外掛存儲(chǔ)介質(zhì)中的代碼拷貝內(nèi)存RAM中,然后再開(kāi)始運(yùn)行,linux啟動(dòng)過(guò)程如圖1。
2022-11-23 15:51:24
880
880
linux系統(tǒng)是怎么啟動(dòng)的?
每次打開(kāi) Linux PC 時(shí),它都會(huì)經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個(gè) Linux 發(fā)行版在典型的啟動(dòng)過(guò)程中都會(huì)經(jīng)歷 4 個(gè)不同的階段。
2022-12-12 11:50:00
1521
1521linux驅(qū)動(dòng)程序的主要流程和功能
介紹Linux驅(qū)動(dòng)程序的主要流程和功能。 一、驅(qū)動(dòng)程序的加載和初始化 Linux系統(tǒng)在啟動(dòng)過(guò)程中,會(huì)自動(dòng)加載已安裝的設(shè)備驅(qū)動(dòng)程序。加載驅(qū)動(dòng)程序的過(guò)程一般分為三個(gè)階段,即啟動(dòng)階段、模塊加載階段和設(shè)備注冊(cè)階段。 啟動(dòng)階段:操作系統(tǒng)在啟
2023-12-08 14:56:02
3814
3814專家揭秘:STM32啟動(dòng)過(guò)程全解
電子發(fā)燒友網(wǎng)核心提示: 本文主要闡述了STM32啟動(dòng)過(guò)程全面解析,包括啟動(dòng)過(guò)程的介紹、啟動(dòng)代碼的陳列以及深入解析。 相對(duì)于ARM上一代的主流ARM7/ARM9內(nèi)核架構(gòu),新一代Cortex內(nèi)核架構(gòu)的
2012-09-10 08:50:17
53653
53653
Linux啟動(dòng)過(guò)程詳解
1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動(dòng)過(guò)程詳解 熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命
2021-11-02 07:01:06
Linux內(nèi)核啟動(dòng)過(guò)程和Bootloader(總述)
在運(yùn)行過(guò)程中雖然具有初始化系統(tǒng)和執(zhí)行用戶輸入的命令等作用,但它最根本的功能就是為了啟動(dòng) Linux 內(nèi)核。2.1 Bootloader的概念和作用 Bootloader是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是
2012-08-18 17:35:24
Linux和Windows系統(tǒng)啟動(dòng)過(guò)程的簡(jiǎn)單分析
AT PPC.....bootloader特性:以命令為基礎(chǔ)。一旦引導(dǎo)啟動(dòng)系統(tǒng)后,bootloader就不存在。Linux和Windows啟動(dòng)過(guò)程中,基本的原理都差不多,都先加載一個(gè)bootloader來(lái)初始化硬件設(shè)備,為系統(tǒng)運(yùn)行做好準(zhǔn)備;對(duì)于硬盤(pán)的識(shí)別,Windows是以盤(pán)來(lái)識(shí)別,而Linux是采用根文件系統(tǒng) 。最后才是啟動(dòng)一個(gè)應(yīng)用程序。
2017-08-28 11:27:47
DM8127啟動(dòng)過(guò)程中M3核死機(jī)
hi,你好:DM8127是多核包括A8,兩個(gè)M3和一個(gè)DSP,四個(gè)核心。我有幾塊開(kāi)發(fā)板,其中一塊開(kāi)發(fā)板總是在加載M3核的時(shí)候程序會(huì)死機(jī)。問(wèn)題:1.板子在啟動(dòng)過(guò)程中,連續(xù)加載兩個(gè)M3核的時(shí)候會(huì)出現(xiàn)死機(jī)
2020-04-15 09:12:35
PCIe啟動(dòng)過(guò)程中C6678程序加載
在DSP上運(yùn)行的代碼量很大,過(guò)程繁瑣。
請(qǐng)問(wèn)有沒(méi)有方法將DSP程序直接在DSP上自啟動(dòng),不需要通過(guò)Host? PC發(fā)送。我想是否能實(shí)現(xiàn)板卡能通過(guò)PCIe模式啟動(dòng)時(shí),自動(dòng)加載flash中的DSP程序??
當(dāng)然只要有方法能滿足 將DSP中的數(shù)據(jù)通過(guò)PCIE傳輸至Host? PC即可!
多謝大家!
2018-06-19 05:08:19
STM32H7啟動(dòng)過(guò)程詳解
第13章 STM32H7啟動(dòng)過(guò)程詳解本章教程主要跟大家講STM32H7的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。啟動(dòng)過(guò)程相對(duì)來(lái)說(shuō)還是比較重要的,理解...
2021-08-03 06:41:52
STM32__UCOSII系統(tǒng)啟動(dòng)過(guò)程中空閑任務(wù)和統(tǒng)計(jì)任務(wù)扮演怎樣的角色?
如題STM32__UCOSII系統(tǒng)啟動(dòng)過(guò)程中空閑任務(wù)和統(tǒng)計(jì)任務(wù)扮演怎樣的角色
2024-05-08 07:37:13
STM32整個(gè)啟動(dòng)過(guò)程是怎樣的
STM32整個(gè)啟動(dòng)過(guò)程是怎樣的?整個(gè)啟動(dòng)過(guò)程涉及的代碼有哪些呢?
2021-11-29 06:59:04
U-Boot啟動(dòng)過(guò)程--詳細(xì)版的完全分析
Boot Record,主引導(dǎo)記錄)中的Bootloader(例如LILO或GRUB),并進(jìn)一步引導(dǎo)操作系統(tǒng)的啟動(dòng)。然而在嵌入式系統(tǒng)中通常沒(méi)有像BIOS那樣的固件程序,因此整個(gè)系統(tǒng)的加載啟動(dòng)就完全由bootloader來(lái)完成。它主要的功能是加載與引導(dǎo)內(nèi)核映像 ,具體U-Boot啟動(dòng)過(guò)程見(jiàn)附件資料。
2015-12-12 22:50:12
nand板子啟動(dòng)過(guò)程中報(bào)錯(cuò)如何解決
手里有塊nand的板子,最近注意到系統(tǒng)啟動(dòng)過(guò)程中報(bào)錯(cuò):[ 2.046495] rtc-rx8010 0-0032: Unable to read registers #32..#32
2022-01-10 06:38:39
uCLinux內(nèi)核啟動(dòng)過(guò)程是怎樣實(shí)現(xiàn)的?
什么是uCLinux操作系統(tǒng)?uCLinux內(nèi)核啟動(dòng)過(guò)程是怎樣實(shí)現(xiàn)的?
2021-04-23 06:09:30
uboot啟動(dòng)過(guò)程中延時(shí)修改
uboot啟動(dòng)過(guò)程中延時(shí)修改uboot啟動(dòng)過(guò)程中如何延時(shí)修改,許多人都會(huì)有這樣的問(wèn)題,下面來(lái)學(xué)習(xí)一下如何解決這個(gè)問(wèn)題,以下是我的步驟,大家可以借鑒,希望對(duì)你們有所幫助哦!平臺(tái):sail-imx6系統(tǒng)
2019-11-01 16:29:48
【Intel Edison試用體驗(yàn)】[硬件] 底層硬件探索 and 啟動(dòng)過(guò)程分析(小k - NO.02)
是對(duì)MCU進(jìn)行下載程序和調(diào)試都得經(jīng)過(guò)Atom處理器。Atom運(yùn)行的 yocto Linux 是基于RAM運(yùn)行的,Quark的RTOS是基于ROM運(yùn)行的。兩者有什么區(qū)別呢?基于RAM的就是在系統(tǒng)啟動(dòng)過(guò)程中
2016-07-25 16:34:27
【OK210試用體驗(yàn)】+ 《uboot啟動(dòng)過(guò)程分析》
(DDR);BL2加載內(nèi)核,把OS在SDRAM中運(yùn)行起來(lái),最終OS是運(yùn)行在SDRAM(內(nèi)存)中的。在這個(gè)過(guò)程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個(gè)硬件必須在u-boot階段就做
2015-08-26 21:12:14
【OK210試用體驗(yàn)】+ 《uboot啟動(dòng)過(guò)程分析》
的。在這個(gè)過(guò)程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個(gè)硬件必須在u-boot階段就做好初始化的工作。操作系統(tǒng)的內(nèi)核映像一般是存儲(chǔ)在 Flash 上的,當(dāng) Bootloader 將內(nèi)核
2015-08-25 12:36:20
【Rico Board試用體驗(yàn)】通過(guò)終端輸出分析啟動(dòng)程序
:Linux系統(tǒng)開(kāi)發(fā)一般包括以下幾個(gè)步驟:啟動(dòng)代碼uboot,內(nèi)核 uImage,文件系統(tǒng),應(yīng)用程序。這幾個(gè)部分在系統(tǒng)啟動(dòng)過(guò)程中都會(huì)在串口終端打印出來(lái)。在啟動(dòng)過(guò)程中,我分別截了幾張圖,下面會(huì)貼出來(lái)
2016-11-20 17:55:09
使用pahomqtt啟動(dòng)過(guò)程中pipe_fops_open時(shí)出現(xiàn)rt_condvar_timedwait ,如何解決?
在使用pahomqtt 啟動(dòng)過(guò)程中pipe_fops_open 時(shí)出現(xiàn)rt_condvar_timedwait 死等,而RTT 5.0則可以。請(qǐng)問(wèn)該如何解決?
2024-09-26 07:11:27
單片機(jī)的啟動(dòng)過(guò)程是怎樣的
啟動(dòng)過(guò)程簡(jiǎn)介單片機(jī)的啟動(dòng)過(guò)程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個(gè)程序是用戶訪問(wèn)不到也改寫(xiě)不了的),即啟動(dòng)代碼。啟動(dòng)代碼程序建立完運(yùn)行環(huán)境后,會(huì)去讀串口狀態(tài),就是用戶下載程序用到的各個(gè)端口,判斷用戶
2021-11-29 06:47:25
雙向可控硅電機(jī)啟動(dòng)過(guò)程中無(wú)法關(guān)斷 ,幫我看看啥原因
這是電機(jī)啟動(dòng)過(guò)程的電流波形,我們讓導(dǎo)通角先增大,后減小,嘗試了很多方法,還是會(huì)有大電流。是不是因?yàn)殡姍C(jī)啟動(dòng)過(guò)程中,電流滯后電壓角度增大導(dǎo)致的?電機(jī)空載啟動(dòng)的時(shí)候,電流滯后電壓會(huì)不會(huì)達(dá)到上圖中的程度?
2017-01-05 15:29:12
在Linux啟動(dòng)過(guò)程中, 想將PC13 pin配置為輸出/拉起,如何修改設(shè)備樹(shù)?
在 Linux 啟動(dòng)過(guò)程中, 我想將 PC13 pin 配置為輸出/ 拉起 。 我該如何修改設(shè)備樹(shù) 。
2023-11-13 06:21:04
在硬件設(shè)計(jì)過(guò)程中該怎么選擇合適的電源模塊來(lái)為芯片供電?
在硬件設(shè)計(jì)過(guò)程中該怎么選擇合適的電源模塊來(lái)為芯片供電?
2021-09-28 08:55:07
在imx8qxp處理器啟動(dòng)過(guò)程中,CPU1、2、3 無(wú)法上線怎么解決?
我在 imx8qxp 處理器啟動(dòng)過(guò)程中遇到問(wèn)題,CPU1、2、3 無(wú)法上線。我使用的是 imx-yocto-L5.4.24_2.1.0 版本。問(wèn)題與scfw的配置有關(guān)嗎?
2023-03-17 07:55:29
嵌入式Linux系統(tǒng)的構(gòu)成和啟動(dòng)過(guò)程
文章目錄一、嵌入式Linux系統(tǒng)構(gòu)成二、嵌入式Linux系統(tǒng)啟動(dòng)過(guò)程在我們的周圍,大量的嵌入式設(shè)備都是基于Linux系統(tǒng)來(lái)構(gòu)建的,嵌入式Linux與主機(jī)Linux相比有著自己的一些特點(diǎn),本文就嵌入式
2021-12-16 06:20:24
嵌入式linux開(kāi)發(fā)過(guò)程中的硬件問(wèn)題都有哪些你想不到的呢
嵌入式linux開(kāi)發(fā)過(guò)程中逗比的硬件問(wèn)題
2021-12-21 06:47:52
我如何在啟動(dòng)過(guò)程中跳過(guò)BAF部分呢?
BAF配置DCF寄存器中的BAF_BYPASS字段是否被用戶修改。如果是,我可以在哪個(gè)模塊下找到它?我無(wú)法在 Lauterbach 調(diào)試器中找到它。如果不是,我如何在啟動(dòng)過(guò)程中跳過(guò) BAF 部分?- 我的設(shè)備有預(yù)編程的 BAF 區(qū)域。謝謝!
2022-12-08 06:50:10
晶閘管控制異步電機(jī)軟啟動(dòng)過(guò)程中振蕩現(xiàn)象研究
純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~*附件:晶閘管控制異步電機(jī)軟啟動(dòng)過(guò)程中振蕩現(xiàn)象研究.pdf【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知,刪除內(nèi)容!
2025-06-04 14:39:26
玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動(dòng)過(guò)程
`玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動(dòng)過(guò)程更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s1概述 簡(jiǎn)單的,以u(píng)g585中的一張圖來(lái)看,從大的方面說(shuō)
2019-04-16 06:56:32
運(yùn)行伺服時(shí)模組移動(dòng)過(guò)程中聲音很大的原因是什么?怎么解決?
運(yùn)行伺服時(shí)模組移動(dòng)過(guò)程中聲音很大的原因是什么?怎么解決?
2021-10-08 08:45:39
羅馬尼亞330MW機(jī)組起動(dòng)過(guò)程中壓缸溫度異常變化的分析與防范
羅馬尼亞330 MW 機(jī)組起動(dòng)過(guò)程中壓缸溫度異常變化的分析與防范措施
華電蒲城發(fā)電有限責(zé)任公司2 臺(tái)羅馬尼亞330 MW 機(jī)組在起動(dòng)過(guò)程中出現(xiàn)了中壓缸溫度異常變化情況,分析了缸
2009-02-07 02:21:20
13
13Linux防火墻中模塊加載技術(shù)的研究與實(shí)現(xiàn)
本文對(duì)Linux 防火墻內(nèi)核中Netfilter 系統(tǒng)的結(jié)構(gòu)框架、工作原理及其在內(nèi)核中的實(shí)現(xiàn)機(jī)制進(jìn)行了研究,闡述了Linux 內(nèi)核可加載模塊的機(jī)制,并分析了其主要數(shù)據(jù)結(jié)構(gòu)及它們之間的關(guān)系。
2009-06-19 09:59:57
11
11一種基于ARM-Linux的FPGA程序加載方法
本文實(shí)現(xiàn)了一種基于ARM-Linux 的FPGA 程序加載方法,詳細(xì)討論了加載過(guò)程中各個(gè)階段程序?qū)ε渲霉苣_的操作,給出了硬件實(shí)現(xiàn),編寫(xiě)了運(yùn)行于ARM 處理器的嵌入式Linux上的驅(qū)動(dòng)程序。
2009-12-19 16:26:26
31
31at91rm9200啟動(dòng)過(guò)程教程
at91rm9200啟動(dòng)過(guò)程教程
系統(tǒng)上電,檢測(cè)BMS,選擇系統(tǒng)的啟動(dòng)方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動(dòng)。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩
2010-03-08 15:57:14
44
44系統(tǒng)啟動(dòng)過(guò)程
系統(tǒng)啟動(dòng)過(guò)程系統(tǒng)啟動(dòng)過(guò)程主要由一下幾步組成(以硬盤(pán)啟動(dòng)為例):1. 開(kāi)機(jī)2. BIOS 加電自檢 ( Power On Self Test -- POST ),內(nèi)存地址為 0ffff:00003. 將硬盤(pán)第一個(gè)
2009-10-11 12:17:26
2486
2486Linux系統(tǒng)啟動(dòng)時(shí)間優(yōu)化方案
首先是對(duì)Linux啟動(dòng)過(guò)程的跟蹤和分析,生成詳細(xì)的啟動(dòng)時(shí)間報(bào)告,較為簡(jiǎn)單可行的方式是通過(guò)PrintkTime功能為啟動(dòng)過(guò)程的所有內(nèi)核信息增加時(shí)間戳,便于匯總分析
2011-05-13 10:56:50
3203
3203電力系統(tǒng)黑啟動(dòng)過(guò)程中發(fā)電機(jī)失磁保護(hù)運(yùn)行分析
電力系統(tǒng)黑啟動(dòng)過(guò)程中特殊的開(kāi)關(guān)操作以及運(yùn)行方式都會(huì)影響到繼電保護(hù)裝置的安全性和可靠性。本文簡(jiǎn)述了發(fā)電機(jī)低勵(lì)、失磁保護(hù)的主要原理、并且利用MATLAB 中PSB 及Simulink 的部分元
2011-05-28 10:56:29
27
27嵌入式uCLinux內(nèi)核啟動(dòng)過(guò)程分析
分析uCLinux的啟動(dòng)過(guò)程,可以加快系統(tǒng)啟動(dòng)速度、正確建立應(yīng)用環(huán)境。本文要研究的就是uCLinux操作系統(tǒng)內(nèi)核的啟動(dòng)過(guò)程。
2011-08-15 16:51:42
919
919IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知
IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知
2015-12-22 14:46:55
10
10Windows XP 啟動(dòng)過(guò)程詳解
我們每天都在和 Windows 打交道,很多人可能每天都要面對(duì)多次 Windows 的啟動(dòng)過(guò)程,可是您知道在 Windows 的啟動(dòng)過(guò)程背后,隱藏著什么秘密嗎?在這一系列過(guò)程中都用到了哪些重要的系統(tǒng)文件?系統(tǒng)的啟動(dòng)分為幾個(gè)步驟?在這些步驟中計(jì)算機(jī)中發(fā)生了什么事情?這些就是本文告訴您的。
2016-11-10 18:24:15
11
11國(guó)產(chǎn)300MW機(jī)組中壓缸啟動(dòng)的特點(diǎn)及啟動(dòng)過(guò)程
機(jī)組采用合理啟動(dòng)方式對(duì)減小啟動(dòng)過(guò)程中的壽命損耗、縮短機(jī)組啟動(dòng)時(shí)間尤為重要。介紹了國(guó)產(chǎn)300 MW機(jī)組中壓缸啟動(dòng)的特點(diǎn)及啟動(dòng)過(guò)程,并提出了中壓缸啟動(dòng)存在的一些問(wèn)題。
2017-10-14 10:40:30
18
18Linux基礎(chǔ)命令之Linux啟動(dòng)過(guò)程詳解
2.2 Linux啟動(dòng)過(guò)程詳解 在了解了Linux的常見(jiàn)命令之后,下面詳細(xì)講解Linux的啟動(dòng)過(guò)程。Linux的啟動(dòng)過(guò)程包含了Linux工作原理的精髓,而且在嵌入式開(kāi)發(fā)過(guò)程中非常需要這方面的知識(shí)
2017-10-18 14:17:06
2
2達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動(dòng)過(guò)程
達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動(dòng)過(guò)程
2017-10-21 09:53:18
6
6嵌入式系統(tǒng)內(nèi)核引導(dǎo)啟動(dòng)過(guò)程淺析
嵌入式系統(tǒng)內(nèi)核引導(dǎo)啟動(dòng)過(guò)程淺析
2017-10-30 10:26:13
6
6達(dá)芬奇DMSoC硬件部分及Linux OS的啟動(dòng)過(guò)程
達(dá)芬奇(DaVinci)數(shù)字媒體技術(shù)平臺(tái)TMS320DM6446/3采用了ARM+DSP雙核的架構(gòu),本文從芯片的硬件結(jié)構(gòu)入手介紹達(dá)芬奇DMSoC硬件部分及Linux OS的啟動(dòng)過(guò)程。 達(dá)芬奇
2017-11-06 10:38:14
0
0linux內(nèi)核無(wú)法啟動(dòng)
Linux在啟動(dòng)過(guò)程中會(huì)出現(xiàn)一些故障,導(dǎo)致系統(tǒng)無(wú)法正常啟動(dòng),本文列舉了幾個(gè)應(yīng)用單用戶模式、GRUB命令操作、Linux救援模式的典型故障修復(fù)案例幫助讀者了解此類問(wèn)題的解決。
2017-11-14 17:26:03
3463
3463
試述shell的啟動(dòng)過(guò)程詳情
進(jìn)程結(jié)束后wait函數(shù)會(huì)返回,從而shell收到通知并回收資源。本文主要說(shuō)明shell如何啟動(dòng)用戶進(jìn)程,Linux系統(tǒng)中可執(zhí)行文件格式ELF以及通過(guò)execve系統(tǒng)調(diào)用啟動(dòng)用戶進(jìn)程的過(guò)程。
2017-11-15 11:06:56
4023
4023
pxe遠(yuǎn)程啟動(dòng)過(guò)程分析
PXE是由Intel公司開(kāi)發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過(guò)網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過(guò)網(wǎng)絡(luò)啟動(dòng)操作系統(tǒng),在啟動(dòng)過(guò)程中,終端要求服務(wù)器分配IP地址,再用TFTP或MTFTP協(xié)議下載一個(gè)啟動(dòng)軟件包到本機(jī)內(nèi)存中執(zhí)行
2017-11-20 16:25:57
8206
8206
詳解bootloader的執(zhí)行流程與ARM Linux啟動(dòng)過(guò)程分析
RM Linux啟動(dòng)過(guò)程分析是本文要介紹的內(nèi)容,嵌入式 Linux 的可移植性使得我們可以在各種電子產(chǎn)品上看到它的身影。對(duì)于不同體系結(jié)構(gòu)的處理器來(lái)說(shuō)Linux的啟動(dòng)過(guò)程也有所不同。
本文以
2017-12-21 09:24:53
11201
11201
openwrt啟動(dòng)過(guò)程詳細(xì)分析
OpenWrt是一個(gè)開(kāi)放的linux平臺(tái),主要用于帶wifi的無(wú)線路由上。類似于Ubuntu、Red Hat、之類的linux發(fā)行版本,它也有一套自己的啟動(dòng)流程。本文主要介紹了openwrt啟動(dòng)過(guò)程及詳細(xì)分析。
2017-12-27 09:17:39
13579
13579
關(guān)于Linux啟動(dòng)過(guò)程分析
在引導(dǎo)時(shí),內(nèi)核需要硬件信息,不僅僅是已編譯過(guò)的處理器類型。代碼中的指令通過(guò)單獨(dú)存儲(chǔ)的配置數(shù)據(jù)進(jìn)行擴(kuò)充。有兩種主要的數(shù)據(jù)存儲(chǔ)方法:設(shè)備樹(shù)device-tree 和 高級(jí)配置和電源接口(ACPI)表。內(nèi)核通過(guò)讀取這些文件了解每次啟動(dòng)時(shí)需要運(yùn)行的硬件。
2018-03-14 17:45:34
4305
4305
Linux系統(tǒng)開(kāi)機(jī)和啟動(dòng)過(guò)程
分別為iOS操作系統(tǒng),Android操作系統(tǒng)。而今天小編就給大家著重講講Linux系統(tǒng)開(kāi)機(jī)和啟動(dòng)過(guò)程。 內(nèi)核引導(dǎo) 當(dāng)計(jì)算機(jī)打開(kāi)電源后,首先是BIOS開(kāi)機(jī)自檢,按照BIOS中設(shè)置的啟動(dòng)設(shè)備(通常是硬盤(pán))來(lái)啟動(dòng)。 操作系統(tǒng)接管硬件以后,首先讀入 /boot 目錄下的內(nèi)核
2018-07-09 11:53:15
2089
2089走進(jìn)Linux之systemd啟動(dòng)過(guò)程
Linux系統(tǒng)的啟動(dòng)方式有點(diǎn)復(fù)雜,而且總是有需要優(yōu)化的地方。傳統(tǒng)的Linux系統(tǒng)啟動(dòng)過(guò)程主要由著名的init進(jìn)程(也被稱為SysV init啟動(dòng)系統(tǒng))處理,而基于init的啟動(dòng)系統(tǒng)被認(rèn)為有效率不足
2019-04-27 19:14:00
3589
3589Linux 系統(tǒng)啟動(dòng)過(guò)程分析
了基本的硬件驅(qū)動(dòng),在系統(tǒng)安裝過(guò)程中會(huì)檢測(cè)系統(tǒng)硬件信息,根據(jù)安裝信息和系統(tǒng)硬件信息將一部分設(shè)備驅(qū)動(dòng)寫(xiě)入 initrd 。這樣在以后啟動(dòng)系統(tǒng)時(shí),一部分設(shè)備驅(qū)動(dòng)就放在initrd中來(lái)加載。這里有必要給大家再多
2019-04-02 14:32:33
600
600Linux開(kāi)機(jī)引導(dǎo)和啟動(dòng)過(guò)程詳解
的操作。?BIOS 上電自檢(POST)上電自檢過(guò)程中其實(shí) Linux 沒(méi)有什么也沒(méi)做,上電自檢主要由硬件的部分來(lái)完成,這對(duì)于所有操作系統(tǒng)都一樣。當(dāng)電腦接通電源,電腦開(kāi)始執(zhí)行 BIOS(基本輸入輸出系統(tǒng)
2019-04-02 14:46:45
840
840電源模塊在通電后可能難以啟動(dòng)的原因分析
首先是破壞性較小的情況?!娫?b class="flag-6" style="color: red">模塊在啟動(dòng)過(guò)程中難以啟動(dòng),甚至無(wú)法啟動(dòng)。
2020-03-08 11:11:00
4092
4092STM32的啟動(dòng)過(guò)程是怎么樣的?
下好程序后,重啟芯片時(shí),SYSCLK的第4個(gè)上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動(dòng)過(guò)程。 STM32上電或者復(fù)位后,代碼區(qū)始終從0x00000000開(kāi)始,其實(shí)就是將存儲(chǔ)空間的地址映射到0x00000000中。三種啟動(dòng)模式如下: 從主閃存存儲(chǔ)器啟動(dòng),將主Flash地
2020-11-27 16:36:44
4175
4175
TMS320F2812的啟動(dòng)過(guò)程詳細(xì)說(shuō)明
芯片啟動(dòng)過(guò)程是芯片上電之后做的事情,幾乎是瞬間完成的流程。涉及到了芯片自身硬件啟動(dòng)的過(guò)程、固化在芯片中的啟動(dòng)程序的執(zhí)行、以及進(jìn)入操作系統(tǒng)之前的CPU的工作流程。2812的啟動(dòng)也可以使用上述的流程來(lái)分析,下面簡(jiǎn)要的介紹下2812的啟動(dòng)流程。
2021-03-25 15:10:00
22
22車輛發(fā)動(dòng)機(jī)起動(dòng)過(guò)程中的測(cè)試方案
。結(jié)果表明,高原起動(dòng)環(huán)境、較高的摩托小時(shí)和技術(shù)狀況劣化的噴油器使發(fā)動(dòng)機(jī)起動(dòng)過(guò)程中的最低著火轉(zhuǎn)速提髙,平均單缸升速度降低,導(dǎo)致發(fā)動(dòng)機(jī)起動(dòng)性能降低。
2021-06-19 10:56:37
9
9MCU和SOC啟動(dòng)過(guò)程對(duì)比
:電源->Bootloader(引導(dǎo)操作系統(tǒng)啟動(dòng))->Linux內(nèi)核->文件系統(tǒng)(根據(jù)功能劃分,如div中是硬件,home是工作目錄,帶訪問(wèn)權(quán)限)x86Intel 如winsows OS啟動(dòng)過(guò)程:電源 ->BIOS-》windows內(nèi)核-》C、D盤(pán)->程序啟動(dòng)(如Q
2021-10-25 19:21:06
9
9嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarder
嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarderBootLoarder是什么Linux操作系統(tǒng)分層BootLoarderBootLoader操作模式BootLoader啟動(dòng)過(guò)程
2021-11-01 17:05:50
8
8【嵌入式Linux之QEMU模擬器】5、使用u-boot加載Linux內(nèi)核
在前面的實(shí)驗(yàn)中,我們都是直接運(yùn)行Linux內(nèi)核。而在實(shí)際的嵌入式系統(tǒng)中都是通過(guò)BootLoader加載Linux鏡像,然后再去運(yùn)行。嵌入式BootLoader功能類似PC中的BIOS,用以檢測(cè)硬件
2021-11-02 15:21:03
14
14單片機(jī)的啟動(dòng)過(guò)程
啟動(dòng)過(guò)程簡(jiǎn)介單片機(jī)的啟動(dòng)過(guò)程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個(gè)程序是用戶訪問(wèn)不到也改寫(xiě)不了的),即啟動(dòng)代碼。啟動(dòng)代碼程序建立完運(yùn)行環(huán)境后,會(huì)去讀串口狀態(tài),就是用戶下載程序用到的各個(gè)端口,判斷用戶
2021-11-17 10:21:03
8
8單片機(jī)的啟動(dòng)過(guò)程
啟動(dòng)過(guò)程簡(jiǎn)介單片機(jī)的啟動(dòng)過(guò)程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個(gè)程序是用戶訪問(wèn)不到也改寫(xiě)不了的),即啟動(dòng)代碼。啟動(dòng)代碼程序建立完運(yùn)行環(huán)境后,會(huì)去讀串口狀態(tài),就是用戶下載程序用到的各個(gè)端口,判斷用戶
2021-11-19 12:06:07
55
55STM32啟動(dòng)過(guò)程--啟動(dòng)文件--分析
STM32啟動(dòng)過(guò)程--啟動(dòng)文件--分析一、概述1、說(shuō)明 每一款芯片的啟動(dòng)文件都值得去研究,因?yàn)樗墒悄愕某绦蚺艿淖畛跻欢温?,不可以不知道。通過(guò)了解啟動(dòng)文件,我們可以體會(huì)到處理器的架構(gòu)、指令集
2021-11-30 13:21:14
4
4stm32啟動(dòng)過(guò)程
一次性搞定stm32啟動(dòng)模式與啟動(dòng)過(guò)程一、stm32啟動(dòng)模式二、從flash啟動(dòng)過(guò)程2.1 數(shù)據(jù)在堆棧中存儲(chǔ)方式2.2 stm32的正常啟動(dòng)過(guò)程三、總結(jié)一、stm32啟動(dòng)模式這三種模式請(qǐng)看下列圖示
2021-12-16 16:57:05
8
8STM32啟動(dòng)過(guò)程分析
之后,非常有助于我們理解 STM32 啟動(dòng)過(guò)程中還做了哪些隱藏的工作。關(guān)于詳細(xì)的程序和數(shù)據(jù)存儲(chǔ)分布信息,我們可以從Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的存儲(chǔ)結(jié)構(gòu)STM32 的程序在 Flash 上的存儲(chǔ)結(jié)構(gòu)如下圖所示:棧頂指針 M
2021-12-23 19:55:45
12
12從庫(kù)函數(shù)看STM32時(shí)鐘啟動(dòng)過(guò)程
本文基于ST32F407ZGT6編寫(xiě)——————————————時(shí)鐘系統(tǒng)是單片機(jī)的心臟,單片機(jī)初始化的第一步就是時(shí)鐘系統(tǒng)的初始化。本文是基于STM32的庫(kù)函數(shù)對(duì)時(shí)鐘系統(tǒng)啟動(dòng)過(guò)程進(jìn)行分析。啟動(dòng)過(guò)程需要
2022-01-14 15:52:02
0
0BootLoader啟動(dòng)過(guò)程的顯示策略研究與實(shí)現(xiàn)
準(zhǔn)備好合適的環(huán)境,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成,同時(shí)在BootLoader的啟動(dòng)過(guò)程還可以實(shí)現(xiàn)一些小的功能,比如fastboor、存儲(chǔ)設(shè)置等,所以它對(duì)于嵌入式操作系統(tǒng)來(lái)說(shuō)是非常重要的,因此,對(duì)它的運(yùn)行狀態(tài)的檢測(cè)與判斷就特別重要。
2022-04-02 17:14:45
1
1SpringBoot如何實(shí)現(xiàn)啟動(dòng)過(guò)程中執(zhí)行代碼
目前開(kāi)發(fā)的SpringBoot項(xiàng)目在啟動(dòng)的時(shí)候需要預(yù)加載一些資源。而如何實(shí)現(xiàn)啟動(dòng)過(guò)程中執(zhí)行代碼,或啟動(dòng)成功后執(zhí)行,是有很多種方式可以選擇,我們可以在static代碼塊中實(shí)現(xiàn),也可以在構(gòu)造方法里實(shí)現(xiàn),也可以使用@PostConstruct注解實(shí)現(xiàn)。
2022-06-20 17:32:48
2036
2036linux內(nèi)核啟動(dòng)過(guò)程會(huì)執(zhí)行用戶空間的init進(jìn)程
linux內(nèi)核啟動(dòng)過(guò)程的后期,在kernel_init()函數(shù)代表的init線程中,會(huì)嘗試執(zhí)行用戶空間的init進(jìn)程
2022-10-14 09:12:28
1784
1784linux內(nèi)核中do_initcalls函數(shù)的執(zhí)行邏輯分析
在linux內(nèi)核啟動(dòng)過(guò)程中,會(huì)向終端打印出很多的日志信息,從這些信息中可以得到許多內(nèi)核的行為。
2023-01-13 09:20:10
1984
1984分析ARM Cortex-M內(nèi)核復(fù)位啟動(dòng)過(guò)程
ARM Cortex-M內(nèi)核的復(fù)位啟動(dòng)過(guò)程也被稱為復(fù)位序列(Reset sequence),下面就來(lái)簡(jiǎn)要總結(jié)分析下這一過(guò)程。
2023-03-20 09:58:43
3665
3665ESP32學(xué)習(xí)筆記:存儲(chǔ)分布和啟動(dòng)過(guò)程
今天我們來(lái)說(shuō)說(shuō)ESP32 for Arduino存儲(chǔ)分布以及啟動(dòng)過(guò)程。
2023-07-14 15:10:38
6270
6270
ATF的啟動(dòng)過(guò)程介紹
ATF的啟動(dòng)過(guò)程根據(jù)ARMv8的運(yùn)行模式(AArch32/AArch64)會(huì)有所不同,但基本一致。 在AArch32中是不會(huì)去加載bl31而是將EL3或者M(jìn)onitor模式的運(yùn)行代碼保存在bl32中
2023-11-07 15:48:31
2411
2411
logd的啟動(dòng)過(guò)程和內(nèi)容
logd作為native service,系統(tǒng)啟動(dòng)過(guò)程通過(guò)讀取rc文件來(lái)啟動(dòng),相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動(dòng)過(guò)程 logd啟動(dòng)后會(huì)存在三個(gè)用來(lái)服務(wù)日志系統(tǒng)
2023-11-23 16:54:44
1791
1791
stm32啟動(dòng)過(guò)程詳解
STM32啟動(dòng)過(guò)程詳解 近年來(lái),STM32微控制器在嵌入式系統(tǒng)中的應(yīng)用越來(lái)越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢(shì)。而要讓STM32微控制器正常工作,首先要了解它
2023-12-08 15:47:03
2816
2816linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核
,需要了解Linux內(nèi)核的基本概念和API。以下是一些關(guān)鍵概念: 1.1 內(nèi)核模塊:Linux內(nèi)核模塊是一種動(dòng)態(tài)加載和卸載的代碼,可以在不重新啟動(dòng)系統(tǒng)的情況下加載和卸載。驅(qū)動(dòng)程序通常以內(nèi)核模塊的形式實(shí)現(xiàn)。 1.2 設(shè)備模型:Linux內(nèi)核使用設(shè)備模型來(lái)管理設(shè)
2024-08-30 15:02:19
1661
1661BQ79600-Q1啟動(dòng)過(guò)程
電子發(fā)燒友網(wǎng)站提供《BQ79600-Q1啟動(dòng)過(guò)程.pdf》資料免費(fèi)下載
2024-11-09 14:57:49
2
2
電子發(fā)燒友App



評(píng)論