OpenEdv-开源电子网

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

使用mymalloc分配结构体数组问题

[复制链接]

338

主题

385

帖子

0

精华

QQ游客

积分
1254
金钱
1254
注册时间
2016-12-9
在线时间
56 小时
发表于 2017-11-16 07:50:29 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 cxelove 于 2017-11-16 08:08 编辑

我是在429核心板上操作的。首先我使用
[mw_shl_code=c,true]SerialQueBufTypeDef  (*SerialQueBuffer)[5]
SerialQueBuffer = mymalloc( SRAMEX, 5 * sizeof( SerialQueBufTypeDef ) );
mymemset( SerialQueBuffer, 0, 5 * sizeof( SerialQueBufTypeDef ) );;[/mw_shl_code]
这样操作后面使用都没有问题,可是我SRAMEX换成内部RAM的话后面程序里面mymemcpy拷贝到这个结构体SerialQueBuffer[0]->成员里面就会出现硬件错误。
后来我改成

[mw_shl_code=c,true]SerialQueBufTypeDef  *SerialQueBuffer;
SerialQueBuffer = mymalloc( SRAMEX, 5 * sizeof( SerialQueBufTypeDef ) );
mymemset( SerialQueBuffer, 0, 5 * sizeof( SerialQueBufTypeDef ) );[/mw_shl_code]
使用SerialQueBuffer[0].成员操作就不会有问题了,这是为什么呢?

顺便问一下mymalloc管理的内部内存大小和freertos定义的总内存大小是互相冲突 加一起不能超过总内存的吗?
如果我使用heap_5.c管理内存并且使用
[mw_shl_code=c,true]xHeapRegions[0].pucStartAddress = ( uint8_t * ) mymalloc( SRAMEX, 0x2000000 );
xHeapRegions[0].xSizeInBytes = 0x2000000;
/* 向函数vPortDefineHeapRegions()传递数组参数. */   
vPortDefineHeapRegions( xHeapRegions );[/mw_shl_code]
传入外部RAM内存地址,是不是config定义的freertos内存地址就是在外部空间呢?





最佳答案

查看完整内容[请看2#楼]

1,我看你两段代码一样。你假设你代码写对了,检查下两者内存池的对齐是否一样? 2,不要在一个代码里面,同时用2中内存分配方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-16 07:50:30 | 显示全部楼层
1,我看你两段代码一样。你假设你代码写对了,检查下两者内存池的对齐是否一样?
2,不要在一个代码里面,同时用2中内存分配方式。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 06:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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