我正在写stm8的IAP程序,打算用IAP程序通过串口升级自己(IAP程序)单片的的RAM有6K
我在.LKF文件里定义了:
#include "STM8S.h"
#include "stm8s_type.h"
#include "lcd1602.h"
#include "stm8s_flash.h"
#include "vec.h"
#include "main.h"
# Segment Ram:
+seg .CODE_IN_RAM -a .bss -n .CODE_IN_RAM -ic
在main.c里也写了
int _fctcpy(char name);
#pragma section(CODE_IN_RAM)
void Tim4_INIT(void) { ......}
void UART1_INIT(void) { ......}
void Uart1_send(unsigned char com_data) { ......}
void DeInit_Gpio(void) { ......}
void IAP_command(void) { ......}
@far @interrupt void Uart1_Recv_IRQHandler(void) { ......}
@far @interrupt void TIM4_UPD_OVF_IRQHandler(void) { ......}
// 为了方便观看{ ......}里面的程序省略
#pragma section()
main()
{
_fctcpy('C');
while(1)
IAP_command();
}
IAP程序存放在0x8000-0x9fff里面,我在IAP升级时,到了一半被卡住了
中断向量表我是写到源代码最后完成后才写的,可能是main没运行在RAM里面,程序刚好写到main的位置被卡死了,
请问用什么方法能让全部代码在RAM里运行