(4) XOS 源码详解: os_s_xxxx.s 汇编代码的 堆栈空间定义,比较简洁的方式

本文详细介绍了STM32启动文件中数据段的栈空间定义,通过示例代码展示了如何在汇编语言中开辟256字节的栈空间,并与传统的分配堆栈方式进行对比。此外,还讲解了STM32的启动流程,包括向量表、Reset_Handler的执行及SystemInit函数的作用,帮助理解STM32底层开发的关键知识点。

;**
;* @brief    数据段
;*
 AREA    StackSpace, DATA                 ; 数据段定义栈空间StackSpace

STM32_MspBot    SPACE    256          ; 从栈底开始开辟256字节作为栈空间 
STM32_MspTop                                    ; 空间到栈顶结束

 


 下面文章讲的比较清晰的传统方式供对比参考:

1.写在前面

首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识

汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。

如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码

2.说明

STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。

虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。

我们拿基于MDK-ARM的启动文件来举例,说一下要点内容

逐行解析一下这些打印XOS#2025/05/28 16:44:15 informational: WMAC_AC: Dis-assocation frame received from station with MAC address 92:aa:0e:84:c5:22 and reason code 3 2025/05/28 16:44:15 informational: WMAC_AC: Sending DEL-STA to AP 1 by CAPWAP with station MAC address 92:aa:0e:84:c5:22 BSSID 6c:ef:c6:65:ab:d1 2025/05/28 16:44:15 notifications: WMAC_AC: [IPC] Sending DELETE-STA to AP by CAPWAP with station MAC 92:aa:0e:84:c5:22. asso seq [0x1000] 2025/05/28 16:44:15 errors : WMAC_AC: Failed to notify L2F to delete sta with MAC address 92:aa:0e:84:c5:22 | vlan 1 | dynamic vlan -1. 2025/05/28 16:44:15 informational: WMAC_AC: STA 92:aa:0e:84:c5:22 - event 2 notification 2025/05/28 16:44:15 informational: WMAC_AC: Unauthorizing port for station 92:aa:0e:84:c5:22. 2025/05/28 16:44:15 informational: WMAC_AC: STA 92:aa:0e:84:c5:22 - MLME-DISASSOCIATE.indication(92:aa:0e:84:c5:22, 3) 2025/05/28 16:44:15 informational: WMAC_AC: Receiving authention frame from station 92:07:d3:da:91:62. 2025/05/28 16:44:15 informational: WMAC_AC: Receiving authention frame from station 92:07:d3:da:91:62 in bssid 6c:ef:c6:65:ab:d7. auth_alg 0, auth_transaction 1 2025/05/28 16:44:15 informational: WMAC_AC: Authentication OK (Open-System) with bssid 6c:ef:c6:65:ab:d7 . 2025/05/28 16:44:15 informational: WMAC_AC: Receiving association request from sta 92:07:d3:da:91:62 in bssid 6c:ef:c6:65:ab:d7 2025/05/28 16:44:15 warnings : WMAC_AC: IEEE 802.11 element parse ignored unknown element (id=191 elen=12) 2025/05/28 16:44:15 informational: WMAC_AC: Station association succeed with AID: 1, SSID: a-wangjian-portal, BSSID: 6c:ef:c6:65:ab:d7. 2025/05/28 16:44:15 informational: WMAC_AC: Vlan 1 station increasing, count 3. 2025/05/28 16:44:15 notifications: WMAC_AC: [IPC] Sending ADD-STATION to AP by CAPWAP with station MAC 92:07:d3:da:91:62, AID 1 and APID 1 RID 2. assoseq [0x1000] 2025/05/28 16:44:15 informational: APM: APM_Cloud_Server_Sendto(line:3313):send sta online 2025/05/28 16:44:15 informational: APM: APM_Cloud_Server_Sendto(line:3319):sta mac:92:07:d3:da:91:62 2025/05/28 16:44:15 informational: APM: APM_Cloud_Server_Sendto(line:3324):AP mac:6c:ef:c6:65:ab:c0 2025/05/28 16:44:15 errors : APM: APM_WmacSocket_Recv_Msg(line:975):!!! RECV MSG WMAC_GET_TRAFFIC_LIMIT, StaMac[92:07:d3:da:91:62] 2025/05/28 16:44:15 errors : APM: APM_SendStaTraffic(line:794):APM_SendStaTraffic uplimit 0, downlimit 0 2025/05/28 16:44:15 debugging : APM: APM_WMAC_SendStaTrafficLimit(line:1059):APM_WMAC_SendStaTrafficLimit success 2025/05/28 16:44:15 informational: APM: APM_DecMsgHead(line:71):MessageType 8 MessageLen 50 2025/05/28 16:44:15 informational: APM: APM_Recv_Pkt_Handle(line:3467):Recv MsgType: STA_AUTH_SUCCESS 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2970):store id :1 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2829):Sta mac:92:07:d3:da:91:62 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2708):AP mac:6c:ef:c6:65:ab:c0 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:3061):usProfileId 2 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2855):STA pass time:586 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:3206):APM Portal username:admin 2025/05/28 16:44:15 informational: APM: APM_RecvPktProcess(line:2509):[EasyPortal] user $MAC:92:7:d3:da:91:62 auth success, pass time is 600 s 2025/05/28 16:44:15 informational: APM: APM_AddUserNode(line:836):APM_AddUserNode:: User Node is exist (mac = 9207.d3da.9162) 2025/05/28 16:44:15 informational: APM: APM_AddUserNode(line:851):Create user Node timer 2025/05/28 16:44:15 errors : APM: APM_SendStaTraffic(line:794):APM_SendStaTraffic uplimit 0, downlimit 0 2025/05/28 16:44:15 debugging : APM: APM_WMAC_SendStaTrafficLimit(line:1059):APM_WMAC_SendStaTrafficLimit success 2025/05/28 16:44:15 informational: APM: APM_DecMsgHead(line:71):MessageType 25 MessageLen 54 2025/05/28 16:44:15 informational: APM: APM_Recv_Pkt_Handle(line:3467):Recv MsgType: User trafic limit 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2970):store id :1 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2829):Sta mac:92:07:d3:da:91:62 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2732):AP input limit:0 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2738):AP output limit:0 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2708):AP mac:6c:ef:c6:65:ab:c0 2025/05/28 16:44:15 debugging : APM: APM_SetStaTraffic(line:2399):STA[92:07:d3:da:91:62] inputlimit 0 outlimit 0 2025/05/28 16:44:15 informational: APM: APM_DecMsgHead(line:71):MessageType 7 MessageLen 53 2025/05/28 16:44:15 informational: APM: APM_Recv_Pkt_Handle(line:3467):Recv MsgType: STA_ONLINE_RESP 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2970):store id :1 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2829):Sta mac:92:07:d3:da:91:62 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2708):AP mac:6c:ef:c6:65:ab:c0 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2843):STA Privilege:0 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:3061):usProfileId 2 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2849):STA Auth Mode:1 2025/05/28 16:44:15 informational: APM: APM_DecPkt_Data(line:2855):STA pass time:600 2025/05/28 16:44:15 informational: APM: APM_RecvPktProcess(line:2500):sta online response 2025/05/28 16:44:15 informational: APM: APM_UpdateUserNode(line:702):APM_AddUserNode:: User Node is exist (mac = 9207.d3da.9162) 2025/05/28 16:44:15 informational: APM: APM_UpdateUserNode(line:752):APM_AddUserNode:: Create user Node timer 2025/05/28 16:44:16 informational: WMAC_AC: STA 92:aa:0e:84:c5:22 - deauthenticated due to inactivity 2025/05/28 16:44:16 informational: WMAC_AC: STA 92:aa:0e:84:c5:22 - MLME-DEAUTHENTICATE.indication(92:aa:0e:84:c5:22, 2) 2025/05/28 16:44:16 informational: WMAC_AC: Trying to free station with MAC address 92:aa:0e:84:c5:22 and BSSID 6c:ef:c6:65:ab:d1. 2025/05/28 16:44:16 informational: WMAC_AC: Vlan 1 station degression, count 2. 2025/05/28 16:44:16 informational: WMAC_AC: Sending DEL-STA to AP 1 by CAPWAP with station MAC address 92:aa:0e:84:c5:22 BSSID 6c:ef:c6:65:ab:d1 2025/05/28 16:44:16 notifications: WMAC_AC: [IPC] Sending DELETE-STA to AP by CAPWAP with station MAC 92:aa:0e:84:c5:22. asso seq [0x1000] 2025/05/28 16:44:16 errors : WMAC_AC: Failed to notify L2F to delete sta with MAC address 92:aa:0e:84:c5:22 | vlan 1 | dynamic vlan -1.
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值