初学STM8会发现,STM8官方的固件库并没有提供一个.s文件的启动代码,那么她是如何启动然后跳转到main函数执行的呢 首先,我们根据ARM的只是可以推测,STM8也是通过复位向量来启动的,假设流程在复位响亮中完成的,应该首先去复位向量表中间去找,看复位向量又要看存储器映射,一环扣一环 STM8使用的是统一编址技术,以下是存储器编址图
我们可以看到,最大取指空间是0XFFFFFF,也就是说,是16M,这是因为PC的特性决定的
在程序内部,它是将16M分为了256个节(sector),每个节的大小为64K,64*256= 16384K=16M,由图我们可以看到,在SECTOR0区间里面似乎还有些玄妙,之后的就是普通空间了
这就是sector的分区,分区如下
0-17ff 是RAM空间,而且是最大的ram空间,STM8的ram一般都小于6K由此可见,在这个ram空间里面就包含有我们的堆栈区域.但是不一定是6K,(3G寻址的win7也没见多少人真的装3G啊,装2G内存条的多的是) 1800-3fff是保留区域 4000-47ff是最大2K的数据保存区(相当于EEPROM) 4800-487f是选项字节空间,用于设置一些配置信息 4900-4fff是保留空间 5000-57ff IO以及外设的寄存器空间(统一编址技术) 5800-5fff 保留区域 6000-67ff 2K的启动代码rom 6800-7eff 保留区间 7f00-7fff 系统寄存器的地址 8000-8080 中断向量
在往下才是flash空间,也就是说,我们的代码存放的区域就是在0x8000开始的 在上面那张图我们可以看见复位向量
|