MA35D1中M4需要1.5M的执行空间

cwlin0 |浏览153次
收藏|2023/10/13 10:22

原先使用M7做出来功能部分是需要原程序用到空间是1M flash+512KRAM,所以应用到 MA35D1这边,必须要要1.5M的空间来执行M7这部分程序。而MA35文档有说,如果A35这边跑linux,那linux的加载地址是512K这里,那M4这部分的整个空间只有128KRAM+384K程序空间。是否可以linux的加载地址往后移,以满足M4需要1.5M的空间。

满意回答

2023/10/13 10:29

使用最新的BSP,可以按如下方法修改M4的使用空间:

buildroot可根据下列方式将M4使用空间增加(最大4MB)。实际大小可根据实际需要修改.

1.修改Kernel of device tree: ma35d1-som-512m.dts

        reserved-memory {

                 #address-cells = <2>;

                 #size-cells = <2>;

                 ranges;

                 rproc_buf: rproc_buf@0 {

                         reg = <0x0 0x80020000 0x0 0x60000>; /* 384KB */

                         no-map;

                 };

 

修改如下:

 

        reserved-memory {

                 #address-cells = <2>;

                 #size-cells = <2>;

                 ranges;

                 rproc_buf: rproc_buf@0 {

                         reg = <0x0 0x80020000 0x0 0x3E0000>; /* 3M+896KB */

                         no-map;

                 };

2.修改MA35D1_Buildroot/board/nuvoton/ma35d1/uboot-env.txt

kernel_addr_r=0x80080000

修改

kernel_addr_r=0x80400000

3.测试方法:在M4 BSP(MA35D1_RTP_BSP)中,修改Template例程,定义3MB大小的全局变量test_buf,在main函数中循环清0,可以正常运行。

uint8_t test_buf[3 * 1024 * 1024];

int main()

{


    SYS_Init();

    /* Init UART to 115200-8n1 for print message */

    UART_Open(UART16, 115200);

    /* Connect UART to PC, and open a terminal tool to receive following message */

    printf("Hello World\n");


    /* Got no where to go, just loop forever */

    while(1)

        {

            memset(test_buf, 0x00, sizeof(test_buf));


            printf("Hello World\n");

        }


}


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...