OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 398|回复: 2

[XILINX] ZYNQ AMP 双核通信 开辟第二片共享内存 内存不足

[复制链接]

30

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2020-10-19
在线时间
54 小时
发表于 2024-10-14 19:35:09 | 显示全部楼层 |阅读模式
4金钱
ZYNQ中,基于双核通信的共享内存,可以选择DDR或者OCM。我当前能够实现Linux+裸核的双核通信,采用的是OCM3,也就是最后的64KB。由于我想实现全双工的数据交互,所以想再开一片共享内存。第一片共享内存是OCM3,现在我想采用DDR的一部分来作为共享内存。在DDR的分配上,我给Linux核384MB,裸核120MB,DDR共享内存4MB【内核设备树中设置了memory是<0x0,0x17FFFFFF>。在裸核端的lscript.ld中设置的ps7_ddr_0 Base_Address[0x18000000] Size[0x77FFFFF],然后#define DDR_SHARE 0x1FA00000 占据4mb。】。我严格审视过,以上地址完全相互独立。虽然我是512MB的7010,但是我这么分配的话原则上不会有问题才对。DDR不行我就试了下开头的192KB的OCM,仍旧显示报错:
Failed to map shared memory,probe of zynq_amp failed with error -12。报错的代码部分是
  1. static int zynq_amp_probe(struct platform_device *pdev)
  2. {
  3.   // 将共享内存物理地址映射到虚拟地址
  4.   ocm_phy_addr = ioremap(OCM_PHYS_ADDR, OCM_PHYS_SIZE);
  5.   ddr_phy_addr = ioremap(DDR_PHYS_ADDR, DDR_PHYS_SIZE);
  6.   if ((!ocm_phy_addr) || (!ddr_phy_addr))
  7.   // if (!ddr_phy_addr)
  8.   {
  9.     printk(KERN_ALERT "Failed to map shared memory\n"); // 映射失败,打印错误信息
  10.     return -ENOMEM;                                     // 返回内存不足错误
  11.   }
复制代码
于是我在linux中查看了实际的内存占据:
  1. root@LinuxICOS:~# dmesg | grep Memory
  2. Memory policy: Data cache writealloc
  3. Memory: 493128K/524288K available (6144K kernel code, 195K rwdata, 1808K rodata, 1024K init, 130K bss, 14776K reserved, 16384K cma-reserved, 0K highmem)
复制代码
发现实际占据498MB。我是按照教程来搭建的双核系统,不明白为什么这里是498MB,明明设备树已经规定了。

求助大佬指点一下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2012

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5615
金钱
5615
注册时间
2018-10-21
在线时间
1590 小时
发表于 2024-10-14 19:35:10 | 显示全部楼层
回复

使用道具 举报

30

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2020-10-19
在线时间
54 小时
 楼主| 发表于 2024-10-15 19:57:16 | 显示全部楼层
已解决,但方法不一定是对的。1.在system-top.dts中,既要保证memory节点的reg值正确,同时在chose节点的bootargs中添加mem=384M[举例]。2.在uboot倒计时时,进入uboot命令行,设置uboot的bootargs,对其添加mem=384M。3.修改uboot的bootm_size,bootm_size默认是0x20000000【我用的AC7010】,修改为想要限制的内存大小,然后boot进入系统,就没问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表