单片机启动文件.s有什么作用?

嵌入式资讯精选 2022-05-09 11:44


作者:老马识途单片机

在我们使用kei c51创建一个51单片机项目时,会有如下图所示的提示:


keil创建新项目时,提示是否添加启动文件


一般情况下,需要选择“是”。当然,也可以选择不加。那么,这个启动文件的作用是什么?什么情况下需要加,什么情况下可以不加?


今天我们就来详细了解一下这个启动文件的内容,看明白这个内容后,我们就会有种恍然大悟的感觉:“哦,原来是这样啊!”


启动代码第一段


▼以下是启动代码原文第一段:


$NOMOD51;------------------------------------------------------------------------------;  This file is part of the C51 Compiler package;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.;  Version 8.01;;  *** <<< Use Configuration Wizard in Context Menu >>> ***;------------------------------------------------------------------------------;  STARTUP.A51:  This code is executed after processor reset.;;  To translate this file use A51 with the following invocation:;;     A51 STARTUP.A51;;  To link the modified STARTUP.OBJ file to your application use the following;  Lx51 invocation:;;     Lx51 your object file list, STARTUP.OBJ  controls;;------------------------------------------------------------------------------;;  User-defined  Power-On Initialization of Memory;;  With the following EQU statements the initialization of memory;  at processor reset can be defined:;;  IDATALEN: IDATA memory size <0x0-0x100>;      Note: The absolute start-address of IDATA memory is always 0;            The IDATA space overlaps physically the DATA and BIT areas.IDATALEN        EQU     80H;;  XDATASTART: XDATA memory start address <0x0-0xFFFF> ;      The absolute start address of XDATA memoryXDATASTART      EQU     0     ;;  XDATALEN: XDATA memory size <0x0-0xFFFF> ;      The length of XDATA memory in bytes.XDATALEN        EQU     0      ;;  PDATASTART: PDATA memory start address <0x0-0xFFFF> ;      The absolute start address of PDATA memoryPDATASTART      EQU     0H;;  PDATALEN: PDATA memory size <0x0-0xFF> ;      The length of PDATA memory in bytes.PDATALEN        EQU     0H;;


以下是启动代码第一段的翻译:


不使用预先定义的SFR。就是告诉汇编器不使用预定义的寄存器名,因为汇编器内部定义了51的寄存器名,但在实际使用时会用51的扩展芯片例如52之类的,如果包含了52的头文件就会出现重复定义所以要先声明一下不适用汇编器内部定义的寄存器名。


这个文件是C51编译器包的一部分


版权所有(c) 1988-2005 Keil Elektronik GmbH和Keil Software, Inc。


版本8.01


*** <<使用上下文菜单中的配置向导>>> ***


----------------------------------------------------


STARTUP.A51里面的代码在处理器复位后执行


用下面的命令行语句调用A51进行编译产生目标文件,

A51 STARTUP.A51


用下面的命令行语句调用BL51连接器把STARTUP.OBJ目标文件连接到程序代码中,

Lx51 invocation:


Lx51调用


---------------------------------------------------


Lx51 调用目标文件列表, 由STARTUP.OBJ 目标文件控制


用户自定义上电后需要初始化的储存区域(初始化RAM区的数据)


在处理器复位时通过下列EQU伪指令来初始化内存(RAM单元)


IDATALEN:IDATA存储区的大小<0-256>,可以根据自己的选择修改


IDATA绝对的起始地址总是0


IDATA区涵盖DATA和BIT区(DATA区(直接寻址区)以及 BIT区 (位寻址区)),;至少要保证与C51编译器运行库有关的存储器的空间进行0初始化


XDATA存储区的起始地址<0x0-0xFFFF>


XDATA内存的绝对起始地址。


XDATA存储器空间的绝对起始地址为0,


XDATA空间的大小


XDATA空间的长度以字节为单位


说明xdata的字节数清0,该值默认为0


PDATA空间的大小


PDATA存储器的空间的绝对起始地址


需用0进行初始化的PDATA存储器的空间字节数


在51系列中data、idata、xdata、pdata的区别:

  • data:固定指前面0x00-0x7f的128个RAM。

  • idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

  • xdata:外部扩展RAM,一般指外部0x0000-0xffff空间。

  • pdata:外部扩展RAM的低256个字节。



需用0进行初始化的IDATA存储器空间的字节数,IDATALEN只是一个标号(与IDATA不一样哦),EQU只是做宏一样的替换,类似于C语言中的#define uint (unsigned int),以上的代码使得程序以后在碰到IDATALEN时替换成80H。


IDATALEN可以定义为你自己喜欢的名字如MyDataLen等。之所以用IDATALEN,一是为了好记,二是为了表明和IDATA有关。


各种常数名及其含义


启动代码第二段


我们继续来看看51单片机的启动代码里面都有哪些东西。


下面先列出51单片机启动代码第二部分的原文:


;------------------------------------------------------------------------------;; Reentrant Stack Initialization;;  The following EQU statements define the stack pointer for reentrant;  functions and initialized it:;;  Stack Space for reentrant functions in the SMALL model.;   IBPSTACK: Enable SMALL model reentrant stack;      Stack space for reentrant functions in the SMALL model.IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.;   IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>;      Set the top of the stack to the highest location.IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  ; ;;  Stack Space for reentrant functions in the LARGE model.      ;   XBPSTACK: Enable LARGE model reentrant stack;      Stack space for reentrant functions in the LARGE model.XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.;   XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>;      Set the top of the stack to the highest location.XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1 ; ;;  Stack Space for reentrant functions in the COMPACT model.    ;   PBPSTACK: Enable COMPACT model reentrant stack;      Stack space for reentrant functions in the COMPACT model.PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.;;    PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>;      Set the top of the stack to the highest location.PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  ; ;


原文全是伪指令、宏定义这些东东,看起来确实很头疼啊。我们简单的翻译一下吧。


以下是第二段启动代码翻译:


再入函数模拟初始化;


以下用EQU指令定义了再入函数模拟堆栈指针的初始化;


使用SMALL存储器模式时再入函数的堆栈空间;


IBPSTACK EQU 0 ; 使用SMALL存储器模式再入函数时将其设置成1;


IBPSTACKTOP EQU 0FFH+1 ; 将堆栈顶设置为最高地址+1;


使用LARGE存储器模式时再入函数的堆栈空间;


XBPSTACK EQU 0 ; 使用LARGE存储器模式再入函数时将其设置成1;


XBPSTACKTOP EQU 0FFFFH+1; 将堆栈顶设置为最高地址+1;


使用COMPACT存储器模式时再入函数的堆栈空间;


PBPSTACK EQU 0 ; 使用COMPACT存储器模式再入函数时将其设置成1;


PBPSTACKTOP EQU 0FFFFH+1; 将堆栈顶设置为最高地址+1。


三种模式解析


这里提到了SMALL,LARGE,COMPACT三种模式。这三种模式究竟有什么含义呢?我们下面就来了解一下。


不同内存模式下的堆栈。Keil 编译器中有三种模式设置。这是由51处理器繁多的寻址模式导致的,不同的寻址模式有不同的效率。


small模式:在small模式中,所有默认变量均装入单片机内部的RAM中,51单片机默认内部RAM只有128B;52单片机默认256B。该模式下的优点是访问速度快,缺点是空间有限。


compact模式:在compact模式中,所有默认变量均位于单片机的256B RAM中,和在small模式中使用关键字 pdata来定义数据变量的效果一样,在该模式下程序总变量空间不能超过256B。


large模式:在large模式中,所有默认变量可放在多达64KB的RAM中,包括内部RAM和外部RAM,这和使用关键字xdata 来定义变量的效果一样。


  • small:变量存储在内部ram里。

  • compact:变量存储在外部ram里,使用页8位间接寻址。

  • large:变量存储在外部Ram里,使用16位间接寻址。


我们一般使用small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去。


compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快。如果超过256字节,那么要不断地进行切换的话,就比较麻烦。compact模式适用于比较少的外部ram的情况。


large模式,是指变量会优先分配到外部ram里。


3种存储方式都支持内部256字节和外部64k字节的ram。区别是变量的优先(或默认)存储在哪里的区别。除非你不想把变量存储在内部ram,才使用后面的compact、large模式。因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式。

1.中国芯片替代方案公司名单公布(70个类别)

2.为什么原理图总画不好?这些技巧要知道

3.嵌入式设备如何显示IP属地?

4.RISC-V面向MCU/MPU、RTOS,但面临挑战。。。

5.单片机固件自更新的一个方法!

6.玄铁杯RISC-V应用创新大赛正式开赛,现开放报名!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。


嵌入式资讯精选 掌握最鲜资讯,尽领行业新风
评论 (0)
  •   电磁兼容(EMC)故障诊断系统软件解析   北京华盛恒辉电磁兼容故障诊断系统软件是攻克电子设备电磁干扰难题的专业利器。在电子设备复杂度攀升、电磁兼容问题频发的背景下,该软件于研发、测试、生产全流程中占据关键地位。以下为其详细介绍:   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。   一、软件核心功能   干扰与敏感分析:深度剖析电磁干
    华盛恒辉l58ll334744 2025-04-22 14:53 99浏览
  •   卫星通信效能评估系统平台全面解析   北京华盛恒辉卫星通信效能评估系统平台是衡量卫星通信系统性能、优化资源配置、保障通信服务质量的关键技术工具。随着卫星通信技术的快速发展,特别是低轨卫星星座、高通量卫星和软件定义卫星的广泛应用,效能评估系统平台的重要性日益凸显。以下从技术架构、评估指标、关键技术、应用场景及发展趋势五个维度进行全面解析。   应用案例   目前,已有多个卫星通信效能评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润卫星通信效能评估系统。这些成功案例为卫
    华盛恒辉l58ll334744 2025-04-22 16:34 87浏览
  •   北京华盛恒辉基于GIS的电磁态势可视化系统软件是将地理空间信息与电磁态势数据相结合,通过图形化手段直观展示电磁环境态势的系统。这类软件在军事、通信、无线电管理等领域具有广泛应用,能够辅助用户进行电磁频谱分析、干扰监测、态势研判和决策支持。以下是关于此类系统的详细介绍:   应用案例   目前,已有多个电磁态势可视化系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁态势可视化系统。这些成功案例为电磁态势可视化系统的推广和应用提供了有力支持。   一、系统功能   电磁
    华盛恒辉l58ll334744 2025-04-22 11:44 83浏览
  • 4 月 19 日,“增长无界・智领未来” 第十六届牛商大会暨电子商务十大牛商成果报告会在深圳凤凰大厦盛大举行。河南业之峰科技股份有限公司总经理段利强——誉峰变频器强哥凭借在变频器领域的卓越成就,荣膺第十六届电子商务十大牛商,携誉峰变频器品牌惊艳亮相,以十几年如一日的深耕与创新,书写着行业传奇。图 1:誉峰变频器强哥在牛商大会领奖现场,荣耀时刻定格牛商大会现场,誉峰变频器强哥接受了多家媒体的专访。面对镜头,他从容分享了自己在变频器行业二十年的奋斗历程与心路感悟。谈及全域营销战略的成功,誉峰变频器强
    电子与消费 2025-04-22 13:22 110浏览
  •   北京华盛恒辉机场保障能力评估系统软件深度解析   在航空运输业快速发展的背景下,机场保障任务愈发复杂,传统人工评估方式已无法满足高效精准的管理需求。机场保障能力评估系统软件作为提升机场运行效率、保障飞行安全的关键工具,其重要性日益凸显。   应用案例   目前,已有多个机场保障能力评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润机场保障能力评估系统。这些成功案例为机场保障能力评估系统的推广和应用提供了有力支持。   一、系统功能模块   数据采集与整合模块  
    华盛恒辉l58ll334744 2025-04-22 10:28 107浏览
  • 引言:工业安全与智能化需求的双重驱动在工业安全、环境保护及家庭安防领域,气体泄漏引发的安全事故始终是重大隐患。随着传感器技术、物联网及语音交互的快速发展,气体检测报警器正朝着智能化、低成本、高可靠的方向演进。WT588F02B-8S语音芯片,以“离在线语音更换+多协议通信”为核心优势,为气体检测报警器提供了一套高效、灵活的低成本语音解决方案,助力开发者快速响应市场需求。产品功能与市场需求1. 核心功能:从监测到预警的全流程覆盖实时气体监测:支持一氧化碳、臭氧、硫化氢等多种气体浓度检测,精度可达p
    广州唯创电子 2025-04-22 09:14 78浏览
  • 在消费金融的赛道上,马上消费曾是备受瞩目的明星企业。自2015年成立以来,它以年均 30% 的净利润增速一路狂奔,成为持牌消费金融公司的标杆,2023年更是斩获19.82亿元净利润,风光无限。然而,2024年却成了马上消费的一道分水岭。2024年上半年,其营收为77.38亿元,同比下降2.11%;净利润更是同比骤降20.66%,仅为10.68亿元,创下历史最大跌幅 。与此同时,不良贷款率攀升至2.5%,不良余额高达16.54亿元,核心资本充足率降至12.72%,融资
    用户1742991715177 2025-04-21 21:29 110浏览
  • 在汽车行业的变革浪潮中,智界汽车的诞生备受瞩目。作为华为与奇瑞两大巨头携手合作的结晶,智界汽车自孕育之初便承载着众人的期待,被视为融合前沿科技与卓越制造的典范,有望在竞争激烈的新能源汽车市场中开辟出一片新天地。2024年,智界品牌首款车型智界S7正式上市,凭借华为的技术赋能,如先进的鸿蒙智能座舱、强大的HUAWEI ADS高阶智能驾驶辅助系统,以及奇瑞多年积累的深厚造车底蕴,在上市前赚足了眼球。智界S7的亮相,犹如一颗投入平静湖面的石子,激起了层层涟漪,消费者对其充满了好奇与期待,行业内也纷纷将
    用户1742991715177 2025-04-21 20:28 82浏览
  •   有效数据智能分拣系统详解   北京华盛恒辉有效数据智能分拣系统融合人工智能、大数据分析与机器学习等前沿技术,实现海量数据自动化分类、筛选、整理及分配。凭借强大的数据处理效能,助力企业精准提取关键信息,优化决策流程,提升运营效率。以下从系统架构、核心功能、技术特性、应用场景及发展趋势展开解读。   应用案例   目前,已有多个有效数据智能分拣系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润有效数据智能分拣系统。这些成功案例为有效数据智能分拣系统的推广和应用提供了有力支持。
    华盛恒辉l58ll334744 2025-04-21 16:46 120浏览
  •   电磁兼容故障诊断系统平台深度解析   北京华盛恒辉电磁兼容(EMC)故障诊断系统平台是解决电子设备在复杂电磁环境下性能异常的核心工具。随着电子设备集成度提升与电磁环境复杂化,EMC 问题直接影响设备可靠性与安全性。以下从平台架构、核心功能、技术实现、应用场景及发展趋势展开全面剖析。   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。  
    华盛恒辉l58ll334744 2025-04-22 14:29 99浏览
  • 近期,金融界消息称,江西万年芯微电子有限公司申请一项名为“基于预真空腔体注塑的芯片塑封方法及芯片”的专利。此项创新工艺的申请,标志着万年芯在高端芯片封装领域取得重要突破,为半导体产业链提升注入了新动能。专利摘要显示,本发明公开了一种基于预真空腔体注塑的芯片塑封方法,方法包括将待塑封的大尺寸芯片平铺于下模盒腔体内的基板并将大尺寸芯片的背向表面直接放置于基板上以进行基板吸附;将上模盒盖合于下模盒形成塑封腔,根据基板将塑封腔分为上型腔以及下型腔;将下型腔内壁与大尺寸芯片间的空隙进行树脂填充;通过设置于
    万年芯 2025-04-22 13:28 77浏览
  • 职场烂摊子,每个人都难免遇上如果你在职场待久了,总会碰到一些让人无奈的情况:比如刚接手的项目混乱不堪、前任同事留下的任务一团乱麻,甚至有时因为自己的疏忽造成麻烦。面对这种烂摊子,烦躁、焦虑、甚至怀疑人生的情绪都会扑面而来。但如果你冷静想想,会发现真正消耗你的,往往不是工作本身,而是持续不断的心理内耗。那么问题来了,如何摆脱内耗,快速有效地“自救”?摆脱内耗,从情绪中抽离我曾经历过一个典型的职场烂摊子:前任项目负责人突然辞职,项目资料缺失严重,进度远远落后,客户抱怨不断。当时接手后的第一反应就是慌
    优思学院 2025-04-21 18:21 45浏览
  • 引言:老龄化社会的健康守护需求随着全球老龄化进程加速,老年人的健康管理与生活质量成为社会焦点。记忆衰退、用药混乱、日程遗漏等问题频发,催生了智能健康设备的市场需求。WTR096录音语音芯片,凭借其高度集成的录放音、计时时钟与计划管理功能,为老年人量身打造了一站式健康管理方案,重新定义智能语音时钟的价值。功能亮点:1. 用药安全守护:多维度提醒,拒绝遗忘多时段精准提醒:支持一天内设置多个用药时间(如早、中、晚),适配复杂用药需求。个性化语音定制:家属可录制专属提醒语音(如“上午9点,请服用降压药”
    广州唯创电子 2025-04-22 08:41 107浏览
  •   电磁干扰抑制系统平台深度解析   一、系统概述   北京华盛恒辉电磁干扰抑制系统在电子技术快速发展、电磁环境愈发复杂的背景下,电磁干扰(EMI)严重影响电子设备性能、稳定性与安全性。电磁干扰抑制系统平台作为综合性解决方案,通过整合多元技术手段,实现对电磁干扰的高效抑制,确保电子设备稳定运行。   应用案例   目前,已有多个电磁干扰抑制系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁干扰抑制系统。这些成功案例为电磁干扰抑制系统的推广和应用提供了有力支持。   二
    华盛恒辉l58ll334744 2025-04-22 15:27 108浏览
  • 据国际精益六西格玛研究所(ILSSI)成员大卫·哈钦斯(David Hutchins)的回忆,在“六西格玛”名称出现前,摩托罗拉组建了约100个质量改进团队,接受朱兰博士制作的16盘录像带培训,名为《朱兰论质量改进》(Juran on Quality Improvement),为了推广这种严谨的分析方法(朱兰博士视频中的核心内容),摩托罗拉前首席执行官鲍勃·加尔文创造了“六西格玛”这一标签,用以表彰这种“最顶尖"的方法。大卫·哈钦斯(David Hutchins)是朱兰博士的好友,也为他的工作做
    优思学院 2025-04-22 12:03 76浏览
我要评论
0
0