我覺得我的文章相對來說都是比較淺顯的。一些初學(xué)者可以看看,對于高手來說,如果你們不吝嗇時間的話,希望也能幫我看看,指點一下其中的錯誤。這也是我到這里來和大家交流的目的。?
?????? 閱讀Linux內(nèi)核啟動代碼的直接動力是我想編寫RTL8019AS的網(wǎng)卡驅(qū)動程序(2.4.18內(nèi)核只支持了CS8900A)。既然要寫驅(qū)動,我就想知道它是怎么樣被加載的,好奇心驅(qū)使我先去搞定這個問題。?
?????? 拿到2.4.18的軟件包,一萬多個文件,我不知怎么下手。所幸手頭有這么三件工具助我入門:?
?????? 1,一塊移植好linux的開發(fā)板,通過它可以看到linux啟動過程打印的消息。?
?????? 2, google,網(wǎng)上關(guān)于linux的資料真是太多了?。?!?
?????? 3, Windows文件搜索引擎,通過它可以知道在那些文件中打印出那些消息。?
?????? 很快,我就找到了linux啟動的總的入口,/arch/arm/boot/compressed/head.s。?
?????? head.s完成的工作主要是底層寄存器、MMU的一些設(shè)定以及kernel的解壓縮。匯編文件中調(diào)用的C代碼大多位于該目錄下misc.c文件,比如decompress_kernel。?
?????? 當(dāng)然,這部分不是重點,head執(zhí)行完畢以后就跳到start_kernel(),這才是我們的重點所在,這個函數(shù)位于文件/init/main.c中。這個文件是啟動的主線?。?!?
?????? 在start_kernel中,依次執(zhí)行各個初始話函數(shù),這里具體我沒有看,一直到最后rest_init(),在這個函數(shù)里啟動了一個init線程,而主線程自己則進(jìn)入了IDLE狀態(tài)。所以我們關(guān)心一下init線程做了什么事情,看文件最后init函數(shù)。?
?????? 在這個函數(shù)里面,先lock_kernel,然后調(diào)用do_basic_setup,在這個函數(shù)里面又是一堆的初始化,有一個函數(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ū)動就是被這一段程序加載的。怎么回事?我們慢慢來看:?
?????? 首先看__initcall_start和__initcall_end,找遍了所有C代碼,沒有它們的定義。后來在vmlinux-armv.lds.in文件中找到了它們:
__initcall_start = .;
*(.initcall.init)
__initcall_end = .;?
?????? 這個文件是和link相關(guān)的文件,它決定代碼在load環(huán)境中的位置,就好比ADS中的scf文件。我們還是先看.initcall.init的含義吧,它在/include/linux/init.h中定義:
#define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))?
?????? 參考GCC說明,這段話的意思就是說所有以__init_call前綴定義的函數(shù)在鏈接過程中都放到名字為.initcall.init的段(section)里面。OK,有點味道了,也就是說,如果我們給一個函數(shù)冠以__init_call,那么它在編譯鏈接的時候就會放到.initcall.init這個段里面。而上面這段循環(huán)所做的事情就很清楚了,它從段的首地址開始,依次執(zhí)行每一個函數(shù),直到段尾為止。?
?????? 這個時候,我們應(yīng)該在想,那些要注冊的外圍模塊的初始化程序是不是都是定義成__init_call類型的呢?正如我們所料,查看各個模塊我們會發(fā)現(xiàn)其初始化函數(shù)x會被定義成為module_init(x),在/include/linux/init.h中它定義如下:
#define module_init(x) __initcall(x);
#define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn?
?????? 這段代碼說module_init(x)等價于__initcall(x),而__initcall(x)表示函數(shù)x是靜態(tài)的具有__init_call性質(zhì)的函數(shù)(這里名字比較多,容易看亂),因此在鏈接時,它會被放在.initcall.init段中。只要x函數(shù)運(yùn)行起來了,那就可以注冊設(shè)備、中斷入口、中斷服務(wù)函數(shù)了。接下來的事情就好辦了?
?????? 搞清出設(shè)備如何被加載以后,我們還需要知道另外一個問題:怎樣把一個模塊的驅(qū)動程序加載到內(nèi)核里面呢?SO簡單,make menuconfig,把對應(yīng)設(shè)備打開。但是能不能再具體一點呢,我們做這么一個改動,怎么映射到編譯&鏈接過程呢。我這個人就是喜歡找麻煩,因此又在網(wǎng)上搜啊搜,而且用了最笨的方*,看看make menuconfig前后那些文件的修改日期發(fā)生了變化。最終還是找到了一點,/scripts下的文件是用來支持各種config模式的(當(dāng)然包括menuconfig),核心代碼在Kconfig中。在每個驅(qū)動設(shè)備的文件夾下(比如net,mtd)都有一個叫config.in的文件,這些文件定義了我們在menuconfig畫面中看到的目錄結(jié)構(gòu)&選項。?
?????? 眼睛看到的畫面總歸都是虛的,這些改動究竟反映到了哪里去了呢?兩個文件:./config和/include/linux/ autoconf.h。我們做完menuconfig以后,所有改動就反映到了這兩個文件中,這兩個文件的內(nèi)容是一致的。在我們做編譯的過程中,頂層的makefile文件從autoconf.h文件中讀取各項宏定義然后傳遞給子一層的makefile,這些makefile根據(jù)宏定義選擇那些.o文件被鏈接進(jìn)來加到內(nèi)核中。?
?????? 好了,知道這些我就知道怎么給8019添加驅(qū)動了,yy一下:?
?????? 1,首先要有驅(qū)動程序代碼,8019.c?
?????? 2,修改net目錄下的config.in文件中添加一項,?
?????? dep_tristate ' RTL8019 support' CONFIG_RTL8019 $CONFIG_ISA?
?????? 3,打開menuconfig,將RTL8019 support選擇y,保存推出后autoconf文件中應(yīng)該就有了一個宏定義:#define CONFIG_RTL8019?
?????? 4,打開net目錄下的makefile,添加:?
?????? obj-$( CONFIG_RTL8019) += 8019.o?
?????? 5,make dep; make zImage;搞定!?
?????? 注:在menuconfig中選擇m和 y的區(qū)別:?
?????? y: 模塊驅(qū)動編譯到內(nèi)核中,啟動時自動加載?
?????? m:模塊會被編譯,但是不會被編譯到內(nèi)核中,只是生成.o文件,我們可以收集這些.o文件做到linux的文件系統(tǒng)中,然后用insmod實現(xiàn)動態(tài)加載。
Linux啟動過程中硬件模塊的加載
- Linux(206514)
- 硬件模塊(6401)
相關(guān)推薦
以s3c2440為例的arm芯片的啟動過程
本文將以s3c2440為例詳細(xì)講述 arm 芯片的啟動過程。s3c2440支持兩種啟動模式:NAND FLASH 啟動和非 NAND FLASH 啟動(一般是NOR FLASH 啟動,并且可以配置數(shù)據(jù)寬度),通過 OM1、OM0 兩個管腳來控制。
2020-12-02 14:13:44
3154


STM32H7的啟動過程分析
本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-10-17 14:42:52
1494

ARM Cortex-M0 DesignStart系列--4啟動過程分析
書接上文《ARM_Cortex-M0 DesignStart系列--3rtl仿真過程的詳細(xì)分析》,本文基于hello這個case,對Cortex M0的啟動過程做一個詳細(xì)的分析,其實整個ARM Cortex M系列的啟動的過程都是很相似的,這對我們理解SoC的啟動過程會很有幫助。
2022-11-10 09:05:25
2121


詳解STM32啟動過程
本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-11-14 11:24:11
1580

linux系統(tǒng)是怎么啟動的?
每次打開 Linux PC 時,它都會經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個 Linux 發(fā)行版在典型的啟動過程中都會經(jīng)歷 4 個不同的階段。
2022-12-12 11:50:00
674

linux驅(qū)動程序的主要流程和功能
介紹Linux驅(qū)動程序的主要流程和功能。 一、驅(qū)動程序的加載和初始化 Linux系統(tǒng)在啟動過程中,會自動加載已安裝的設(shè)備驅(qū)動程序。加載驅(qū)動程序的過程一般分為三個階段,即啟動階段、模塊加載階段和設(shè)備注冊階段。 啟動階段:操作系統(tǒng)在啟
2023-12-08 14:56:02
668

專家揭秘:STM32啟動過程全解
電子發(fā)燒友網(wǎng)核心提示: 本文主要闡述了STM32啟動過程全面解析,包括啟動過程的介紹、啟動代碼的陳列以及深入解析。 相對于ARM上一代的主流ARM7/ARM9內(nèi)核架構(gòu),新一代Cortex內(nèi)核架構(gòu)的
2012-09-10 08:50:17
52640


Linux啟動過程詳解
1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命
2021-11-02 07:01:06
Linux內(nèi)核啟動過程和Bootloader(總述)
在運(yùn)行過程中雖然具有初始化系統(tǒng)和執(zhí)行用戶輸入的命令等作用,但它最根本的功能就是為了啟動 Linux 內(nèi)核。2.1 Bootloader的概念和作用 Bootloader是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是
2012-08-18 17:35:24
Linux和Windows系統(tǒng)啟動過程的簡單分析
AT PPC.....bootloader特性:以命令為基礎(chǔ)。一旦引導(dǎo)啟動系統(tǒng)后,bootloader就不存在。Linux和Windows啟動過程中,基本的原理都差不多,都先加載一個bootloader來初始化硬件設(shè)備,為系統(tǒng)運(yùn)行做好準(zhǔn)備;對于硬盤的識別,Windows是以盤來識別,而Linux是采用根文件系統(tǒng) 。最后才是啟動一個應(yīng)用程序。
2017-08-28 11:27:47
DM8127啟動過程中M3核死機(jī)
hi,你好:DM8127是多核包括A8,兩個M3和一個DSP,四個核心。我有幾塊開發(fā)板,其中一塊開發(fā)板總是在加載M3核的時候程序會死機(jī)。問題:1.板子在啟動過程中,連續(xù)加載兩個M3核的時候會出現(xiàn)死機(jī)
2020-04-15 09:12:35
PCIe啟動過程中C6678程序加載
在DSP上運(yùn)行的代碼量很大,過程繁瑣。
請問有沒有方法將DSP程序直接在DSP上自啟動,不需要通過Host? PC發(fā)送。我想是否能實現(xiàn)板卡能通過PCIe模式啟動時,自動加載flash中的DSP程序??
當(dāng)然只要有方法能滿足 將DSP中的數(shù)據(jù)通過PCIE傳輸至Host? PC即可!
多謝大家!
2018-06-19 05:08:19
STM32啟動過程
一、STM32 啟動過程通過Boot引腳設(shè)定,尋找初始地址初始化棧指針 __initial_sp指向復(fù)位程序 Reset_Hander設(shè)置異常中斷 HardFault_Handler設(shè)置系統(tǒng)時鐘
2021-08-11 06:02:55
STM32F429啟動過程詳解
第13章 STM32F429啟動過程詳解本章教程主要跟大家講STM32F429的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分
2021-08-03 06:15:08
STM32H7啟動過程詳解
第13章 STM32H7啟動過程詳解本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。啟動過程相對來說還是比較重要的,理解...
2021-08-03 06:41:52
STM32WBA Nucleo-64設(shè)置主頻為100M,發(fā)現(xiàn)啟動過程中卡死在PWR_VOSR_VOSRDY,為什么?
使用ST官方的STM32WBA Nucleo-64板子,
當(dāng)設(shè)置主頻為100M,發(fā)現(xiàn)啟動過程中卡死在PWR_VOSR_VOSRDY;
設(shè)置主頻為16MHz的時候,可以正常完成初始化。
使用的是CodeMx生成的工程
這是啥原因呢?看手冊也沒找到原因
2024-03-14 08:28:11
U-Boot啟動過程--詳細(xì)版的完全分析
Boot Record,主引導(dǎo)記錄)中的Bootloader(例如LILO或GRUB),并進(jìn)一步引導(dǎo)操作系統(tǒng)的啟動。然而在嵌入式系統(tǒng)中通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動就完全由bootloader來完成。它主要的功能是加載與引導(dǎo)內(nèi)核映像 ,具體U-Boot啟動過程見附件資料。
2015-12-12 22:50:12
nand板子啟動過程中報錯如何解決
手里有塊nand的板子,最近注意到系統(tǒng)啟動過程中報錯:[ 2.046495] rtc-rx8010 0-0032: Unable to read registers #32..#32
2022-01-10 06:38:39
uCLinux內(nèi)核啟動過程是怎樣實現(xiàn)的?
什么是uCLinux操作系統(tǒng)?uCLinux內(nèi)核啟動過程是怎樣實現(xiàn)的?
2021-04-23 06:09:30
uboot啟動過程中延時修改
uboot啟動過程中延時修改uboot啟動過程中如何延時修改,許多人都會有這樣的問題,下面來學(xué)習(xí)一下如何解決這個問題,以下是我的步驟,大家可以借鑒,希望對你們有所幫助哦!平臺:sail-imx6系統(tǒng)
2019-11-01 16:29:48
【Intel Edison試用體驗】[硬件] 底層硬件探索 and 啟動過程分析(小k - NO.02)
是對MCU進(jìn)行下載程序和調(diào)試都得經(jīng)過Atom處理器。Atom運(yùn)行的 yocto Linux 是基于RAM運(yùn)行的,Quark的RTOS是基于ROM運(yùn)行的。兩者有什么區(qū)別呢?基于RAM的就是在系統(tǒng)啟動過程中
2016-07-25 16:34:27
【OK210試用體驗】+ 《uboot啟動過程分析》
(DDR);BL2加載內(nèi)核,把OS在SDRAM中運(yùn)行起來,最終OS是運(yùn)行在SDRAM(內(nèi)存)中的。在這個過程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個硬件必須在u-boot階段就做
2015-08-26 21:12:14
【OK210試用體驗】+ 《uboot啟動過程分析》
的。在這個過程中,u-boot需要初始化的硬件是CPU和DDR,所以,這兩個硬件必須在u-boot階段就做好初始化的工作。操作系統(tǒng)的內(nèi)核映像一般是存儲在 Flash 上的,當(dāng) Bootloader 將內(nèi)核
2015-08-25 12:36:20
【Rico Board試用體驗】通過終端輸出分析啟動程序
:Linux系統(tǒng)開發(fā)一般包括以下幾個步驟:啟動代碼uboot,內(nèi)核 uImage,文件系統(tǒng),應(yīng)用程序。這幾個部分在系統(tǒng)啟動過程中都會在串口終端打印出來。在啟動過程中,我分別截了幾張圖,下面會貼出來
2016-11-20 17:55:09
一次性搞定stm32啟動模式與啟動過程
一次性搞定stm32啟動模式與啟動過程一、stm32啟動模式二、從flash啟動過程2.1 數(shù)據(jù)在堆棧中存儲方式2.2 stm32的正常啟動過程三、總結(jié)一、stm32啟動模式這三種模式請看下列圖示
2022-02-15 06:53:44
單片機(jī)的啟動過程是怎樣的
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-29 06:47:25
雙向可控硅電機(jī)啟動過程中無法關(guān)斷 ,幫我看看啥原因
這是電機(jī)啟動過程的電流波形,我們讓導(dǎo)通角先增大,后減小,嘗試了很多方法,還是會有大電流。是不是因為電機(jī)啟動過程中,電流滯后電壓角度增大導(dǎo)致的?電機(jī)空載啟動的時候,電流滯后電壓會不會達(dá)到上圖中的程度?
2017-01-05 15:29:12
在Linux啟動過程中, 想將PC13 pin配置為輸出/拉起,如何修改設(shè)備樹?
在 Linux 啟動過程中, 我想將 PC13 pin 配置為輸出/ 拉起 。 我該如何修改設(shè)備樹 。
2023-11-13 06:21:04
在imx8qxp處理器啟動過程中,CPU1、2、3 無法上線怎么解決?
我在 imx8qxp 處理器啟動過程中遇到問題,CPU1、2、3 無法上線。我使用的是 imx-yocto-L5.4.24_2.1.0 版本。問題與scfw的配置有關(guān)嗎?
2023-03-17 07:55:29
嵌入式Linux系統(tǒng)的構(gòu)成和啟動過程
文章目錄一、嵌入式Linux系統(tǒng)構(gòu)成二、嵌入式Linux系統(tǒng)啟動過程在我們的周圍,大量的嵌入式設(shè)備都是基于Linux系統(tǒng)來構(gòu)建的,嵌入式Linux與主機(jī)Linux相比有著自己的一些特點,本文就嵌入式
2021-12-16 06:20:24
我如何在啟動過程中跳過BAF部分呢?
BAF配置DCF寄存器中的BAF_BYPASS字段是否被用戶修改。如果是,我可以在哪個模塊下找到它?我無法在 Lauterbach 調(diào)試器中找到它。如果不是,我如何在啟動過程中跳過 BAF 部分?- 我的設(shè)備有預(yù)編程的 BAF 區(qū)域。謝謝!
2022-12-08 06:50:10
求大佬分享關(guān)于N32926啟動過程
大家好,最近在使用n32926做網(wǎng)絡(luò)攝像頭功能,查閱了一下新塘的SDK發(fā)現(xiàn)沒有**介紹n32926的詳細(xì)啟動過程。之前用6410都是由uboot來引導(dǎo)linux 內(nèi)核,現(xiàn)在先想自己實現(xiàn)一個uboot類似功能的bootloader但是由于不了解n32926的啟動流程無從下手,請大神們援助。
2023-06-25 06:29:59
玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動過程
`玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動過程更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s1概述 簡單的,以ug585中的一張圖來看,從大的方面說
2019-04-16 06:56:32
講STM32H7的啟動過程
第13章 STM32H7啟動過程詳解本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。啟動過程相對來說還是比較重要的,理解了這個過程,...
2021-08-03 06:15:04
一種基于ARM-Linux的FPGA程序加載方法
本文實現(xiàn)了一種基于ARM-Linux 的FPGA 程序加載方法,詳細(xì)討論了加載過程中各個階段程序?qū)ε渲霉苣_的操作,給出了硬件實現(xiàn),編寫了運(yùn)行于ARM 處理器的嵌入式Linux上的驅(qū)動程序。
2009-12-19 16:26:26
30

at91rm9200啟動過程教程
at91rm9200啟動過程教程
系統(tǒng)上電,檢測BMS,選擇系統(tǒng)的啟動方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩
2010-03-08 15:57:14
44

系統(tǒng)啟動過程
系統(tǒng)啟動過程系統(tǒng)啟動過程主要由一下幾步組成(以硬盤啟動為例):1. 開機(jī)2. BIOS 加電自檢 ( Power On Self Test -- POST ),內(nèi)存地址為 0ffff:00003. 將硬盤第一個
2009-10-11 12:17:26
2102

電力系統(tǒng)黑啟動過程中發(fā)電機(jī)失磁保護(hù)運(yùn)行分析
電力系統(tǒng)黑啟動過程中特殊的開關(guān)操作以及運(yùn)行方式都會影響到繼電保護(hù)裝置的安全性和可靠性。本文簡述了發(fā)電機(jī)低勵、失磁保護(hù)的主要原理、并且利用MATLAB 中PSB 及Simulink 的部分元
2011-05-28 10:56:29
27

嵌入式uCLinux內(nèi)核啟動過程分析
分析uCLinux的啟動過程,可以加快系統(tǒng)啟動速度、正確建立應(yīng)用環(huán)境。本文要研究的就是uCLinux操作系統(tǒng)內(nèi)核的啟動過程。
2011-08-15 16:51:42
727

IC啟動過程及Vcc電壓波形的認(rèn)知
IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知
2015-12-22 14:46:55
10

Windows XP 啟動過程詳解
我們每天都在和 Windows 打交道,很多人可能每天都要面對多次 Windows 的啟動過程,可是您知道在 Windows 的啟動過程背后,隱藏著什么秘密嗎?在這一系列過程中都用到了哪些重要的系統(tǒng)文件?系統(tǒng)的啟動分為幾個步驟?在這些步驟中計算機(jī)中發(fā)生了什么事情?這些就是本文告訴您的。
2016-11-10 18:24:15
11

國產(chǎn)300MW機(jī)組中壓缸啟動的特點及啟動過程
機(jī)組采用合理啟動方式對減小啟動過程中的壽命損耗、縮短機(jī)組啟動時間尤為重要。介紹了國產(chǎn)300 MW機(jī)組中壓缸啟動的特點及啟動過程,并提出了中壓缸啟動存在的一些問題。
2017-10-14 10:40:30
18

Linux基礎(chǔ)命令之Linux啟動過程詳解
2.2 Linux啟動過程詳解 在了解了Linux的常見命令之后,下面詳細(xì)講解Linux的啟動過程。Linux的啟動過程包含了Linux工作原理的精髓,而且在嵌入式開發(fā)過程中非常需要這方面的知識
2017-10-18 14:17:06
2

達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動過程
達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動過程
2017-10-21 09:53:18
6

達(dá)芬奇DMSoC硬件部分及Linux OS的啟動過程
達(dá)芬奇(DaVinci)數(shù)字媒體技術(shù)平臺TMS320DM6446/3采用了ARM+DSP雙核的架構(gòu),本文從芯片的硬件結(jié)構(gòu)入手介紹達(dá)芬奇DMSoC硬件部分及Linux OS的啟動過程。 達(dá)芬奇
2017-11-06 10:38:14
0

linux內(nèi)核無法啟動
Linux在啟動過程中會出現(xiàn)一些故障,導(dǎo)致系統(tǒng)無法正常啟動,本文列舉了幾個應(yīng)用單用戶模式、GRUB命令操作、Linux救援模式的典型故障修復(fù)案例幫助讀者了解此類問題的解決。
2017-11-14 17:26:03
2601


pxe遠(yuǎn)程啟動過程分析
PXE是由Intel公司開發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng),在啟動過程中,終端要求服務(wù)器分配IP地址,再用TFTP或MTFTP協(xié)議下載一個啟動軟件包到本機(jī)內(nèi)存中執(zhí)行
2017-11-20 16:25:57
7444


詳解bootloader的執(zhí)行流程與ARM Linux啟動過程分析
RM Linux啟動過程分析是本文要介紹的內(nèi)容,嵌入式 Linux 的可移植性使得我們可以在各種電子產(chǎn)品上看到它的身影。對于不同體系結(jié)構(gòu)的處理器來說Linux的啟動過程也有所不同。
本文
2017-12-21 09:24:53
10115


openwrt啟動過程詳細(xì)分析
OpenWrt是一個開放的linux平臺,主要用于帶wifi的無線路由上。類似于Ubuntu、Red Hat、之類的linux發(fā)行版本,它也有一套自己的啟動流程。本文主要介紹了openwrt啟動過程及詳細(xì)分析。
2017-12-27 09:17:39
12397


Linux系統(tǒng)開機(jī)和啟動過程
分別為iOS操作系統(tǒng),Android操作系統(tǒng)。而今天小編就給大家著重講講Linux系統(tǒng)開機(jī)和啟動過程。 內(nèi)核引導(dǎo) 當(dāng)計算機(jī)打開電源后,首先是BIOS開機(jī)自檢,按照BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)來啟動。 操作系統(tǒng)接管硬件以后,首先讀入 /boot 目錄下的內(nèi)核
2018-07-09 11:53:15
1681

走進(jìn)Linux之systemd啟動過程
Linux系統(tǒng)的啟動方式有點復(fù)雜,而且總是有需要優(yōu)化的地方。傳統(tǒng)的Linux系統(tǒng)啟動過程主要由著名的init進(jìn)程(也被稱為SysV init啟動系統(tǒng))處理,而基于init的啟動系統(tǒng)被認(rèn)為有效率不足
2019-04-27 19:14:00
2917

Linux 系統(tǒng)啟動過程分析
了基本的硬件驅(qū)動,在系統(tǒng)安裝過程中會檢測系統(tǒng)硬件信息,根據(jù)安裝信息和系統(tǒng)硬件信息將一部分設(shè)備驅(qū)動寫入 initrd 。這樣在以后啟動系統(tǒng)時,一部分設(shè)備驅(qū)動就放在initrd中來加載。這里有必要給大家再多
2019-04-02 14:32:33
295

Linux開機(jī)引導(dǎo)和啟動過程詳解
。啟動階段接管了剩余工作,直到操作系統(tǒng)進(jìn)入可操作狀態(tài)??傮w來說,Linux 的開機(jī)引導(dǎo)和啟動過程是相當(dāng)容易理解,下文將分節(jié)對于不同步驟進(jìn)行詳細(xì)說明。BIOS 上電自檢(POST)引導(dǎo)裝載程序 (GRUB2
2019-04-02 14:46:45
353

一文知道MCU上電復(fù)位啟動過程
MCU上電(復(fù)位)時,從固定的地址啟動,一般是地址0x00000000,如ARM7;個別特殊的如STM32默認(rèn)啟動地址為0x8000000(flash區(qū)啟動)。啟動過程主要完成兩部分工作,一個是硬件執(zhí)行環(huán)境,如中斷向量表、寄存器、看門狗等,另一個是軟件環(huán)境,如C庫環(huán)境、ZI(未初始化的內(nèi)存變量)等。
2019-10-08 10:37:18
12073

分析STM32的三種上電啟動過程
上一篇文章我寫了STM32的RAM和Flash,文章最后我建議大家來深入研究一下STM32上電啟動過程。同時有小伙伴留言說想讓我講一下IAP(在線升級程序)。其實如果搞懂STM32的上電啟動過程,那么IAP就可以信手拈來了。下面我們一起來研究研究。
2020-05-03 18:03:00
7207

STM32的啟動過程是怎么樣的?
下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動過程。 STM32上電或者復(fù)位后,代碼區(qū)始終從0x00000000開始,其實就是將存儲空間的地址映射到0x00000000中。三種啟動模式如下: 從主閃存存儲器啟動,將主Flash地
2020-11-27 16:36:44
3309


TMS320F2812的啟動過程詳細(xì)說明
芯片啟動過程是芯片上電之后做的事情,幾乎是瞬間完成的流程。涉及到了芯片自身硬件啟動的過程、固化在芯片中的啟動程序的執(zhí)行、以及進(jìn)入操作系統(tǒng)之前的CPU的工作流程。2812的啟動也可以使用上述的流程來分析,下面簡要的介紹下2812的啟動流程。
2021-03-25 15:10:00
22

BootLoader與MCU啟動過程
ARM之Cortex M3的啟動過程目前,多數(shù)MCU廠商都提供一個啟動文件。當(dāng)然,編程者也可以自己編寫啟動文件,具體編寫要求ARM的網(wǎng)站上都有相關(guān)文檔進(jìn)行說明。下面分析一下STM32啟動文件
2021-10-25 16:36:03
10

MCU和SOC啟動過程對比
:電源->Bootloader(引導(dǎo)操作系統(tǒng)啟動)->Linux內(nèi)核->文件系統(tǒng)(根據(jù)功能劃分,如div中是硬件,home是工作目錄,帶訪問權(quán)限)x86Intel 如winsows OS啟動過程:電源 ->BIOS-》windows內(nèi)核-》C、D盤->程序啟動(如Q
2021-10-25 19:21:06
7

嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarder
嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarderBootLoarder是什么Linux操作系統(tǒng)分層BootLoarderBootLoader操作模式BootLoader啟動過程
2021-11-01 17:05:50
8

單片機(jī)的啟動過程
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-17 10:21:03
8

單片機(jī)的啟動過程
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-19 12:06:07
54

stm32啟動過程
一次性搞定stm32啟動模式與啟動過程一、stm32啟動模式二、從flash啟動過程2.1 數(shù)據(jù)在堆棧中存儲方式2.2 stm32的正常啟動過程三、總結(jié)一、stm32啟動模式這三種模式請看下列圖示
2021-12-16 16:57:05
8

STM32啟動過程分析
之后,非常有助于我們理解 STM32 啟動過程中還做了哪些隱藏的工作。關(guān)于詳細(xì)的程序和數(shù)據(jù)存儲分布信息,我們可以從Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的存儲結(jié)構(gòu)STM32 的程序在 Flash 上的存儲結(jié)構(gòu)如下圖所示:棧頂指針 M
2021-12-23 19:55:45
11

從庫函數(shù)看STM32時鐘啟動過程
本文基于ST32F407ZGT6編寫——————————————時鐘系統(tǒng)是單片機(jī)的心臟,單片機(jī)初始化的第一步就是時鐘系統(tǒng)的初始化。本文是基于STM32的庫函數(shù)對時鐘系統(tǒng)啟動過程進(jìn)行分析。啟動過程需要
2022-01-14 15:52:02
0

SpringBoot如何實現(xiàn)啟動過程中執(zhí)行代碼
目前開發(fā)的SpringBoot項目在啟動的時候需要預(yù)加載一些資源。而如何實現(xiàn)啟動過程中執(zhí)行代碼,或啟動成功后執(zhí)行,是有很多種方式可以選擇,我們可以在static代碼塊中實現(xiàn),也可以在構(gòu)造方法里實現(xiàn),也可以使用@PostConstruct注解實現(xiàn)。
2022-06-20 17:32:48
1096

linux內(nèi)核啟動過程會執(zhí)行用戶空間的init進(jìn)程
linux內(nèi)核啟動過程的后期,在kernel_init()函數(shù)代表的init線程中,會嘗試執(zhí)行用戶空間的init進(jìn)程
2022-10-14 09:12:28
711

ATF的啟動過程介紹
ATF的啟動過程根據(jù)ARMv8的運(yùn)行模式(AArch32/AArch64)會有所不同,但基本一致。 在AArch32中是不會去加載bl31而是將EL3或者M(jìn)onitor模式的運(yùn)行代碼保存在bl32
2023-11-07 15:48:31
383


logd的啟動過程和內(nèi)容
logd作為native service,系統(tǒng)啟動過程通過讀取rc文件來啟動,相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動過程 logd啟動后會存在三個用來服務(wù)日志系統(tǒng)
2023-11-23 16:54:44
279


stm32啟動過程詳解
STM32啟動過程詳解 近年來,STM32微控制器在嵌入式系統(tǒng)中的應(yīng)用越來越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢。而要讓STM32微控制器正常工作,首先要
2023-12-08 15:47:03
544

評論