我覺(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è)文件,我不知怎么下手。所幸手頭有這么三件工具助我入門(mén):?
?????? 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類(lèi)型的呢?正如我們所料,查看各個(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(206514)
- 硬件模塊(6401)
相關(guān)推薦
以s3c2440為例的arm芯片的啟動(dòng)過(guò)程
本文將以s3c2440為例詳細(xì)講述 arm 芯片的啟動(dòng)過(guò)程。s3c2440支持兩種啟動(dòng)模式:NAND FLASH 啟動(dòng)和非 NAND FLASH 啟動(dòng)(一般是NOR FLASH 啟動(dòng),并且可以配置數(shù)據(jù)寬度),通過(guò) OM1、OM0 兩個(gè)管腳來(lái)控制。
2020-12-02 14:13:44
3154


STM32H7的啟動(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
1494

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


詳解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
1580

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
674

linux驅(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
668

專(zhuān)家揭秘: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
52640


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
STM32啟動(dòng)過(guò)程
一、STM32 啟動(dòng)過(guò)程通過(guò)Boot引腳設(shè)定,尋找初始地址初始化棧指針 __initial_sp指向復(fù)位程序 Reset_Hander設(shè)置異常中斷 HardFault_Handler設(shè)置系統(tǒng)時(shí)鐘
2021-08-11 06:02:55
STM32F429啟動(dòng)過(guò)程詳解
第13章 STM32F429啟動(dòng)過(guò)程詳解本章教程主要跟大家講STM32F429的啟動(dòng)過(guò)程,這里的啟動(dòng)過(guò)程是指從CPU上電復(fù)位執(zhí)行第1條指令開(kāi)始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分
2021-08-03 06:15:08
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
STM32WBA Nucleo-64設(shè)置主頻為100M,發(fā)現(xiàn)啟動(dòng)過(guò)程中卡死在PWR_VOSR_VOSRDY,為什么?
使用ST官方的STM32WBA Nucleo-64板子,
當(dāng)設(shè)置主頻為100M,發(fā)現(xiàn)啟動(dòng)過(guò)程中卡死在PWR_VOSR_VOSRDY;
設(shè)置主頻為16MHz的時(shí)候,可以正常完成初始化。
使用的是CodeMx生成的工程
這是啥原因呢?看手冊(cè)也沒(méi)找到原因
2024-03-14 08:28:11
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
android--系統(tǒng)啟動(dòng)--init進(jìn)程啟動(dòng)過(guò)程如何
android--系統(tǒng)啟動(dòng)--init進(jìn)程啟動(dòng)過(guò)程
2020-05-29 10:35:36
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
一次性搞定stm32啟動(dòng)模式與啟動(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)看下列圖示
2022-02-15 06:53:44
單片機(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ò)程在我們的周?chē)?,大量的嵌入式設(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
求大佬分享關(guān)于N32926啟動(dòng)過(guò)程
大家好,最近在使用n32926做網(wǎng)絡(luò)攝像頭功能,查閱了一下新塘的SDK發(fā)現(xiàn)沒(méi)有**介紹n32926的詳細(xì)啟動(dòng)過(guò)程。之前用6410都是由uboot來(lái)引導(dǎo)linux 內(nèi)核,現(xiàn)在先想自己實(shí)現(xiàn)一個(gè)uboot類(lèi)似功能的bootloader但是由于不了解n32926的啟動(dòng)流程無(wú)從下手,請(qǐng)大神們?cè)?/div>
2023-06-25 06:29:59
玩轉(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
講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ō)還是比較重要的,理解了這個(gè)過(guò)程,...
2021-08-03 06:15:04
運(yùn)行伺服時(shí)模組移動(dòng)過(guò)程中聲音很大的原因是什么?怎么解決?
運(yùn)行伺服時(shí)模組移動(dòng)過(guò)程中聲音很大的原因是什么?怎么解決?
2021-10-08 08:45:39
一種基于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
30

at91rm9200啟動(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

系統(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
2102

電力系統(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

嵌入式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
727

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)知IC啟動(dòng)過(guò)程及Vcc電壓波形的認(rèn)知
2015-12-22 14:46:55
10

Windows 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

國(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

Linux基礎(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

達(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

嵌入式系統(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

達(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

linux內(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ù)案例幫助讀者了解此類(lèi)問(wèn)題的解決。
2017-11-14 17:26:03
2601


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
7444


詳解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
10115


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


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
1681

走進(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)程(也被稱(chēng)為SysV init啟動(dòng)系統(tǒng))處理,而基于init的啟動(dòng)系統(tǒng)被認(rèn)為有效率不足
2019-04-27 19:14:00
2917

Linux 系統(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
295

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

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

電源模塊在通電后可能難以啟動(dòng)的原因分析
首先是破壞性較小的情況?!娫?b class="flag-6" style="color: red">模塊在啟動(dòng)過(guò)程中難以啟動(dòng),甚至無(wú)法啟動(dòng)。
2020-03-08 11:11:00
3016

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

STM32的啟動(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
3309


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

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

MCU和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
7

嵌入式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

單片機(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

單片機(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
54

stm32啟動(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

STM32啟動(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
11

從庫(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

SpringBoot如何實(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
1096

linux內(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
711

ESP32學(xué)習(xí)筆記:存儲(chǔ)分布和啟動(dòng)過(guò)程
今天我們來(lái)說(shuō)說(shuō)ESP32 for Arduino存儲(chǔ)分布以及啟動(dòng)過(guò)程。
2023-07-14 15:10:38
1407


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
383


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
279


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
544

評(píng)論