target_run_algorithm
时候出错了(使用的山寨 jlink).然后使用 cmsis-dap 虽然函数 target_run_algorithm
不报错了,但是分析还是没有正常执行这段代码在芯片端.所以不得已,才使用了傻瓜的方法,直接使用 target_write/read_u32/u8/16 这些接口函数操作 RA4M2,实现写 code flash.我修改的部分主要有两处:
__attribute__ ((unused)) static int __rv40f_flash_write(struct target *target, unsigned int count, uint16_t *wa_start, uint16_t *wa_end, uint32_t dst_addr)
{
unsigned int i = 0;
__attribute__ ((unused)) uint32_t value = 0;
uint8_t reg8 = 0;
__attribute__ ((unused)) uint16_t reg16 = 0;
uint32_t reg32 = 0;
int retval;
target_write_u32(target, FACI_FSADDR, (uint32_t)dst_addr);
target_write_u8(target, FACI_CMD_AREA, 0XE8);
target_write_u8(target, FACI_CMD_AREA, count);
for (; i < count; i++)
{
reg16 = *(wa_start+i);
target_write_u16(target, FACI_CMD_AREA, reg16);
do
{
retval = target_read_u32(target, FACI_FSTATR, ®32);
usleep(1000);
} while(reg32 & 0X400);
}
target_write_u8(target, FACI_CMD_AREA, 0XD0);
retval = target_read_u32(target, FACI_FSTATR, ®32);
if (reg32 & 0X8000)
{
retval = target_read_u8(target, FACI_FASTAT, ®8);
}
return retval;
}
更多回帖