3617|7

638

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【LPC54100】+启动文件的理解与不解 [复制链接]

          搞完按键控制LED后,本来想写一篇有关按键中断方式来控制LED的,突然有那么一丢丢的好奇单片机的中断到底是怎么一回事。
          由于以前重视的只是应用所以很少在乎细节方面的东西,致使很多东西是懂非懂的,正好借这几天的时间好好搞了搞启动文件
          以前不怎么接触汇编,唯一一点知识还是在学校学的,早忘得一干二净了。不过还好网上一大堆启动文件的详解在这里我就不在啰嗦了,大家想看自己百度一下,一查一大堆。以下说说个人的理解这几天的理解。
          首先:是配置栈和堆 ,百度了一下堆栈的区别如下
                     栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值局部变量的值等。其操作方式类似于数据结构中的栈。
              堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
   说一下不解吧,堆应该是程序员自己分配的吧  ,全局变量时存放在哪呢?网上有说    全局区(静态区)(static)   可是在启动文件中并没有看到相关
  配置,难道是编译器自己分配??
  然后就是:分配中断向量表了代码如下:
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors


__Vectors       DCD     __initial_sp              ; Top of Stack
                DCD     Reset_Handler             ; Reset Handler


                DCD     NMI_Handler
                DCD     HardFault_Handler
                DCD     MemManage_Handler
                DCD     BusFault_Handler
                DCD     UsageFault_Handler
__vector_table_0x1c
                DCD     0                         ; Checksum of the first 7 words
                DCD     0
                DCD     0                         ; Enhanced image marker, set to 0x0 for legacy boot
                DCD     0                         ; Pointer to enhanced boot block, set to 0x0 for legacy boot
                DCD     SVC_Handler
                DCD     DebugMon_Handler
                DCD     0
                DCD     PendSV_Handler
                DCD     SysTick_Handler


        ; External Interrupts
                DCD     WDT_IRQHandler            ; Watchdog
                DCD     BOD_IRQHandler            ; Brown Out Detect
                DCD     Reserved_IRQHandler       ; Reserved
                DCD     DMA_IRQHandler            ; DMA Controller
                DCD     GINT0_IRQHandler          ; GPIO Group0 Interrupt
                DCD     PIN_INT0_IRQHandler       ; PIO INT0
                DCD     PIN_INT1_IRQHandler       ; PIO INT1
                DCD     PIN_INT2_IRQHandler       ; PIO INT2
                DCD     PIN_INT3_IRQHandler       ; PIO INT3
                DCD     UTICK_IRQHandler          ; UTICK timer                                 
                DCD     MRT_IRQHandler            ; Multi-Rate Timer
                DCD     CT32B0_IRQHandler         ; CT32B0
                DCD     CT32B1_IRQHandler         ; CT32B1
                DCD     CT32B2_IRQHandler         ; CT32B2
                DCD     CT32B3_IRQHandler         ; CT32B3
                DCD     CT32B4_IRQHandler         ; CT32B4
                DCD     SCT0_IRQHandler           ; Smart Counter Timer
                DCD     UART0_IRQHandler          ; UART0            
                DCD     UART1_IRQHandler          ; UART1            
                DCD     UART2_IRQHandler          ; UART2
                DCD     UART3_IRQHandler          ; UART3
                DCD     I2C0_IRQHandler           ; I2C0 controller  
                DCD     I2C1_IRQHandler           ; I2C1 controller  
                DCD     I2C2_IRQHandler           ; I2C2 controller  
                DCD     SPI0_IRQHandler           ; SPI0 controller                               
                DCD     SPI1_IRQHandler           ; SPI1 controller
                DCD     ADC_SEQA_IRQHandler       ; ADC0 A sequence (A/D Converter) interrupt
                DCD     ADC_SEQB_IRQHandler       ; ADC0 B sequence (A/D Converter) interrupt
                DCD     ADC_THCMP_IRQHandler      ; ADC THCMP and OVERRUN ORed
                DCD     RTC_IRQHandler            ; RTC Timer
                DCD     Reserved_IRQHandler       ; Reserved
                DCD     MAILBOX_IRQHandler        ; Mailbox
                DCD     GINT1_IRQHandler          ; GPIO Group1 Interrupt
                DCD     PIN_INT4_IRQHandler       ; PIO INT4
                DCD     PIN_INT5_IRQHandler       ; PIO INT5
                DCD     PIN_INT6_IRQHandler       ; PIO INT6
                DCD     PIN_INT7_IRQHandler       ; PIO INT7
                DCD     Reserved_IRQHandler       ; Reserved                               
                DCD     Reserved_IRQHandler       ; Reserved                               
                DCD     Reserved_IRQHandler       ; Reserved
                DCD     RIT_IRQHandler            ; RITimer
                DCD     Reserved41_IRQHandler     ; Reserved                        
                DCD     Reserved42_IRQHandler     ; Reserved                        
                DCD     Reserved43_IRQHandler     ; Reserved                        
                DCD     Reserved44_IRQHandler     ; Reserved     
配置的向量的初始地址为栈顶的地址SP然后就分配各种地址这个芯片手册上有相关解释。
然后就是CRP的相关代码如下:
CRP_Level                EQU                0xFFFFFFFF

                                IF                :LNOT::DEF:NO_CRP
                                AREA        |.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key                        DCD                0xFFFFFFFF
                                ENDIF
在然后就是代码区了又有不解了  望大神解释一下为啥一下代码的含义:
AREA        |.text|, CODE, READONLY


cpu_id                         EQU                0xE000ED00
cpu_ctrl                 EQU                0x40000300
coproc_boot         EQU                0x40000304
coproc_stack        EQU                0x40000308


rel_vals
                                DCD                cpu_id, cpu_ctrl, coproc_boot, coproc_stack
                                DCW                0xFFF, 0xC24


; Reset Handler - shared for both cores
Reset_Handler   PROC
                EXPORT        Reset_Handler                                [WEAK]
                EXPORT        SystemInit                                        [WEAK]
                IMPORT        __main
   主要为红色部分的代码:个人理解是不是与协处理器M0的有关。不过本人对上述的几个地址在用户手册中搜过了没啥收获。望大神指导一下。





此帖出自NXP MCU论坛

最新回复

我明天去查查看   详情 回复 发表于 2015-3-3 21:13
点赞 关注
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
估计得看arm官方的资料了 这种寄存器是标准的大家都一样
此帖出自NXP MCU论坛
 
个人签名电工
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
ARM的Cortex M核启动文件的启动流程都一样,可以去看看ST方面的资料,网上已经有有很多关于这个问题的答案
此帖出自NXP MCU论坛

点评

找了好多都没有讲代码段的前边这几句的含义  详情 回复 发表于 2015-3-2 19:34
 
 
 

回复

638

帖子

0

TA的资源

一粒金砂(高级)

4
 
强仔00001 发表于 2015-3-2 10:09
ARM的Cortex M核启动文件的启动流程都一样,可以去看看ST方面的资料,网上已经有有很多关于这个问题的答案AREA        |.text|, CODE, READONLY

cpu_id                         EQU                0xE000ED00
cpu_ctrl                 EQU                0x40000300
coproc_boot         EQU                0x40000304
coproc_stack        EQU                0x40000308


rel_vals
                                DCD                cpu_id, cpu_ctrl, coproc_boot, coproc_stack
                                DCW                0xFFF, 0xC24
                找了好多都没有讲代码段的前边这几句的含义



此帖出自NXP MCU论坛

点评

这个我也不懂  详情 回复 发表于 2015-3-2 21:54
 
 
 

回复

638

帖子

0

TA的资源

一粒金砂(高级)

5
 
lyzhangxiang 发表于 2015-3-2 09:24
估计得看arm官方的资料了 这种寄存器是标准的大家都一样额  好吧





此帖出自NXP MCU论坛
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

6
 
908508455a 发表于 2015-3-2 19:34
找了好多都没有讲代码段的前边这几句的含义
这个我也不懂



此帖出自NXP MCU论坛
 
 
 

回复

638

帖子

0

TA的资源

一粒金砂(高级)

7
 
强仔00001 发表于 2015-3-2 21:54
这个我也不懂额   先不管了




此帖出自NXP MCU论坛

点评

我明天去查查看  详情 回复 发表于 2015-3-3 21:13
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

8
 
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表