【经验】基于51架构MCU用C语言编程过程中启动文件的作用分析
SILICON LABS的C8051F与EFM8系列的芯片是基于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语言的开发者,启动文件的内容还是要了解一些,这有助于优化自己的代码实现更稳定的性能及功能。
世强元件电商版权所有,转载请注明来源及链接。
- |
- +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。
【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法
本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。
【经验】JLINK仿真器如何实现对外MCU烧写程序及仿真调试?
Silicon Labs 的MCU开发板都是通过开发板上的JLINK来进行程序烧写和调试测试的,JLINK还可以实现对外烧写调试功能。
芯科科技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。
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
【技术】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模块。
MCU市场趋势前瞻,探讨技术革新与战略布局
芯科科技无线产品营销高级总监Dhiraj Sogani先生参与了行业媒体电子产品世界EEPW的微控制器(MCU)专题访谈,就MCU市场的现状和未来趋势进行了深入探讨。
SILICON LABS 8-bit Microcontroller选型表
SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
EMIF
|
CAN
|
LIN
|
VREF
|
Debug Interface
|
C8051F392-A-GM
|
8位MCU
|
C8051F39x Small Form Factor
|
50
|
16
|
1
|
1.8
|
3.6
|
QFN20
|
4x4
|
±2
|
17
|
10-bit, 16-ch., 500 ksps
|
Temp Sensor
|
6
|
3
|
10-bit, 2-ch.
|
1
|
1
|
1
|
2
|
0
|
0
|
0
|
0
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
【成功案例】内置24位ADC的MCU在交流三相电监测上的应用
Silicon labs 推出的C8051F350内置24位ADC,以低廉的价格和优异的ADC转换能力,被用在各种信号检测上。在输出率调制器时钟频率2.4576MHz,抽取比1900,输出字率10Hz的情况下本系统可以达到20位的分辨率,RMS噪声仅为2.3uV,能够很好的完成相间电压监测任务。本文通过真实项目案例推荐C8051F350混合型MCU。
新发布BB5x 8位MCU,报名MCU技术讲座学习嵌入式开发关键技巧
本次技术讲座将详细说明以芯科科技8位和32位MCU,以及无线SoC作为物联网开发通用平台的诸多优势,包括低功耗、高性能、缩减物料清单(BOM)成本,以及可轻松迁移至无线多协议设计等等。
C8051F MCU 调试适配器 无法识别芯片 打开U-Ec5设备出现错误
1、检查硬件连接,目标板是否有硬件问题。排除硬件问题,电脑系统问题。2、使用Silicon Labs原厂下载编程工具,flash program utility测试。参考相关应用文章:utility 3、重置仿真器固件 USB Debug Adapter Reset Utility,下载地址:USB Debug Adapter Reset Utility
SILICON LABS C8051F31x Small Form Factor Microcontrollers选型表
SILICON LABS 8位MCU选型,基于25MHz Frequency,8~16kB Flash,1.25kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
5 Volt Tolerant
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
I2S
|
EMIF
|
CAN
|
LIN
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
C8051F310
|
Microcontroller
|
8051
|
25
|
16
|
1.25
|
29
|
5 Volt Tolerant
|
10-bit, 21-ch., 200 ksps
|
Temp Sensor
|
4
|
5
|
2
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
2.7
|
3.6
|
QFP32
|
7x7
|
±2
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
【经验】MCU EFM8BB21程序移植到EFM8BB51对Flash操作引起芯片复位的处理
从EFM8BB21移植到EFM8BB51,对Flash操作时,如果不注意Flash地址的变化,就容易引起MCU的复位,本文Silicon Labs介绍操作Flash的注意事项。
【经验】在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。
SILICON LABS C8051F50x-59x Automotive & Industrial MCUs选型表
SILICON LABS 8位MCU选型,基于25~50MHz Frequency,2~128kB Flash,0.25~8kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
5 Volt Tolerant
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
I2S
|
EMIF
|
CAN
|
LIN
|
AEC-Q100
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
Temperature Range (ºC)
|
C8051F500-AM
|
MCU
|
8051
|
50
|
64
|
4.25
|
40
|
5 Volt Tolerant
|
12-bit, 32-ch., 200 ksps
|
Temp Sensor
|
4
|
6
|
2
|
1
|
1
|
1
|
0
|
0
|
1
|
1
|
1
|
AEC-Q100
|
1.8
|
5.25
|
QFN48
|
7x7
|
±0.5
|
VREF
|
C2
|
-40 to 125
|
选型表 - SILICON LABS 立即选型
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录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 提交需求>
登录 | 立即注册
提交评论