原先使用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");
}
}