【经验】基于51架构MCU用C语言编程过程中启动文件的作用分析

2017-12-12 世强 John
MCU,EFM8,C8051F,Silicon Labs MCU,EFM8,C8051F,Silicon Labs MCU,EFM8,C8051F,Silicon Labs MCU,EFM8,C8051F,Silicon Labs

SILICON LABSC8051FEFM8系列的芯片是基于51架构的MCU,一般我们在开发程序时都是使用C语言在开发,但细心的工程师会发现程序在在线调试时,从复位开始执行的并不是我们写的C语言的第一条指令,这是为什么呢?


这个现象的原因是C语言在编译的过程中会自动加入一段汇编的启动代码,这个启动代码文件就是STARTUP.A51文件,这个文件有什么作用呢?下面我们就来详细的分析一下这个文件。


在文件的开始定义了IDATA,XDATA,PDATA的长度,定义如下:

 IDATALEN        EQU     80H

XDATASTART      EQU     0

XDATALEN        EQU     0


接下来声明了C语言代码的函数及汇编代码的地址:

EXTRN CODE (?C_START)

PUBLIC  ?C_STARTUP

CSEG    AT      0

RSEG    ?C_C51STARTUP

STARTUP1:


其中?C_START就是C语言中的MAIN函数,STARTUP1就是芯片在执行程序时的第一条指令的标号,芯片在上电后就是从这里开始执行


接下来程序开始对IDATA区、XDATA区、PDATA区进行初始化,这几个区也就是程序中变量使用的区域,所以这个初始化的过程是将所使用的这几个区做一个清0的动作,IDATA区的清0代码如下(另外两个区域的程序段与这个是类似的):


IF IDATALEN <> 0

MOVR0,#IDATALEN - 1

CLRA

IDATALOOP:MOV@R0,A

DJNZR0,IDATALOOP

ENDIF


对DATA区的清0做完后,程序执行到给堆栈赋初值:

MOVSP,#?STACK-1


最后程序执行一条长跳转指令跳转到C语言的MAIN函数:

LJMP?C_START


到这STARTUP文件就启动完了,那么我们什么时候需要修改这个文件呢?一个是我们要在上电的第一条指令处关闭看狗门时,一个是我们在写BOOTLOADER程序时。


第一种情况下,如果我们将关闭看门狗的指令放到C语言的代码中,上电不会第一时间执行,所以我们要在STARTUP.A51中放入关闭看门狗的指令,以EFM8SB芯片为例,我们要在STARTUP1的标号处写这样的代码:

; Disable the WDT.

            anl   PCA0MD, #NOT(040h)      ; clear Watchdog Enable bit

这就可以保证在上电的第一时间关闭芯片内部的看门狗。


第二种情况是我们在写BOOTLOADER时要考虑应用程序的中断向量的入口,一般BOOT程序是放在第一扇区,而APP是放到其它扇区的,所以在写BOOT程序时要将中断向量的地址跳转到APP对应的向量地址处,以下的代码定义了部分中断的入口:


PUBLIC START_APPLICATION            ;The entry point (relocated reset vector)

START_APPLICATION     EQU  0200h    ;for the application FW project


INTVEC_TABLE          EQU  START_APPLICATION+3  ;Interrupt vector table starts here

INTVEC_SEPARATION     EQU  3        ;Interrupt vector separation is 3 Bytes


      CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 0)  ;03h (Intr. 00)

      AJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 0)


      CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 1)  ;0Bh (Intr. 01)

      AJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 1)


      CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 2)  ;13h (Intr. 02)

      AJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 2)


概括来说,对于C语言的开发者,启动文件的内容还是要了解一些,这有助于优化自己的代码实现更稳定的性能及功能。


世强元件电商版权所有,转载请注明来源及链接。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 5

本网站所有内容禁止转载,否则追究法律责任!

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(5

  • 木鱼 Lv7. 资深专家 2018-10-26
    好东西
  • 你的样子 Lv3. 高级工程师 2017-12-26
    收藏来等以后有需要找出来看看
  • ggss Lv8. 研究员 2017-12-12
    不错的资料,学习了。
  • FTQ Lv3. 高级工程师 2017-12-12
    讲解的正是我的疑惑之处,谢谢!!
  • 苏牛 Lv5. 技术专家 2017-12-12
    这个内容有点意思
没有更多评论了

相关推荐

【经验】使用Keil C51开发环境调试8位MCU EFM8之Jlink篇详解

本文详细介绍使用Jlink在Keil C51环境中开发和调试EFM8,本文中使用的Keil C51版本为C9.54,MCU型号为Silicon Labs 的EFM8BB31F64G-QFN32。

2018-01-31 -  设计经验 代理服务 技术支持 采购服务

【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法

本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。

2019-01-27 -  设计经验 代理服务 技术支持 采购服务

【经验】JLINK仿真器如何实现对外MCU烧写程序及仿真调试?

Silicon Labs 的MCU开发板都是通过开发板上的JLINK来进行程序烧写和调试测试的,JLINK还可以实现对外烧写调试功能。

2017-11-29 -  设计经验 代理服务 技术支持 采购服务

芯科科技EFM和EFR系列MCU结合无线与AI/ML打造理想IoT开发平台

Silicon Labs(亦称“芯科科技”)在2023年12月12日举办的MCU专题Tech Talks技术讲座-“EFM和EFR: 面向物联网开发的通用MCU平台”已结束。本次MCU专题技术讲座中,除了回顾我们领先的MCU平台包括EFM8、EFM32和EFR32系列产品组合以外,并专门介绍最新发布的EFM8 BB5x系列8位微控制器新成员-EFM8 BB50。

2023-12-19 -  原厂动态 代理服务 技术支持 采购服务

C8051F58x C8051F59x混合信号ISP Flash MCU系列

描述- 本资料详细介绍了C8051F58x/F59x系列混合信号ISP闪存微控制器的特性、功能和应用。资料涵盖了系统概述、订购信息、引脚定义、封装规格、电气特性、模拟和数字外设、存储器组织、中断、闪存、电源管理、复位源、外部数据内存接口、振荡器和时钟选择、端口输入/输出、LIN、CAN、SMBus、UART、SPI、定时器、可编程计数器阵列(PCA)、C2接口等内容。

型号- C8051F590,C8051F581,C8051F580,C8051F591,C8051F583,C8051F582,C8051F585,C8051F584,C8051F59X,C8051F587,C8051F586,C8051F589,C8051F58X,C8051F588

9/24  - SILICON LABS  - 数据手册  - Rev. 1.7 代理服务 技术支持 采购服务

【技术】C8051F37x/C8051F39x系列MCU之PCA模块介绍

C8051F37x/C8051F39x是Silicon Labs公司推出的精密混合信号MCU,该系列MCU采用QFN封装,尺寸仅为4mm×4mm,同时,其片上集成的晶振(最高49MHz)、4-16KB的Flash,10位的AD与DA,3个16位捕捉/比较模块(PCA)等资源使得该系列MCU可为光传输模块、无刷直流电机(BLDC)的应用提供优秀的解决方案,本文将重点介绍MCU的PCA模块。

2018-10-13 -  新技术 代理服务 技术支持 采购服务

MCU市场趋势前瞻,探讨技术革新与战略布局

芯科科技无线产品营销高级总监Dhiraj Sogani先生参与了行业媒体电子产品世界EEPW的微控制器(MCU)专题访谈,就MCU市场的现状和未来趋势进行了深入探讨。

2024-04-25 -  原厂动态 代理服务 技术支持 采购服务

【成功案例】内置24位ADC的MCU在交流三相电监测上的应用

Silicon labs 推出的C8051F350内置24位ADC,以低廉的价格和优异的ADC转换能力,被用在各种信号检测上。在输出率调制器时钟频率2.4576MHz,抽取比1900,输出字率10Hz的情况下本系统可以达到20位的分辨率,RMS噪声仅为2.3uV,能够很好的完成相间电压监测任务。本文通过真实项目案例推荐C8051F350混合型MCU。

2017-12-27 -  新应用 代理服务 技术支持 采购服务

新发布BB5x 8位MCU,报名MCU技术讲座学习嵌入式开发关键技巧

本次技术讲座将详细说明以芯科科技8位和32位MCU,以及无线SoC作为物联网开发通用平台的诸多优势,包括低功耗、高性能、缩减物料清单(BOM)成本,以及可轻松迁移至无线多协议设计等等。

2023-12-11 -  原厂动态 代理服务 技术支持 采购服务

C8051F MCU 调试适配器 无法识别芯片 打开U-Ec5设备出现错误

1、检查硬件连接,目标板是否有硬件问题。排除硬件问题,电脑系统问题。2、使用Silicon Labs原厂下载编程工具,flash program utility测试。参考相关应用文章:utility 3、重置仿真器固件 USB Debug Adapter Reset Utility,下载地址:USB Debug Adapter Reset Utility

2020-06-20 -  技术问答 代理服务 技术支持 采购服务

【经验】MCU EFM8BB21程序移植到EFM8BB51对Flash操作引起芯片复位的处理

从EFM8BB21移植到EFM8BB51,对Flash操作时,如果不注意Flash地址的变化,就容易引起MCU的复位,本文Silicon Labs介绍操作Flash的注意事项。

2021-10-21 -  设计经验 代理服务 技术支持 采购服务

【经验】在Keil C51环境中使用UDA开发和调试EFM8系列MCU的方法和经验

EFM8系列是Silicon Labs公司的8位MCU,由于其高性价比被广泛的应用于各种行业。Silicon labs有提供免费的Simplicity IDE开发环境用于开发和调试EFM8系列MCU,但是很多工程师习惯于使用Keil或IAR等第三方开发环境。本文就为大家详细介绍使用USB Debug Adapter(简称UDA)在Keil C51环境中开发和调试EFM8。

2018-01-15 -  设计经验 代理服务 技术支持 采购服务
展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.5305

现货: 85,765

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥12.9143

现货: 61,558

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.9026

现货: 83,555

品牌:SILICON LABS

品类:8位MCU

价格:¥5.8534

现货: 71,919

品牌:SILICON LABS

品类:8位MCU

价格:¥8.1764

现货: 41,397

品牌:SILICON LABS

品类:8位MCU

价格:¥14.1226

现货: 29,699

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥4.3667

现货: 27,741

品牌:SILICON LABS

品类:8位MCU

价格:¥4.4595

现货: 26,040

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥5.0172

现货: 24,300

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥9.2911

现货: 23,898

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:8位MCU

价格:¥4.9000

现货:12,000

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥10.1700

现货:10,000

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.7900

现货:3,451

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥11.1200

现货:1,201

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥16.8500

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥56.0000

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥5.1900

现货:396

品牌:SILICON LABS

品类:8位MCU

价格:¥39.8000

现货:266

品牌:RENESAS

品类:16-BIT MCU

价格:¥5.5190

现货:910,635

品牌:RENESAS

品类:MCU

价格:¥5.1500

现货:200,000

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

MCU烧录/Flash烧录/CPLD烧录

可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。

最小起订量: 1pcs 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面