WCH沁恒单片机
直播中

飘逸的D

12年用户 740经验值
私信 关注
[问答]

求助,能否提供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


  
  

回帖(2)

阮薇

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


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

王洋

2022-6-9 11:04:03
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做的工作。这个没解释清楚。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分