能否提供CH569 RAMX的运行代码载入的详细方法说明。

1、目前下载工具WCHISPTOOL,有RAMX的分配选项,但是这个选项对于下载的HEX有任何意义么?

2、目前SDK的代码,LD文件并没有为RAMX单独定义section。startup_ch56x.s也没有flash段代码拷贝到RAMX段的过程。

3、我自己添加了RAMX的section定义,给函数分配了section,list文件可见汇编代码函数VMA空间是0x20020000开始的地址。但是程序下载后,无法运行。

LD文件:

    CODEX (xrw) : ORIGIN = 0x20050000, LENGTH = 32K 

    .xCode :

    {

. = ALIGN(4);

PROVIDE(_xCode_vma = 0x20050000);

PROVIDE(_xCode_lma = 0x00020000);

PROVIDE( _xCodeLen = 0x8000);

    } >CODEX AT>FLASH

startup_ch56x.s:

    

2:

/* LOAD XCODE FROM FLASH TO RAM*/

la a0, _xCode_lma

la a1, _xCode_vma

la a2, _edata

bgeu a1, a2, 2f


在isp工具配置中配置RAMX的分配,是用来配置ch565/ch569的 硬件flash到ram的搬移,为了更高的速度,通常一些代码要放在ram里运行


至于ramx的section定义,你可以打开一个usb的example,里面usb的dma数组地址就是定义在ramx的,由于example工程都是共用一个ld文件,你可以按照那个来.


1、ISP工具,如果是修改InfoFlash的[31:30]USER_MEM字段的配置值,这个就说得通了。

2、RAMX和CODEX的和是128K,所以其实RAMX的总空间是0x20020000-0x2003FFFF。手册第13页  0x20038000-0x3FFFFFFF 保留,这项就不严谨。

3、DMA段只是内存段,是变量定义。代码是需要拷贝的,从LMA拷贝到VMA空间,就像DATA段在startup_ch56x.s做的工作。这个没解释清楚。


只有登录才能回复,可以选择微信账号登录