打印
[技术问答]

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

[复制链接]
347|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2023-10-13 14:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原先使用M7做出来功能部分是需要原程序用到空间是1M flash+512KRAM,所以应用到 MA35D1这边,必须要要1.5M的空间来执行M7这部分程序。而MA35文档有说,如果A35这边跑linux,那linux的加载地址是512K这里,那M4这部分的整个空间只有128KRAM+384K程序空间。是否可以linux的加载地址往后移,以满足M4需要1.5M的空间。

使用特权

评论回复
沙发
riplay| | 2023-10-16 08:57 | 只看该作者
使用最新的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");
        }

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

503

主题

1924

帖子

5

粉丝