Zephyr OS 汇编阶段是怎样的
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关Zephyr OS 汇编阶段是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Zephyr OS 内核篇:系统启动 -
千家信息网最后更新 2026年11月02日Zephyr OS 汇编阶段是怎样的
今天就跟大家聊聊有关Zephyr OS 汇编阶段是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
Zephyr OS 内核篇:系统启动 - 汇编阶段
汇编阶段
/* * Copyright (c) 2013-2014 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 *//** * @file * @brief Reset handler * * Reset handler that prepares the system for running C code. */#include#include #include #include #include #include "vector_table.h"_ASM_FILE_PROLOGUEGTEXT(__reset)GTEXT(memset)GDATA(_interrupt_stack)/** * * @brief Reset vector * * Ran when the system comes out of reset. The processor is in thread mode with * privileged level. At this point, the main stack pointer (MSP) is already * pointing to a valid area in SRAM. * * Locking interrupts prevents anything but NMIs and hard faults from * interrupting the CPU. A default NMI handler is already in place in the * vector table, and the boot code should not generate hard fault, or we're in * deep trouble. * * We want to use the process stack pointer (PSP) instead of the MSP, since the * MSP is to be set up to point to the one-and-only interrupt stack during later * boot. That would not be possible if in use for running C code. * * When these steps are completed, jump to _PrepC(), which will finish setting * up the system for running C code. * * @return N/A */SECTION_SUBSEC_FUNC(TEXT,_reset_section,__reset)/* * The entry point is located at the __reset symbol, which * is fetched by a XIP image playing the role of a bootloader, which jumps to * it, not through the reset vector mechanism. Such bootloaders might want to * search for a __start symbol instead, so create that alias here. */SECTION_SUBSEC_FUNC(TEXT,_reset_section,__start) /* lock interrupts: will get unlocked when switch to main task */#if defined(CONFIG_ARMV6_M) cpsid i#elif defined(CONFIG_ARMV7_M) /** 直接将中断优先级 _EXC_IRQ_DEFAULT_PRIO 写入中断屏蔽寄存器 BASEPRI 所有优先级高于 _EXC_IRQ_DEFAULT_PRIO 的中断都会被屏蔽 */ movs.n r0, #_EXC_IRQ_DEFAULT_PRIO msr BASEPRI, r0#else#error Unknown ARM architecture#endif /* CONFIG_ARMV6_M */#ifdef CONFIG_WDOG_INIT /* board-specific watchdog initialization is necessary */ bl _WdogInit#endif#ifdef CONFIG_INIT_STACKS /** 初始化中断栈空间,在汇编里面使用寄存器传递参数, r0 对应于 memset 的第一个参数 r1 对应于 memset 的第二个参数 r2 对应于 memset 的第三个参数 注意到,栈空间的初始化值是 0xaa,而不是 0x0。用于堆栈溢出检测 */ ldr r0, =_interrupt_stack ldr r1, =0xaa ldr r2, =CONFIG_ISR_STACK_SIZE bl memset#endif /* * Set PSP and use it to boot without using MSP, so that it * gets set to _interrupt_stack during nanoInit(). */ ldr r0, =_interrupt_stack ldr r1, =CONFIG_ISR_STACK_SIZE adds r0, r0, r1 msr PSP, r0 movs.n r0, #2 /* switch to using PSP (bit1 of CONTROL reg) */ msr CONTROL, r0 b _PrepC#if defined(CONFIG_SOC_TI_LM3S6965_QEMU)GTEXT(_do_software_reboot)SECTION_FUNC(TEXT,_do_software_reboot) eors r0, r0 /* move exception table back to 0 */ ldr r1, =0xe000e000 str r0, [r1, #0xd08] /* VTOR */ ldr r0, [r0, #4] bx r0GTEXT(_force_exit_one_nested_irq)SECTION_FUNC(TEXT,_force_exit_one_nested_irq) ldr r0, =_SCS_ICSR_RETTOBASE ldr r1, =_SCS_ICSR ldr r1, [r1] ands.w r0, r1 /* * If Z flag is set, we are nested, so un-nest one level and get back to * this function to unwind the next level; else, exit the last interrupt * by jumping to reboot code. */ ittee eq ldreq lr, =0xfffffff1 ldreq r2, =_force_exit_one_nested_irq ldrne lr, =0xfffffffd ldrne r2, =_do_software_reboot ldr ip, =_interrupt_stack add.w ip, #(___esf_t_SIZEOF * 2) /* enough for a stack frame */ ldr r1, =0xfffffffe and.w r2, r1 str r2, [ip, #(6 * 4)] ldr r2, =0x01000000 str r2, [ip, #(7 * 4)] ite eq moveq sp, ip msrne PSP, ip bx lr#endif
看完上述内容,你们对Zephyr OS 汇编阶段是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
阶段
参数
内容
优先级
寄存器
空间
三个
内核
堆栈
更多
知识
篇文章
系统
行业
资讯
资讯频道
频道
进一
支持
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网是第几次科技革命的成果
科技互联网政务服务
互联网为科技
科技类互联网
与互联网科技公司
互联网科技金融公司
平安科技 互联网
互联网科技股票
善班互联网科技有限公司
汇久创客互联网科技
隆华科技工业互联网
昭通互联网科技选哪家
洛阳昕诺飞互联网科技有限公司
电子商务与互联网科技的关系
互联网科技融合创新
卡尔迅互联网科技有限公司
容联科技互联网电商
互联网时代高科技布局
悟空问答互联网科技
新华互联网科技
互联网科技深圳
互联网医疗科技
融贸通互联网科技
中盈科技互联网信息有限公司
重庆威客帮互联网科技
河南猎农互联网科技有限公司
互联网金融科技公司的优势
容联科技互联网电商
唯美互联网科技