MSP430F5XXX平台的内存分布和单片机的上电启动流程

记得以前学习单片机的时候,很多教材都是会将单片机的启动流程,但是现在搜索感觉资料很少,正好用到msp430f5xxxiap功能,需要对单片机的内存分布有一定的了解,整理了一下如下内容
msp430f5xxx系列内存分布
ram :01C00h-05BFFh RAM 16KB
flash:05C00h-0FFFFh Program
flash:         0FF80h-0FFFFh Interrupt Vectors
flash:10000h-45BFFh Program

有一点可以看到:program区别被中断向量列表给分割了,猜想是TI为了兼容以前的那些容量比较小的单片机的措施

flash: 0FF80h-0FFFFh Interrupt Vectors 这段区域在IAP烧录的时候是需要跳过的,也就是说升级程序时Interrupt Vectors 是不需要改动的,新程序的设计需要特别注意

iar调试界面中看到的内容如下
?cstart_begin:
program_start:

006AFE 4031 5C00
?cstart_init_copy_ramfunc:
006B02 403C 1F5E
006B06 403D C8E0
006B0A 403E 0002
006B0E 13B0 C8C8

?cstart_init_zero:
006B12 403C 1C34
006B16 403D 032A
006B1A 13B0 C7DE

?cstart_init_copy:
006B1E 403C 1C00
006B22 403D 6ACA
006B26 403E 0033
006B2A 13B0 C8C8

?cstart_call_main:
006B2E 13B0 9424
006B32 13B0 C8CC

系统启动流程
1:当系统上电时产生复位,pc指针被设定成0xffff(这里是硬件决定的软件无法修改),程序从该处运        行.该处位于flash中 其内容是 0xffff: 6AFE FFFF
        6AFE是iar编译器生成的 如果换成其他平台则可能不一样哈
        CPU把6AFE读到指令流水线上,则下一条指令则是把pc设定为6AFE
2
:到达6AFE后首先做的是把 5C00压入堆栈 原本以为5C00flash program的开始地址
     但实际上这句话没有啥用,位于5C00处的程序是crc_clc
3:
按顺序运行
        ?cstart_init_copy_ramfunc:  //初始化那些需要放到内存中的程序(被ramfunc修饰过的)
        ?cstart_init_zero:
        ?cstart_init_copy:
        ?cstart_call_main:
        006B2E 13B0 9424

值得需要注意的是 在这次编译中main的入口地址是9424
在其他的编译过程中 这个地址可能会变化
4:PC指针跳转至9424处开始运行 剩下的我们都知道了

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值