打印
[STM8]

STM8S 的块和页

[复制链接]
1129|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
junyee|  楼主 | 2015-4-19 20:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家好,我是新手.最近在改动高人提供的IAP时遇到一些困惑.罗列如下:

1: STM8的应用程序区,是如何组织的呢?我在STM8的中文文档中看到有 块,页 的描述:
参考手册 P27


这里描述的是块擦/写操作时,不同容量STM8S对一块的定义.
但我在实际操作中发现,
STM8S103 ,改写FLASH->CR2(NCR2)后,向地址写64字节后,写入成功了.
但在STM8S105中,写64字节, FLASH->CR2 并没有清0,读 MCU的数据也没有发现指定的地址被修改.
按手册中描述,写128字节,仍如是.
索性逐加地址写512字节,,我发现 FLASH->CR2被清0,用STLINK读MCU数据,指定的数据变了?
这是怎么回事?
在 <参考手册> P18看到:


我糊涂了,块似乎没什么用,STM8S103中 一块=一页,105中 8块=1页,
但在 块编程 中,(STM8S105)为什么写  一块(128),不成功,写一页(512) 反而成功了?

2: 中断向量表,似乎是固定在0x8000及其后的128个字节中.(???是否正确?)
是否可以这样理解,这个向量表,指明了发生各种中断后所指向的运行代码地址?

3:高人留下的Bootloader 是针对 STM8S103的,虽然105自带,但用习惯了,所以想把 103的改成105的.
看到代码中 有 IN_RAM() 包裹的函数.从 名称可以看出,似乎此断函数是到 RAM中执行.
在代码的最后,有一句:
asm("JP $8200");
我虽然没学过汇编, JP 按顺序读就像是JUMP,猜想这句的功能就是 跳到 8200这个地址扫行.
8000是初始地址,200=512字节,正好和编译好的bootloader文件大小接近.
那么,跳转后,,,执行用户代码,那在之前BootLoader 中用过的那些RAM怎么办?全部清空了吗?



如果问题很幼稚的话请大家原谅我的无知.:P



沙发
CS_Police| | 2015-4-30 17:50 | 只看该作者
仅供参考:
stm8标准外设库里有例子可以试一下;
中断向量表就是各个中断的入口地址.例如, 复位以后就是从reset中断入口(默认是0x008000)开始执行.datasheet中有"Interrupt vector mapping"一节.
之前用到的ram是否清空要看你写的bootloader里面是否清除了.实际上, 即使不用bootloader在芯片上电后, 内部ram的值也没有保证一定是0或者1.

使用特权

评论回复
板凳
jcdzxh| | 2015-4-30 20:04 | 只看该作者
有点奇怪哈,手册写的是128bytes

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

251

帖子

6

粉丝