我觉得我的文章相对来说都是比较浅显的。一些初学者可以看看,对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其中的错误。这也是我到这里来和大家交流的目的。
阅读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(206514)
- 硬件模块(6401)
相关推荐
以s3c2440为例的arm芯片的启动过程
本文将以s3c2440为例详细讲述 arm 芯片的启动过程。s3c2440支持两种启动模式:NAND FLASH 启动和非 NAND FLASH 启动(一般是NOR FLASH 启动,并且可以配置数据宽度),通过 OM1、OM0 两个管脚来控制。
2020-12-02 14:13:443154
STM32H7的启动过程分析
本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-10-17 14:42:521494
ARM Cortex-M0 DesignStart系列--4启动过程分析
书接上文《ARM_Cortex-M0 DesignStart系列--3rtl仿真过程的详细分析》,本文基于hello这个case,对Cortex M0的启动过程做一个详细的分析,其实整个ARM Cortex M系列的启动的过程都是很相似的,这对我们理解SoC的启动过程会很有帮助。
2022-11-10 09:05:252121
详解STM32启动过程
本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-11-14 11:24:111580
linux系统是怎么启动的?
每次打开 Linux PC 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 Linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。
2022-12-12 11:50:00674
linux驱动程序的主要流程和功能
介绍Linux驱动程序的主要流程和功能。 一、驱动程序的加载和初始化 Linux系统在启动过程中,会自动加载已安装的设备驱动程序。加载驱动程序的过程一般分为三个阶段,即启动阶段、模块加载阶段和设备注册阶段。 启动阶段:操作系统在启
2023-12-08 14:56:02668
专家揭秘:STM32启动过程全解
电子发烧友网核心提示: 本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍、启动代码的陈列以及深入解析。 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的
2012-09-10 08:50:1752640
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
STM32启动过程
一、STM32 启动过程通过Boot引脚设定,寻找初始地址初始化栈指针 __initial_sp指向复位程序 Reset_Hander设置异常中断 HardFault_Handler设置系统时钟
2021-08-11 06:02:55
STM32F429启动过程详解
第13章 STM32F429启动过程详解本章教程主要跟大家讲STM32F429的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分
2021-08-03 06:15:08
STM32H7启动过程详解
第13章 STM32H7启动过程详解本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。启动过程相对来说还是比较重要的,理解...
2021-08-03 06:41:52
STM32WBA Nucleo-64设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY,为什么?
使用ST官方的STM32WBA Nucleo-64板子,
当设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY;
设置主频为16MHz的时候,可以正常完成初始化。
使用的是CodeMx生成的工程
这是啥原因呢?看手册也没找到原因
2024-03-14 08:28:11
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
一次性搞定stm32启动模式与启动过程
一次性搞定stm32启动模式与启动过程一、stm32启动模式二、从flash启动过程2.1 数据在堆栈中存储方式2.2 stm32的正常启动过程三、总结一、stm32启动模式这三种模式请看下列图示
2022-02-15 06:53:44
单片机的启动过程是怎样的
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
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
求大佬分享关于N32926启动过程
大家好,最近在使用n32926做网络摄像头功能,查阅了一下新塘的SDK发现没有**介绍n32926的详细启动过程。之前用6410都是由uboot来引导linux 内核,现在先想自己实现一个uboot类似功能的bootloader但是由于不了解n32926的启动流程无从下手,请大神们援助。
2023-06-25 06:29:59
玩转Zynq连载1——Zynq的linux启动过程
`玩转Zynq连载1——Zynq的linux启动过程更多资料共享 链接:https://share.weiyun.com/5s6bA0s1概述 简单的,以ug585中的一张图来看,从大的方面说
2019-04-16 06:56:32
讲STM32H7的启动过程
第13章 STM32H7启动过程详解本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。启动过程相对来说还是比较重要的,理解了这个过程,...
2021-08-03 06:15:04
一种基于ARM-Linux的FPGA程序加载方法
本文实现了一种基于ARM-Linux 的FPGA 程序加载方法,详细讨论了加载过程中各个阶段程序对配置管脚的操作,给出了硬件实现,编写了运行于ARM 处理器的嵌入式Linux上的驱动程序。
2009-12-19 16:26:2630
at91rm9200启动过程教程
at91rm9200启动过程教程
系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两
2010-03-08 15:57:1444
系统启动过程
系统启动过程系统启动过程主要由一下几步组成(以硬盘启动为例):1. 开机2. BIOS 加电自检 ( Power On Self Test -- POST ),内存地址为 0ffff:00003. 将硬盘第一个
2009-10-11 12:17:262102
电力系统黑启动过程中发电机失磁保护运行分析
电力系统黑启动过程中特殊的开关操作以及运行方式都会影响到继电保护装置的安全性和可靠性。本文简述了发电机低励、失磁保护的主要原理、并且利用MATLAB 中PSB 及Simulink 的部分元
2011-05-28 10:56:2927
嵌入式uCLinux内核启动过程分析
分析uCLinux的启动过程,可以加快系统启动速度、正确建立应用环境。本文要研究的就是uCLinux操作系统内核的启动过程。
2011-08-15 16:51:42727
IC启动过程及Vcc电压波形的认知
IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知
2015-12-22 14:46:5510
Windows XP 启动过程详解
我们每天都在和 Windows 打交道,很多人可能每天都要面对多次 Windows 的启动过程,可是您知道在 Windows 的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在这些步骤中计算机中发生了什么事情?这些就是本文告诉您的。
2016-11-10 18:24:1511
国产300MW机组中压缸启动的特点及启动过程
机组采用合理启动方式对减小启动过程中的寿命损耗、缩短机组启动时间尤为重要。介绍了国产300 MW机组中压缸启动的特点及启动过程,并提出了中压缸启动存在的一些问题。
2017-10-14 10:40:3018
Linux基础命令之Linux启动过程详解
2.2 Linux启动过程详解 在了解了Linux的常见命令之后,下面详细讲解Linux的启动过程。Linux的启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识
2017-10-18 14:17:062
达芬奇DMSoC硬件部分及Linux OS的启动过程
达芬奇(DaVinci)数字媒体技术平台TMS320DM6446/3采用了ARM+DSP双核的架构,本文从芯片的硬件结构入手介绍达芬奇DMSoC硬件部分及Linux OS的启动过程。 达芬奇
2017-11-06 10:38:140
linux内核无法启动
Linux在启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式、GRUB命令操作、Linux救援模式的典型故障修复案例帮助读者了解此类问题的解决。
2017-11-14 17:26:032601
pxe远程启动过程分析
PXE是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行
2017-11-20 16:25:577444
详解bootloader的执行流程与ARM Linux启动过程分析
RM Linux启动过程分析是本文要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。
本文
2017-12-21 09:24:5310115
openwrt启动过程详细分析
OpenWrt是一个开放的linux平台,主要用于带wifi的无线路由上。类似于Ubuntu、Red Hat、之类的linux发行版本,它也有一套自己的启动流程。本文主要介绍了openwrt启动过程及详细分析。
2017-12-27 09:17:3912397
Linux系统开机和启动过程
分别为iOS操作系统,Android操作系统。而今天小编就给大家着重讲讲Linux系统开机和启动过程。 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核
2018-07-09 11:53:151681
走进Linux之systemd启动过程
Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足
2019-04-27 19:14:002917
Linux 系统启动过程分析
了基本的硬件驱动,在系统安装过程中会检测系统硬件信息,根据安装信息和系统硬件信息将一部分设备驱动写入 initrd 。这样在以后启动系统时,一部分设备驱动就放在initrd中来加载。这里有必要给大家再多
2019-04-02 14:32:33295
Linux开机引导和启动过程详解
。启动阶段接管了剩余工作,直到操作系统进入可操作状态。总体来说,Linux 的开机引导和启动过程是相当容易理解,下文将分节对于不同步骤进行详细说明。BIOS 上电自检(POST)引导装载程序 (GRUB2
2019-04-02 14:46:45353
一文知道MCU上电复位启动过程
MCU上电(复位)时,从固定的地址启动,一般是地址0x00000000,如ARM7;个别特殊的如STM32默认启动地址为0x8000000(flash区启动)。启动过程主要完成两部分工作,一个是硬件执行环境,如中断向量表、寄存器、看门狗等,另一个是软件环境,如C库环境、ZI(未初始化的内存变量)等。
2019-10-08 10:37:1812073
分析STM32的三种上电启动过程
上一篇文章我写了STM32的RAM和Flash,文章最后我建议大家来深入研究一下STM32上电启动过程。同时有小伙伴留言说想让我讲一下IAP(在线升级程序)。其实如果搞懂STM32的上电启动过程,那么IAP就可以信手拈来了。下面我们一起来研究研究。
2020-05-03 18:03:007207
STM32的启动过程是怎么样的?
下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。三种启动模式如下: 从主闪存存储器启动,将主Flash地
2020-11-27 16:36:443309
TMS320F2812的启动过程详细说明
芯片启动过程是芯片上电之后做的事情,几乎是瞬间完成的流程。涉及到了芯片自身硬件启动的过程、固化在芯片中的启动程序的执行、以及进入操作系统之前的CPU的工作流程。2812的启动也可以使用上述的流程来分析,下面简要的介绍下2812的启动流程。
2021-03-25 15:10:0022
BootLoader与MCU启动过程
ARM之Cortex M3的启动过程目前,多数MCU厂商都提供一个启动文件。当然,编程者也可以自己编写启动文件,具体编写要求ARM的网站上都有相关文档进行说明。下面分析一下STM32启动文件
2021-10-25 16:36:0310
MCU和SOC启动过程对比
:电源->Bootloader(引导操作系统启动)->Linux内核->文件系统(根据功能划分,如div中是硬件,home是工作目录,带访问权限)x86Intel 如winsows OS启动过程:电源 ->BIOS-》windows内核-》C、D盘->程序启动(如Q
2021-10-25 19:21:067
嵌入式Linux操作系统引导加载程序BootLoarder
嵌入式Linux操作系统引导加载程序BootLoarderBootLoarder是什么Linux操作系统分层BootLoarderBootLoader操作模式BootLoader启动过程
2021-11-01 17:05:508
单片机的启动过程
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-17 10:21:038
单片机的启动过程
启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-19 12:06:0754
stm32启动过程
一次性搞定stm32启动模式与启动过程一、stm32启动模式二、从flash启动过程2.1 数据在堆栈中存储方式2.2 stm32的正常启动过程三、总结一、stm32启动模式这三种模式请看下列图示
2021-12-16 16:57:058
STM32启动过程分析
之后,非常有助于我们理解 STM32 启动过程中还做了哪些隐藏的工作。关于详细的程序和数据存储分布信息,我们可以从Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的存储结构STM32 的程序在 Flash 上的存储结构如下图所示:栈顶指针 M
2021-12-23 19:55:4511
从库函数看STM32时钟启动过程
本文基于ST32F407ZGT6编写——————————————时钟系统是单片机的心脏,单片机初始化的第一步就是时钟系统的初始化。本文是基于STM32的库函数对时钟系统启动过程进行分析。启动过程需要
2022-01-14 15:52:020
SpringBoot如何实现启动过程中执行代码
目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。
2022-06-20 17:32:481096
linux内核启动过程会执行用户空间的init进程
linux内核启动过程的后期,在kernel_init()函数代表的init线程中,会尝试执行用户空间的init进程
2022-10-14 09:12:28711
ATF的启动过程介绍
ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl32
2023-11-07 15:48:31383
logd的启动过程和内容
logd作为native service,系统启动过程通过读取rc文件来启动,相关的属性定义在如下logd.rc文件中。 2.2.1 logd启动过程 logd启动后会存在三个用来服务日志系统
2023-11-23 16:54:44279
stm32启动过程详解
STM32启动过程详解 近年来,STM32微控制器在嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让STM32微控制器正常工作,首先要
2023-12-08 15:47:03544
评论
查看更多