打印

STM8使用IAR的__ramfunc实现Bootloader功能有问题?

[复制链接]
3907|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenshui51|  楼主 | 2010-12-27 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用IAR的__ramfunc定义实现操作FLASH的程序,发现0x9000的地址可以编程(0x9000不是代码区),而0x8100地址就不可以(0x8100在代码区),不知道是什么原因,代码如下:
__ramfunc void UpdateApp(void)
{
u8 i;

FLASH_PUKR = 0x56;
asm("nop");
FLASH_PUKR = 0xae;
asm("nop");
while(!(FLASH_IAPSR & 0x02));
for (i = 0; i < 128; i += 4)
{
  FLASH_CR2 |= (u8)0x40;
  FLASH_NCR2 &= (u8)~0x40;
  
  *(((__far unsigned char *)0x8100) + i) = 0x5a;
  asm("nop");
  *(((__far unsigned char *)0x8100) + i + 1) = 0x5a;
  asm("nop");
  *(((__far unsigned char *)0x8100) + i + 2) = 0x5a;
  asm("nop");
  *(((__far unsigned char *)0x8100) + i + 3) = 0x5a;
  asm("nop");
  while(!(FLASH_IAPSR & 0x05));
}

while(1);
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝