我觉得我的文章相对来说都是比较浅显的。一些初学者可以看看,对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其中的错误。这也是我到这里来和大家交流的目的。
阅读Linux内核启动代码的直接动力是我想编写RTL8019AS的网卡驱动程序(2.4.18内核只支持了CS8900A)。既然要写驱动,我就想知道它是怎么样被加载的,好奇心驱使我先去搞定这个问题。
拿到2.4.18的软件包,一万多个文件,我不知怎么下手。所幸手头有这么三件工具助我入门:
1,一块移植好linux的开发板,通过它可以看到linux启动过程打印的消息。
2, google,网上关于linux的资料真是太多了!!!
3, Windows文件搜索引擎,通过它可以知道在那些文件中打印出那些消息。
很快,我就找到了linux启动的总的入口,/arch/arm/boot/compressed/head.s。
head.s完成的工作主要是底层寄存器、MMU的一些设定以及kernel的解压缩。汇编文件中调用的C代码大多位于该目录下misc.c文件,比如decompress_kernel。
当然,这部分不是重点,head执行完毕以后就跳到start_kernel(),这才是我们的重点所在,这个函数位于文件/init/main.c中。这个文件是启动的主线!!!
在start_kernel中,依次执行各个初始话函数,这里具体我没有看,一直到最后rest_init(),在这个函数里启动了一个init线程,而主线程自己则进入了IDLE状态。所以我们关心一下init线程做了什么事情,看文件最后init函数。
在这个函数里面,先lock_kernel,然后调用do_basic_setup,在这个函数里面又是一堆的初始化,有一个函数要引起我们的注意:do_initcalls。看看它干了什么:(这之后的东西在下文文件系统中讲解)
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();
}
很难相信,我们关心的外围模块的驱动就是被这一段程序加载的。怎么回事?我们慢慢来看:
首先看__initcall_start和__initcall_end,找遍了所有C代码,没有它们的定义。后来在vmlinux-armv.lds.in文件中找到了它们:
__initcall_start = .;
*(.initcall.init)
__initcall_end = .;
这个文件是和link相关的文件,它决定代码在load环境中的位置,就好比ADS中的scf文件。我们还是先看.initcall.init的含义吧,它在/include/linux/init.h中定义:
#define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))
参考GCC说明,这段话的意思就是说所有以__init_call前缀定义的函数在链接过程中都放到名字为.initcall.init的段(section)里面。OK,有点味道了,也就是说,如果我们给一个函数冠以__init_call,那么它在编译链接的时候就会放到.initcall.init这个段里面。而上面这段循环所做的事情就很清楚了,它从段的首地址开始,依次执行每一个函数,直到段尾为止。
这个时候,我们应该在想,那些要注册的外围模块的初始化程序是不是都是定义成__init_call类型的呢?正如我们所料,查看各个模块我们会发现其初始化函数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)表示函数x是静态的具有__init_call性质的函数(这里名字比较多,容易看乱),因此在链接时,它会被放在.initcall.init段中。只要x函数运行起来了,那就可以注册设备、中断入口、中断服务函数了。接下来的事情就好办了
搞清出设备如何被加载以后,我们还需要知道另外一个问题:怎样把一个模块的驱动程序加载到内核里面呢?SO简单,make menuconfig,把对应设备打开。但是能不能再具体一点呢,我们做这么一个改动,怎么映射到编译&链接过程呢。我这个人就是喜欢找麻烦,因此又在网上搜啊搜,而且用了最笨的方*,看看make menuconfig前后那些文件的修改日期发生了变化。最终还是找到了一点,/scripts下的文件是用来支持各种config模式的(当然包括menuconfig),核心代码在Kconfig中。在每个驱动设备的文件夹下(比如net,mtd)都有一个叫config.in的文件,这些文件定义了我们在menuconfig画面中看到的目录结构&选项。
眼睛看到的画面总归都是虚的,这些改动究竟反映到了哪里去了呢?两个文件:./config和/include/linux/ autoconf.h。我们做完menuconfig以后,所有改动就反映到了这两个文件中,这两个文件的内容是一致的。在我们做编译的过程中,顶层的makefile文件从autoconf.h文件中读取各项宏定义然后传递给子一层的makefile,这些makefile根据宏定义选择那些.o文件被链接进来加到内核中。
好了,知道这些我就知道怎么给8019添加驱动了,yy一下:
1,首先要有驱动程序代码,8019.c
2,修改net目录下的config.in文件中添加一项,
dep_tristate ' RTL8019 support' CONFIG_RTL8019 $CONFIG_ISA
3,打开menuconfig,将RTL8019 support选择y,保存推出后autoconf文件中应该就有了一个宏定义:#define CONFIG_RTL8019
4,打开net目录下的makefile,添加:
obj-$( CONFIG_RTL8019) += 8019.o
5,make dep; make zImage;搞定!
注:在menuconfig中选择m和 y的区别:
y: 模块驱动编译到内核中,启动时自动加载
m:模块会被编译,但是不会被编译到内核中,只是生成.o文件,我们可以收集这些.o文件做到linux的文件系统中,然后用insmod实现动态加载。
Linux启动过程中硬件模块的加载
- Linux(218417)
- 硬件模块(6622)
相关推荐
热点推荐
Linux启动过程中文件系统的加载
我觉得我的文章相对来说都是比较浅显的。一些初学者可以看看,这也是我不在嵌入式那个版上发文的原因。对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其
2011-10-01 00:48:46
2697
2697STM32H7的启动过程分析
本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-10-17 14:42:52
3141
3141详解STM32启动过程
本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-11-14 11:24:11
2326
2326linux内核启动的原理 linux项目的存储方案
例外,也是先将代码加载到内存中,然后从RAM启动,不过它需要U-boot,也就是我们常说的bootloader来引导,将外挂存储介质中的代码拷贝内存RAM中,然后再开始运行,linux启动过程如图1。
2022-11-23 15:51:24
880
880
linux系统是怎么启动的?
每次打开 Linux PC 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 Linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。
2022-12-12 11:50:00
1521
1521linux驱动程序的主要流程和功能
介绍Linux驱动程序的主要流程和功能。 一、驱动程序的加载和初始化 Linux系统在启动过程中,会自动加载已安装的设备驱动程序。加载驱动程序的过程一般分为三个阶段,即启动阶段、模块加载阶段和设备注册阶段。 启动阶段:操作系统在启
2023-12-08 14:56:02
3814
3814专家揭秘:STM32启动过程全解
电子发烧友网核心提示: 本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍、启动代码的陈列以及深入解析。 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的
2012-09-10 08:50:17
53653
53653
Linux启动过程详解
1、Linux 基础安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命
2021-11-02 07:01:06
Linux内核启动过程和Bootloader(总述)
在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本的功能就是为了启动 Linux 内核。2.1 Bootloader的概念和作用 Bootloader是嵌入式系统的引导加载程序,它是
2012-08-18 17:35:24
Linux和Windows系统启动过程的简单分析
AT PPC.....bootloader特性:以命令为基础。一旦引导启动系统后,bootloader就不存在。Linux和Windows启动过程中,基本的原理都差不多,都先加载一个bootloader来初始化硬件设备,为系统运行做好准备;对于硬盘的识别,Windows是以盘来识别,而Linux是采用根文件系统 。最后才是启动一个应用程序。
2017-08-28 11:27:47
DM8127启动过程中M3核死机
hi,你好:DM8127是多核包括A8,两个M3和一个DSP,四个核心。我有几块开发板,其中一块开发板总是在加载M3核的时候程序会死机。问题:1.板子在启动过程中,连续加载两个M3核的时候会出现死机
2020-04-15 09:12:35
PCIe启动过程中C6678程序加载
在DSP上运行的代码量很大,过程繁琐。
请问有没有方法将DSP程序直接在DSP上自启动,不需要通过Host PC发送。我想是否能实现板卡能通过PCIe模式启动时,自动加载flash中的DSP程序??
当然只要有方法能满足 将DSP中的数据通过PCIE传输至Host PC即可!
多谢大家!
2018-06-19 05:08:19
STM32H7启动过程详解
第13章 STM32H7启动过程详解本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。启动过程相对来说还是比较重要的,理解...
2021-08-03 06:41:52
U-Boot启动过程--详细版的完全分析
Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。它主要的功能是加载与引导内核映像 ,具体U-Boot启动过程见附件资料。
2015-12-12 22:50:12
nand板子启动过程中报错如何解决
手里有块nand的板子,最近注意到系统启动过程中报错:[ 2.046495] rtc-rx8010 0-0032: Unable to read registers #32..#32
2022-01-10 06:38:39
uboot启动过程中延时修改
uboot启动过程中延时修改uboot启动过程中如何延时修改,许多人都会有这样的问题,下面来学习一下如何解决这个问题,以下是我的步骤,大家可以借鉴,希望对你们有所帮助哦!平台:sail-imx6系统
2019-11-01 16:29:48
【Intel Edison试用体验】[硬件] 底层硬件探索 and 启动过程分析(小k - NO.02)
是对MCU进行下载程序和调试都得经过Atom处理器。Atom运行的 yocto Linux 是基于RAM运行的,Quark的RTOS是基于ROM运行的。两者有什么区别呢?基于RAM的就是在系统启动过程中
2016-07-25 16:34:27
【OK210试用体验】+ 《uboot启动过程分析》
(DDR);BL2加载内核,把OS在SDRAM中运行起来,最终OS是运行在SDRAM(内存)中的。在这个过程中,u-boot需要初始化的硬件是CPU和DDR,所以,这两个硬件必须在u-boot阶段就做
2015-08-26 21:12:14
【OK210试用体验】+ 《uboot启动过程分析》
的。在这个过程中,u-boot需要初始化的硬件是CPU和DDR,所以,这两个硬件必须在u-boot阶段就做好初始化的工作。操作系统的内核映像一般是存储在 Flash 上的,当 Bootloader 将内核
2015-08-25 12:36:20
【Rico Board试用体验】通过终端输出分析启动程序
:Linux系统开发一般包括以下几个步骤:启动代码uboot,内核 uImage,文件系统,应用程序。这几个部分在系统启动过程中都会在串口终端打印出来。在启动过程中,我分别截了几张图,下面会贴出来
2016-11-20 17:55:09
使用pahomqtt启动过程中pipe_fops_open时出现rt_condvar_timedwait ,如何解决?
在使用pahomqtt 启动过程中pipe_fops_open 时出现rt_condvar_timedwait 死等,而RTT 5.0则可以。请问该如何解决?
2024-09-26 07:11:27
单片机的启动过程是怎样的
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-29 06:47:25
双向可控硅电机启动过程中无法关断 ,帮我看看啥原因
这是电机启动过程的电流波形,我们让导通角先增大,后减小,尝试了很多方法,还是会有大电流。是不是因为电机启动过程中,电流滞后电压角度增大导致的?电机空载启动的时候,电流滞后电压会不会达到上图中的程度?
2017-01-05 15:29:12
在Linux启动过程中, 想将PC13 pin配置为输出/拉起,如何修改设备树?
在 Linux 启动过程中, 我想将 PC13 pin 配置为输出/ 拉起 。 我该如何修改设备树 。
2023-11-13 06:21:04
在imx8qxp处理器启动过程中,CPU1、2、3 无法上线怎么解决?
我在 imx8qxp 处理器启动过程中遇到问题,CPU1、2、3 无法上线。我使用的是 imx-yocto-L5.4.24_2.1.0 版本。问题与scfw的配置有关吗?
2023-03-17 07:55:29
嵌入式Linux系统的构成和启动过程
文章目录一、嵌入式Linux系统构成二、嵌入式Linux系统启动过程在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式
2021-12-16 06:20:24
我如何在启动过程中跳过BAF部分呢?
BAF配置DCF寄存器中的BAF_BYPASS字段是否被用户修改。如果是,我可以在哪个模块下找到它?我无法在 Lauterbach 调试器中找到它。如果不是,我如何在启动过程中跳过 BAF 部分?- 我的设备有预编程的 BAF 区域。谢谢!
2022-12-08 06:50:10
晶闸管控制异步电机软启动过程中振荡现象研究
纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:晶闸管控制异步电机软启动过程中振荡现象研究.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
2025-06-04 14:39:26
玩转Zynq连载1——Zynq的linux启动过程
`玩转Zynq连载1——Zynq的linux启动过程更多资料共享 链接:https://share.weiyun.com/5s6bA0s1概述 简单的,以ug585中的一张图来看,从大的方面说
2019-04-16 06:56:32
罗马尼亚330MW机组起动过程中压缸温度异常变化的分析与防范
罗马尼亚330 MW 机组起动过程中压缸温度异常变化的分析与防范措施
华电蒲城发电有限责任公司2 台罗马尼亚330 MW 机组在起动过程中出现了中压缸温度异常变化情况,分析了缸
2009-02-07 02:21:20
13
13Linux防火墙中模块加载技术的研究与实现
本文对Linux 防火墙内核中Netfilter 系统的结构框架、工作原理及其在内核中的实现机制进行了研究,阐述了Linux 内核可加载模块的机制,并分析了其主要数据结构及它们之间的关系。
2009-06-19 09:59:57
11
11一种基于ARM-Linux的FPGA程序加载方法
本文实现了一种基于ARM-Linux 的FPGA 程序加载方法,详细讨论了加载过程中各个阶段程序对配置管脚的操作,给出了硬件实现,编写了运行于ARM 处理器的嵌入式Linux上的驱动程序。
2009-12-19 16:26:26
31
31at91rm9200启动过程教程
at91rm9200启动过程教程
系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两
2010-03-08 15:57:14
44
44系统启动过程
系统启动过程系统启动过程主要由一下几步组成(以硬盘启动为例):1. 开机2. BIOS 加电自检 ( Power On Self Test -- POST ),内存地址为 0ffff:00003. 将硬盘第一个
2009-10-11 12:17:26
2486
2486Linux系统启动时间优化方案
首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告,较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析
2011-05-13 10:56:50
3203
3203电力系统黑启动过程中发电机失磁保护运行分析
电力系统黑启动过程中特殊的开关操作以及运行方式都会影响到继电保护装置的安全性和可靠性。本文简述了发电机低励、失磁保护的主要原理、并且利用MATLAB 中PSB 及Simulink 的部分元
2011-05-28 10:56:29
27
27嵌入式uCLinux内核启动过程分析
分析uCLinux的启动过程,可以加快系统启动速度、正确建立应用环境。本文要研究的就是uCLinux操作系统内核的启动过程。
2011-08-15 16:51:42
919
919IC启动过程及Vcc电压波形的认知
IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知
2015-12-22 14:46:55
10
10Windows XP 启动过程详解
我们每天都在和 Windows 打交道,很多人可能每天都要面对多次 Windows 的启动过程,可是您知道在 Windows 的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在这些步骤中计算机中发生了什么事情?这些就是本文告诉您的。
2016-11-10 18:24:15
11
11国产300MW机组中压缸启动的特点及启动过程
机组采用合理启动方式对减小启动过程中的寿命损耗、缩短机组启动时间尤为重要。介绍了国产300 MW机组中压缸启动的特点及启动过程,并提出了中压缸启动存在的一些问题。
2017-10-14 10:40:30
18
18Linux基础命令之Linux启动过程详解
2.2 Linux启动过程详解 在了解了Linux的常见命令之后,下面详细讲解Linux的启动过程。Linux的启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识
2017-10-18 14:17:06
2
2达芬奇DMSoC硬件部分及Linux OS的启动过程
达芬奇(DaVinci)数字媒体技术平台TMS320DM6446/3采用了ARM+DSP双核的架构,本文从芯片的硬件结构入手介绍达芬奇DMSoC硬件部分及Linux OS的启动过程。 达芬奇
2017-11-06 10:38:14
0
0linux内核无法启动
Linux在启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式、GRUB命令操作、Linux救援模式的典型故障修复案例帮助读者了解此类问题的解决。
2017-11-14 17:26:03
3463
3463
试述shell的启动过程详情
进程结束后wait函数会返回,从而shell收到通知并回收资源。本文主要说明shell如何启动用户进程,Linux系统中可执行文件格式ELF以及通过execve系统调用启动用户进程的过程。
2017-11-15 11:06:56
4023
4023
pxe远程启动过程分析
PXE是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行
2017-11-20 16:25:57
8206
8206
详解bootloader的执行流程与ARM Linux启动过程分析
RM Linux启动过程分析是本文要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。
本文以
2017-12-21 09:24:53
11201
11201
openwrt启动过程详细分析
OpenWrt是一个开放的linux平台,主要用于带wifi的无线路由上。类似于Ubuntu、Red Hat、之类的linux发行版本,它也有一套自己的启动流程。本文主要介绍了openwrt启动过程及详细分析。
2017-12-27 09:17:39
13579
13579
关于Linux启动过程分析
在引导时,内核需要硬件信息,不仅仅是已编译过的处理器类型。代码中的指令通过单独存储的配置数据进行扩充。有两种主要的数据存储方法:设备树device-tree 和 高级配置和电源接口(ACPI)表。内核通过读取这些文件了解每次启动时需要运行的硬件。
2018-03-14 17:45:34
4305
4305
Linux系统开机和启动过程
分别为iOS操作系统,Android操作系统。而今天小编就给大家着重讲讲Linux系统开机和启动过程。 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核
2018-07-09 11:53:15
2089
2089走进Linux之systemd启动过程
Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足
2019-04-27 19:14:00
3589
3589Linux 系统启动过程分析
了基本的硬件驱动,在系统安装过程中会检测系统硬件信息,根据安装信息和系统硬件信息将一部分设备驱动写入 initrd 。这样在以后启动系统时,一部分设备驱动就放在initrd中来加载。这里有必要给大家再多
2019-04-02 14:32:33
600
600Linux开机引导和启动过程详解
的操作。 BIOS 上电自检(POST)上电自检过程中其实 Linux 没有什么也没做,上电自检主要由硬件的部分来完成,这对于所有操作系统都一样。当电脑接通电源,电脑开始执行 BIOS(基本输入输出系统
2019-04-02 14:46:45
840
840STM32的启动过程是怎么样的?
下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。三种启动模式如下: 从主闪存存储器启动,将主Flash地
2020-11-27 16:36:44
4175
4175
TMS320F2812的启动过程详细说明
芯片启动过程是芯片上电之后做的事情,几乎是瞬间完成的流程。涉及到了芯片自身硬件启动的过程、固化在芯片中的启动程序的执行、以及进入操作系统之前的CPU的工作流程。2812的启动也可以使用上述的流程来分析,下面简要的介绍下2812的启动流程。
2021-03-25 15:10:00
22
22车辆发动机起动过程中的测试方案
。结果表明,高原起动环境、较高的摩托小时和技术状况劣化的喷油器使发动机起动过程中的最低着火转速提髙,平均单缸升速度降低,导致发动机起动性能降低。
2021-06-19 10:56:37
9
9MCU和SOC启动过程对比
:电源->Bootloader(引导操作系统启动)->Linux内核->文件系统(根据功能划分,如div中是硬件,home是工作目录,带访问权限)x86Intel 如winsows OS启动过程:电源 ->BIOS-》windows内核-》C、D盘->程序启动(如Q
2021-10-25 19:21:06
9
9嵌入式Linux操作系统引导加载程序BootLoarder
嵌入式Linux操作系统引导加载程序BootLoarderBootLoarder是什么Linux操作系统分层BootLoarderBootLoader操作模式BootLoader启动过程
2021-11-01 17:05:50
8
8【嵌入式Linux之QEMU模拟器】5、使用u-boot加载Linux内核
在前面的实验中,我们都是直接运行Linux内核。而在实际的嵌入式系统中都是通过BootLoader加载Linux镜像,然后再去运行。嵌入式BootLoader功能类似PC中的BIOS,用以检测硬件
2021-11-02 15:21:03
14
14单片机的启动过程
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-17 10:21:03
8
8单片机的启动过程
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-19 12:06:07
55
55STM32启动过程--启动文件--分析
STM32启动过程--启动文件--分析一、概述1、说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集
2021-11-30 13:21:14
4
4stm32启动过程
一次性搞定stm32启动模式与启动过程一、stm32启动模式二、从flash启动过程2.1 数据在堆栈中存储方式2.2 stm32的正常启动过程三、总结一、stm32启动模式这三种模式请看下列图示
2021-12-16 16:57:05
8
8STM32启动过程分析
之后,非常有助于我们理解 STM32 启动过程中还做了哪些隐藏的工作。关于详细的程序和数据存储分布信息,我们可以从Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的存储结构STM32 的程序在 Flash 上的存储结构如下图所示:栈顶指针 M
2021-12-23 19:55:45
12
12从库函数看STM32时钟启动过程
本文基于ST32F407ZGT6编写——————————————时钟系统是单片机的心脏,单片机初始化的第一步就是时钟系统的初始化。本文是基于STM32的库函数对时钟系统启动过程进行分析。启动过程需要
2022-01-14 15:52:02
0
0BootLoader启动过程的显示策略研究与实现
准备好合适的环境,整个系统的加载启动任务就完全由BootLoader来完成,同时在BootLoader的启动过程还可以实现一些小的功能,比如fastboor、存储设置等,所以它对于嵌入式操作系统来说是非常重要的,因此,对它的运行状态的检测与判断就特别重要。
2022-04-02 17:14:45
1
1SpringBoot如何实现启动过程中执行代码
目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。
2022-06-20 17:32:48
2036
2036linux内核启动过程会执行用户空间的init进程
linux内核启动过程的后期,在kernel_init()函数代表的init线程中,会尝试执行用户空间的init进程
2022-10-14 09:12:28
1784
1784分析ARM Cortex-M内核复位启动过程
ARM Cortex-M内核的复位启动过程也被称为复位序列(Reset sequence),下面就来简要总结分析下这一过程。
2023-03-20 09:58:43
3665
3665ATF的启动过程介绍
ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl32中
2023-11-07 15:48:31
2411
2411
logd的启动过程和内容
logd作为native service,系统启动过程通过读取rc文件来启动,相关的属性定义在如下logd.rc文件中。 2.2.1 logd启动过程 logd启动后会存在三个用来服务日志系统
2023-11-23 16:54:44
1791
1791
stm32启动过程详解
STM32启动过程详解 近年来,STM32微控制器在嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让STM32微控制器正常工作,首先要了解它
2023-12-08 15:47:03
2816
2816linux驱动程序如何加载进内核
,需要了解Linux内核的基本概念和API。以下是一些关键概念: 1.1 内核模块:Linux内核模块是一种动态加载和卸载的代码,可以在不重新启动系统的情况下加载和卸载。驱动程序通常以内核模块的形式实现。 1.2 设备模型:Linux内核使用设备模型来管理设
2024-08-30 15:02:19
1661
1661
电子发烧友App




评论