.s文件的解析(AC78406芯片)

文章目录

  • 1.堆栈初始化(1)
  • 2.预留字节,设置指令集架构THUMB
  • 3.RESET区域存储中断向量表
    • 3.1 Reset_Handler中断函数
    • 3.2 NMI_Handler等中断函数
  • 4.堆栈初始化(2)是否使用MICROLIB库

1.堆栈初始化(1)

;堆栈配置大小为0x400
Stack_Size      EQU     0x00000400
;AREA用于声明一个内存区域的开始
;STACK定义内存区域的名称,表示程序的调用堆栈
;NOINIT表示内存区域不会被初始化(有些区域程序启动时可能被清零)
;READWRITE指定了内存区域的访问权限,既可以读也可以写
;ALIGN=3,制定了内存区域的对齐方式,2的3次幂=8字节对齐AREA    STACK, NOINIT, READWRITE, ALIGN=3
;Stack_Mem是一个标签用于标识一个内存位置,用作堆栈起始地址的标签
;SPACE是一个汇编指令,用于在内存中预留一定数量的字节,不初始化这些字节
Stack_Mem       SPACE   Stack_Size
;__initial_sp表示初始化堆栈指针的地址
__initial_sp; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>Heap_Size       EQU     0x00000200AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
;__heap_limit是一个标签,表示内存区域的结束地址
__heap_limit

2.预留字节,设置指令集架构THUMB

;PRESERVE8用于指示编译器保留接下来的8个字节,以确保特定的对齐或填充需求。
;THUMB 是一种用于ARM架构的指令集,它允许使用16位的指令而不是标准的32位PRESERVE8THUMB

3.RESET区域存储中断向量表

实际上就是留好函数的地址,可以指向c语言中重构的相同名称的函数,当触发中断时,直接调用。并且在中断向量表中用DCD指令,定义好名称,留好位置。

; Vector Table Mapped to Address 0 at Reset
;用AREA指令定义RESET区域,用于存储数据(这里指中断向量表),只读
;EXPORT指__Vectors、__Vectors_End、__Vectors_Size,这三个标签是对外可用的AREA    RESET, DATA, READONLYEXPORT  __VectorsEXPORT  __Vectors_EndEXPORT  __Vectors_Size;中断向量表,DCD指令(Define Constant Doubleword)定义一个双字常量(32位)
__Vectors       DCD     __initial_sp               ; Top of StackDCD     Reset_Handler              ; Reset HandlerDCD     NMI_Handler                ; NMI HandlerDCD     HardFault_Handler          ; Hard Fault HandlerDCD     MemManage_Handler          ; MPU Fault HandlerDCD     BusFault_Handler           ; Bus Fault HandlerDCD     UsageFault_Handler         ; Usage Fault HandlerDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     0                          ; ReservedDCD     SVC_Handler                ; SVCall HandlerDCD     DebugMon_Handler           ; Debug Monitor HandlerDCD     0                          ; ReservedDCD     PendSV_Handler             ; PendSV HandlerDCD     SysTick_Handler            ; SysTick Handler;External InterruptsDCD     DMA0_Channel0_IRQHandler            ;DMA channel 0 transfer completeDCD     DMA0_Channel1_IRQHandler            ;DMA channel 1 transfer completeDCD     DMA0_Channel2_IRQHandler            ;DMA channel 2 transfer completeDCD     DMA0_Channel3_IRQHandler            ;DMA channel 3 transfer completeDCD     DMA0_Channel4_IRQHandler            ;DMA channel 4 transfer completeDCD     DMA0_Channel5_IRQHandler            ;DMA channel 5 transfer completeDCD     DMA0_Channel6_IRQHandler            ;DMA channel 6 transfer completeDCD     DMA0_Channel7_IRQHandler            ;DMA channel 7 transfer completeDCD     DMA0_Channel8_IRQHandler            ;DMA channel 8 transfer completeDCD     DMA0_Channel9_IRQHandler            ;DMA channel 9 transfer completeDCD     DMA0_Channel10_IRQHandler           ;DMA channel 10 transfer completeDCD     DMA0_Channel11_IRQHandler           ;DMA channel 11 transfer completeDCD     DMA0_Channel12_IRQHandler           ;DMA channel 12 transfer completeDCD     DMA0_Channel13_IRQHandler           ;DMA channel 13 transfer completeDCD     DMA0_Channel14_IRQHandler           ;DMA channel 14 transfer completeDCD     DMA0_Channel15_IRQHandler           ;DMA channel 15 transfer completeDCD     PORTA_IRQHandler                    ;Port A pin detect interruptDCD     PORTB_IRQHandler                    ;Port B pin detect interruptDCD     PORTC_IRQHandler                    ;Port C pin detect interruptDCD     PORTD_IRQHandler                    ;Port D pin detect interruptDCD     PORTE_IRQHandler                    ;Port E pin detect interruptDCD     UART0_IRQHandler                    ;UART0 Transmit / Receive InterruptDCD     UART1_IRQHandler                    ;UART1 Transmit / Receive InterruptDCD     UART2_IRQHandler                    ;UART2 Transmit / Receive InterruptDCD     UART3_IRQHandler                    ;UART3 Transmit / Receive InterruptDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     SPI0_IRQHandler                     ;SPI0 InterruptDCD     SPI1_IRQHandler                     ;SPI1 InterruptDCD     SPI2_IRQHandler                     ;SPI2 InterruptDCD     0                                   ;ReservedDCD     I2C0_IRQHandler                     ;I2C0 InterruptDCD     0                                   ;ReservedDCD     EIO_IRQHandler                      ;EIO InterruptDCD     CAN0_IRQHandler                     ;CAN0 InterruptDCD     CAN0_Wakeup_IRQHandler              ;CAN0 Wakeup InterruptDCD     CAN1_IRQHandler                     ;CAN1 InterruptDCD     CAN1_Wakeup_IRQHandler              ;CAN1 Wakeup InterruptDCD     CAN2_IRQHandler                     ;CAN2 InterruptDCD     CAN2_Wakeup_IRQHandler              ;CAN2 Wakeup InterruptDCD     CAN3_IRQHandler                     ;CAN3 InterruptDCD     CAN3_Wakeup_IRQHandler              ;CAN3 Wakeup InterruptDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     PDT0_IRQHandler                     ;PDT0 InterruptDCD     PDT1_IRQHandler                     ;PDT1 InterruptDCD     ADC0_IRQHandler                     ;ADC0 InterruptDCD     ADC1_IRQHandler                     ;ADC1 InterruptDCD     ACMP0_IRQHandler                    ;ACMP0 InterruptDCD     WDG_IRQHandler                      ;WDG InterruptDCD     EWDG_IRQHandler                     ;EWDG InterruptDCD     MCM_IRQHandler                      ;MCM InterruptDCD     LVD_IRQHandler                      ;LVD InterruptDCD     SPM_IRQHandler                      ;SPM InterruptDCD     RCM_IRQHandler                      ;RCM InterruptDCD     PWM0_Overflow_IRQHandler            ;PWM0 Overflow InterruptDCD     PWM0_Channel_IRQHandler             ;PWM0 Channel InterruptDCD     PWM0_Fault_IRQHandler               ;PWM0 Fault InterruptDCD     PWM1_Overflow_IRQHandler            ;PWM1 Overflow InterruptDCD     PWM1_Channel_IRQHandler             ;PWM1 Channel InterruptDCD     PWM1_Fault_IRQHandler               ;PWM1 Fault InterruptDCD     PWM2_Overflow_IRQHandler            ;PWM2 Overflow InterruptDCD     PWM2_Channel_IRQHandler             ;PWM2 Channel InterruptDCD     PWM2_Fault_IRQHandler               ;PWM2 Fault InterruptDCD     PWM3_Overflow_IRQHandler            ;PWM3 Overflow InterruptDCD     PWM3_Channel_IRQHandler             ;PWM3 Channel InterruptDCD     PWM3_Fault_IRQHandler               ;PWM3 Fault InterruptDCD     PWM4_Overflow_IRQHandler            ;PWM4 Overflow InterruptDCD     PWM4_Channel_IRQHandler             ;PWM4 Channel InterruptDCD     PWM4_Fault_IRQHandler               ;PWM4 Fault InterruptDCD     PWM5_Overflow_IRQHandler            ;PWM5 Overflow InterruptDCD     PWM5_Channel_IRQHandler             ;PWM5 Channel InterruptDCD     PWM5_Fault_IRQHandler               ;PWM5 Fault InterruptDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     0                                   ;ReservedDCD     RTC_IRQHandler                      ;RTC InterruptDCD     PCT_IRQHandler                      ;PCT InterruptDCD     TIMER_Channel0_IRQHandler           ;TIMER Channel0 InterruptDCD     TIMER_Channel1_IRQHandler           ;TIMER Channel1 InterruptDCD     TIMER_Channel2_IRQHandler           ;TIMER Channel2 InterruptDCD     TIMER_Channel3_IRQHandler           ;TIMER Channel3 InterruptDCD     CSE_IRQHandler                      ;CSE InterruptDCD     FLASH_ECC_IRQHandler                ;Flash ECC InterruptDCD     FLASH_IRQHandler                    ;Flash InterruptDCD     FLASH_Collision_IRQHandler          ;Flash Collision InterruptDCD     ECC_1BIT_IRQHandler                 ;ECC 1BIT InterruptDCD     ECC_2BIT_IRQHandler                 ;ECC 2BIT Interrupt__Vectors_End;两个标签相减,求出大小使用竖线 | 包围 .text 是一种语法,
;通常用于表示这个名称是一个保留字或者是一个有特殊意义的标识符。
;在某些汇编器中,.text 可能是一个保留用于代码存储的区域的默认名称,
;因此使用竖线来确保名称的唯一性和避免与普通标签或常量名称冲突。__Vectors_Size  EQU  __Vectors_End - __VectorsAREA    |.text|, CODE, READONLY

3.1 Reset_Handler中断函数

; Reset handler
;PROC表示一个新的过程或代码块的开始
;CPSID 指令设置优先级掩码,I 参数表示禁用中断。这通常在处理程序开始时执行,以防止在初始化完成之前发生中断。
Reset_Handler    PROCEXPORT  Reset_Handler             [WEAK]CPSID   I              ; Mask interrupts;检查是否定义了 NOT_INIT_SRAM_AFTER_RESET变量,如果定义了,才执行下面的程序IF      :DEF:NOT_INIT_SRAM_AFTER_RESET; Check reset status, if there is any reset except power on and lvr, don't init SRAMLDR     R0, =0x4000001CLDR     R1, [R0]AND     R1, R1, #0x30000CMP     R1, #0x00000
;如果相等,则表示LDR和POR是无效状态,需要跳转到ECC_INIT_END0BEQ     ECC_INIT_END0ENDIF;无条件跳转到 ECC_INIT_END0B ECC_INIT_END0; Init ECC SRAMLDR     R1, =0x1FFF0000LDR     R2, =0x2000F000
;R2=R2-R1SUBS    R2, R1SUBS    R2, #1
;如果上面的结果R2是非正数(<=0),则跳转到ECC_INIT_END0BLE     ECC_INIT_END0
;将立即数0移动到R0寄存器MOVS    R0, #0MOVS    R3, #4
;标签,表示循环的开始
LOOP0STR     R0, [R1]ADD     R1, R1, R3SUBS    R2, #4
;如果 R2 寄存器的值是非负数(即大于或等于零),则跳转到 LOOP0 继续循环。BGE     LOOP0
ECC_INIT_END0IMPORT  SystemInitIMPORT  __mainLDR     R0, =SystemInit
;调用R0指向的函数(SystemInit)BLX     R0IF      :DEF:NOT_INIT_SRAM_AFTER_RESET; Clear reset statusLDR     R0, =0x4000001CLDR     R1, =0x80000000;STR 指令(Store Register)在汇编语言中用于将数据从寄存器存储到内存STR     R1, [R0]ENDIFCPSIE   I              ; Unmask interruptsLDR     R0, =__mainBX      R0ENDP

3.2 NMI_Handler等中断函数

; Dummy Exception Handlers (infinite loops which can be modified)NMI_Handler     PROCEXPORT  NMI_Handler                       [WEAK];B .表示死循环,这里主要是提供一个接口,留一个4字节的程序地址;用WEAK,等待在c语言里调用B       .ENDP
HardFault_Handler\PROCEXPORT  HardFault_Handler                 [WEAK]B       .ENDP
MemManage_Handler\PROCEXPORT  MemManage_Handler                 [WEAK]B       .ENDP
BusFault_Handler\PROCEXPORT  BusFault_Handler                  [WEAK]B       .ENDP
UsageFault_Handler\PROCEXPORT  UsageFault_Handler                [WEAK]B       .ENDP
SVC_Handler     PROCEXPORT  SVC_Handler                       [WEAK]B       .ENDP
DebugMon_Handler\PROCEXPORT  DebugMon_Handler                  [WEAK]B       .ENDP
PendSV_Handler  PROCEXPORT  PendSV_Handler                    [WEAK]B       .ENDP
SysTick_Handler PROCEXPORT  SysTick_Handler                   [WEAK]B       .ENDP;
Default_Handler PROCEXPORT  DMA0_Channel0_IRQHandler          [WEAK]EXPORT  DMA0_Channel1_IRQHandler          [WEAK]EXPORT  DMA0_Channel2_IRQHandler          [WEAK]EXPORT  DMA0_Channel3_IRQHandler          [WEAK]EXPORT  DMA0_Channel4_IRQHandler          [WEAK]EXPORT  DMA0_Channel5_IRQHandler          [WEAK]EXPORT  DMA0_Channel6_IRQHandler          [WEAK]EXPORT  DMA0_Channel7_IRQHandler          [WEAK]EXPORT  DMA0_Channel8_IRQHandler          [WEAK]EXPORT  DMA0_Channel9_IRQHandler          [WEAK]EXPORT  DMA0_Channel10_IRQHandler         [WEAK]EXPORT  DMA0_Channel11_IRQHandler         [WEAK]EXPORT  DMA0_Channel12_IRQHandler         [WEAK]EXPORT  DMA0_Channel13_IRQHandler         [WEAK]EXPORT  DMA0_Channel14_IRQHandler         [WEAK]EXPORT  DMA0_Channel15_IRQHandler         [WEAK]EXPORT  PORTA_IRQHandler                  [WEAK]EXPORT  PORTB_IRQHandler                  [WEAK]EXPORT  PORTC_IRQHandler                  [WEAK]EXPORT  PORTD_IRQHandler                  [WEAK]EXPORT  PORTE_IRQHandler                  [WEAK]EXPORT  UART0_IRQHandler                  [WEAK]EXPORT  UART1_IRQHandler                  [WEAK]EXPORT  UART2_IRQHandler                  [WEAK]EXPORT  UART3_IRQHandler                  [WEAK]EXPORT  SPI0_IRQHandler                   [WEAK]EXPORT  SPI1_IRQHandler                   [WEAK]EXPORT  SPI2_IRQHandler                   [WEAK]EXPORT  I2C0_IRQHandler                   [WEAK]EXPORT  EIO_IRQHandler                    [WEAK]EXPORT  CAN0_IRQHandler                   [WEAK]EXPORT  CAN0_Wakeup_IRQHandler            [WEAK]EXPORT  CAN1_IRQHandler                   [WEAK]EXPORT  CAN1_Wakeup_IRQHandler            [WEAK]EXPORT  CAN2_IRQHandler                   [WEAK]EXPORT  CAN2_Wakeup_IRQHandler            [WEAK]EXPORT  CAN3_IRQHandler                   [WEAK]EXPORT  CAN3_Wakeup_IRQHandler            [WEAK]EXPORT  PDT0_IRQHandler                   [WEAK]EXPORT  PDT1_IRQHandler                   [WEAK]EXPORT  ADC0_IRQHandler                   [WEAK]EXPORT  ADC1_IRQHandler                   [WEAK]EXPORT  ACMP0_IRQHandler                  [WEAK]EXPORT  WDG_IRQHandler                    [WEAK]EXPORT  EWDG_IRQHandler                   [WEAK]EXPORT  MCM_IRQHandler                    [WEAK]EXPORT  LVD_IRQHandler                    [WEAK]EXPORT  SPM_IRQHandler                    [WEAK]EXPORT  RCM_IRQHandler                    [WEAK]EXPORT  PWM0_Overflow_IRQHandler          [WEAK]EXPORT  PWM0_Channel_IRQHandler           [WEAK]EXPORT  PWM0_Fault_IRQHandler             [WEAK]EXPORT  PWM1_Overflow_IRQHandler          [WEAK]EXPORT  PWM1_Channel_IRQHandler           [WEAK]EXPORT  PWM1_Fault_IRQHandler             [WEAK]EXPORT  PWM2_Overflow_IRQHandler          [WEAK]EXPORT  PWM2_Channel_IRQHandler           [WEAK]EXPORT  PWM2_Fault_IRQHandler             [WEAK]EXPORT  PWM3_Overflow_IRQHandler          [WEAK]EXPORT  PWM3_Channel_IRQHandler           [WEAK]EXPORT  PWM3_Fault_IRQHandler             [WEAK]EXPORT  PWM4_Overflow_IRQHandler          [WEAK]EXPORT  PWM4_Channel_IRQHandler           [WEAK]EXPORT  PWM4_Fault_IRQHandler             [WEAK]EXPORT  PWM5_Overflow_IRQHandler          [WEAK]EXPORT  PWM5_Channel_IRQHandler           [WEAK]EXPORT  PWM5_Fault_IRQHandler             [WEAK]EXPORT  RTC_IRQHandler                    [WEAK]EXPORT  PCT_IRQHandler                    [WEAK]EXPORT  TIMER_Channel0_IRQHandler         [WEAK]EXPORT  TIMER_Channel1_IRQHandler         [WEAK]EXPORT  TIMER_Channel2_IRQHandler         [WEAK]EXPORT  TIMER_Channel3_IRQHandler         [WEAK]EXPORT  CSE_IRQHandler                    [WEAK]EXPORT  FLASH_ECC_IRQHandler              [WEAK]EXPORT  FLASH_IRQHandler                  [WEAK]EXPORT  FLASH_Collision_IRQHandler        [WEAK]EXPORT  ECC_1BIT_IRQHandler               [WEAK]EXPORT  ECC_2BIT_IRQHandler               [WEAK]
DMA0_Channel0_IRQHandler
DMA0_Channel1_IRQHandler
DMA0_Channel2_IRQHandler
DMA0_Channel3_IRQHandler
DMA0_Channel4_IRQHandler
DMA0_Channel5_IRQHandler
DMA0_Channel6_IRQHandler
DMA0_Channel7_IRQHandler
DMA0_Channel8_IRQHandler
DMA0_Channel9_IRQHandler
DMA0_Channel10_IRQHandler
DMA0_Channel11_IRQHandler
DMA0_Channel12_IRQHandler
DMA0_Channel13_IRQHandler
DMA0_Channel14_IRQHandler
DMA0_Channel15_IRQHandler
PORTA_IRQHandler
PORTB_IRQHandler
PORTC_IRQHandler
PORTD_IRQHandler
PORTE_IRQHandler
UART0_IRQHandler
UART1_IRQHandler
UART2_IRQHandler
UART3_IRQHandler
SPI0_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
I2C0_IRQHandler
EIO_IRQHandler
CAN0_IRQHandler
CAN0_Wakeup_IRQHandler
CAN1_IRQHandler
CAN1_Wakeup_IRQHandler
CAN2_IRQHandler
CAN2_Wakeup_IRQHandler
CAN3_IRQHandler
CAN3_Wakeup_IRQHandler
PDT0_IRQHandler
PDT1_IRQHandler
ADC0_IRQHandler
ADC1_IRQHandler
ACMP0_IRQHandler
WDG_IRQHandler
EWDG_IRQHandler
MCM_IRQHandler
LVD_IRQHandler
SPM_IRQHandler
RCM_IRQHandler
PWM0_Overflow_IRQHandler
PWM0_Channel_IRQHandler
PWM0_Fault_IRQHandler
PWM1_Overflow_IRQHandler
PWM1_Channel_IRQHandler
PWM1_Fault_IRQHandler
PWM2_Overflow_IRQHandler
PWM2_Channel_IRQHandler
PWM2_Fault_IRQHandler
PWM3_Overflow_IRQHandler
PWM3_Channel_IRQHandler
PWM3_Fault_IRQHandler
PWM4_Overflow_IRQHandler
PWM4_Channel_IRQHandler
PWM4_Fault_IRQHandler
PWM5_Overflow_IRQHandler
PWM5_Channel_IRQHandler
PWM5_Fault_IRQHandler
RTC_IRQHandler
PCT_IRQHandler
TIMER_Channel0_IRQHandler
TIMER_Channel1_IRQHandler
TIMER_Channel2_IRQHandler
TIMER_Channel3_IRQHandler
CSE_IRQHandler
FLASH_ECC_IRQHandler
FLASH_IRQHandler
FLASH_Collision_IRQHandler
ECC_1BIT_IRQHandler
ECC_2BIT_IRQHandlerB       .ENDPALIGN

4.堆栈初始化(2)是否使用MICROLIB库

;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
;文件末尾部分处理了两种内存分配方式:
;使用标准库(__MICROLIB 未定义)和不使用标准库的情况。
;在不使用标准库的情况下,定义了 __user_initial_stackheap 函数,用于初始化堆栈和堆。IF      :DEF:__MICROLIBEXPORT  __initial_spEXPORT  __heap_baseEXPORT  __heap_limitELSEIMPORT  __use_two_region_memoryEXPORT  __user_initial_stackheap__user_initial_stackheapLDR     R0, =  Heap_MemLDR     R1, =(Stack_Mem + Stack_Size)LDR     R2, = (Heap_Mem +  Heap_Size)LDR     R3, = Stack_Mem
;将控制权返回给调用者。在这里,它将返回到调用 BX 指令之前的地址,
;这里是堆栈起始地址Stack_MemBX      LRALIGNENDIFEND;****************END OF FILE******************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vite开启主动暴露在ip地址(开启ip地址访问项目)

0.0.0.0是开启监听所有端口&#xff0c;可以配置成监听暴露指定端口如&#xff1a;10.10.10.54

小山菌_代码随想录算法训练营第三十三天| 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

452. 用最少数量的箭引爆气球 文档讲解&#xff1a;代码随想录.用最少数量的箭引爆气球 视频讲解&#xff1a;贪心算法&#xff0c;判断重叠区间问题 | LeetCode&#xff1a;452.用最少数量的箭引爆气球 状态&#xff1a;已完成 代码实现 class Solution { public:static bool…

Java技术栈总结:数据库MySQL篇

一、慢查询 1、常见情形 聚合查询 多表查询 表数据量过大查询 深度分页查询 2、定位慢查询 方案一、开源工具 调试工具&#xff1a;Arthas运维工具&#xff1a;Prometheus、Skywalking 方案二、MySQL自带慢日志 在MySQL配置文件 /etc/my.conf 中配置&#xff1a; # …

C++01

本专栏记录重读《C primer》的一些随笔&#xff0c;随便写写..... /*标准库的头文件使用<> &#xff0c;非标准库的头文件使用""。申明写在.h文件&#xff0c;定义实现写在.cpp文件 */ #include<iostream> using namespace std; int main() {int v1;st…

Javascript高级程序设计(第四版)--学习记录之集合引用类型(上)

Object 显示的创建Object的实例方法&#xff1a; new操作符和Object构造函数 let person new Object(); person.name Jason; person.age 42 对象字面量 let person { name:Jason, age:42} 存取属性的方法一般有两种&#xff1a;点语法和中括号。 let person { name:Jason,…

智能制造装备业项目数字化管理之多项目管理

在智能制造装备业中&#xff0c;多项目管理已经成为行业发展的核心驱动力。这种管理方式从全局的视角出发&#xff0c;对企业内同时推进的多个项目进行精细化的全生命周期管控。这不仅仅涉及单一项目的管理&#xff0c;还包括项目集和项目组合管理。 根据客户需求&#xff0c;一…

怎么区分Boombap 制作Boombap曲子教学 boombap音乐出现的时间

Boombap音乐作为嘻哈音乐文化的重要组成部分&#xff0c;具有独特的音乐节奏、样式和情感。要理解和区分Boombap音乐&#xff0c;需要从其音乐的历史渊源、音乐特征和文化影响入手。接下来给大家介绍怎么区分Boombap&#xff0c;制作Boombap曲子教学的具体内容。 一、怎么区分B…

c语言常用易错记录

c语言常用易错记录 文章目录 c语言常用易错记录1.for循环 1.for循环 示例&#xff1a; #include <stdio.h>int main() {int i;for (i 0; i < 10; i) {printf("%d\n", i);}return 0; }执行顺序 备注&#xff1a;此图来源于b站鹏哥C语言视频课截图&#xf…

python异常处理2

异常堆栈跟踪 有时需要知道更多异常信息时&#xff0c;可以打印堆栈跟踪信息。堆栈跟踪信息可以通过python内置模块 traceback 提供的 print_exc() 函数实现&#xff0c;print_exc() 函数的语法格式如下&#xff1a; traceback.print_exc(limit None, file None,chain Tru…

mailbox驱动框架设计

文章目录 mailbox 驱动设计一、mailbox控制器/client驱动设计二、编译实例三、测试总结 mailbox 驱动设计 Mailbox&#xff08;邮箱&#xff09;是一种在多核系统中用于处理器间通信的机制。它允许不同的核心或处理器之间发送和接收消息&#xff0c;通常用于协调任务、同步状态…

【学一点儿前端】iOS微信小程序在密码input框中使用系统保存的密码后,密码v-model绑定值不更新的问题

碰到问题 又双叕碰到阴间bug&#xff0c;这回碰到了一生之敌iOS产生的兼容性问题 在iOS11中&#xff0c;支持密码的快速填充。这让iOS用户在微信小程序进行登录的时候&#xff0c;可以把当前账号密码保存进系统密码箱&#xff0c;之后再次登录时&#xff0c;输入账号后点击密码…

【软件工程】【22.04】p2

关键字&#xff1a; 软件开发分本质及涉及问题、需求规约与项目需求不同、用况图概念包含模型元素及其关系、创建系统的用况模型RUP进行活动、软件生存周期&软件生存周期模型&软件项目过程管理关系、CMMI基本思想 模块结构图&#xff1a;作用域、控制域&#xff1b;语…

【Linux命令】top linux下的任务管理器

一、概述 top命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。top是一个动态显示过程&#xff0c;即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令&#xff0c;它将独占前台&#…

kafka 和Zookeeper 集群架构设计对比分析

kafka 和Zookeeper 集群架构设计对比分析 Kafka 和 Zookeeper 是两个关键的分布式系统组件,它们在集群架构设计上有显著的差异。 下面是对它们在集群架构设计方面的对比分析。 1. Kafka 集群架构设计 1.1 基本架构 Kafka 是一个分布式消息系统,由多个 Broker 组成。每个 …

rust 引用了Trait的实现,为什么还需要引入Trait 才能调用实现的方法

文章目录 1. Rust中结构体实现trait与方法调用的关系2. 要调用trait方法,有几种方式:3. code 1. Rust中结构体实现trait与方法调用的关系 在Rust中,当一个结构体实现了某个trait时,不能直接通过结构体调用trait中定义的方法。这是因为: trait方法不是结构体的固有方法。它们是…

文献阅读(307)AccelWattch

题目&#xff1a;AccelWattch: A Power Modeling Framework for Modern GPUs时间&#xff1a;2021会议&#xff1a;MICRO研究机构&#xff1a;西北大学 本篇论文的主要贡献&#xff1a; 提出了一个GPU功耗模型&#xff0c;考虑了DVFS, thread divergence, intra-warp function…

关于PHP中删除JSON指定元素unset和array_splice的区别

1. unset(mixed $var, mixed ...$vars): void unset 不会改变原有索引顺序 ------------------------- 2. array_splice( array &$array, int $offset, ?int $length null, mixed $replacement [] ): array array_splice 删除后&#xff0c;会重新排序…

小程序人脸分析

公司的业务需求是用户在使用某个功能前&#xff0c;必须使用人脸识别&#xff0c;确保当前使用人是用户本人&#xff0c;防止某些功能乱用。后端用的是腾讯的人脸识别方案&#xff0c;这里只是前端的识别代码&#xff0c;保证人脸剧中&#xff0c;大小合适&#xff0c;有一个人…

四十二、 我国粤港澳大湾区个人信息出境标准合同如何签署和备?

《大湾区标准合同》是注册于&#xff08;适用于组织&#xff09;/位于&#xff08;适用于个人&#xff09;粤港澳大湾区内地部分&#xff0c;或者香港特别行政区的个人信息处理者&#xff08;就内地而言&#xff0c;是指在个人信息处理活动中自主决定处理目的、处理方式的组织、…

4418 HMI 更换logo 图片

逻辑说明&#xff1a; HMI 的 kernel 没有提供源码&#xff0c;只是提供了镜像&#xff0c;如果客户需要更换自己的logo 的话&#xff0c; 可以使用提供的工具&#xff0c;将内核logo 打包起来。 我觉得这里的打包的过程应该是参考了&#xff0c; 4418 build_android.sh 脚…