TI中文支持网
TI专业的中文技术问题搜集分享网站

关于HeapMemParams.shareAddr的赋值问题。

HeapMemParams.shareAddr的类型在定义中为Ptr类型。

1.我的理解为该变量可以定义在shareregion中建立Heap的起始地址,这样理解对么??

2.如果是这样理解话,我在XDC中定义的ShareMem的起始地址为0x00C00000。但是打断点显示为0x008002F8。这是为什么呢??

3.我在C语言程序中定义了HeapMemParams.shareAddr=0x00C00000,但是编译报错,显示它是Ptr类型,无法用int值赋值,那该如何赋值呢??

4.shareregionID和HeapMemParams.shareAddr之间的区别,是不是在XDC中定义了shareregion,再定义了regionID,就可以不用定义HeapMemParams.shareAddr?

   尤其是两个Heap共用一个sharemem的情况。

谢谢能够帮我解答。

Andy Yin1:

你说的是在sysbios中使用HeapMem创建heap么?你使用的sysbios是什么版本?

关于heapMem有下面的结构体定义,我没有看到你说的shareAddr成员定义。

/* Params */struct ti_sysbios_heaps_HeapMem_Params { size_t __size; const void *__self; void *__fxns; xdc_runtime_IInstance_Params *instance; xdc_SizeT minBlockAlign; xdc_Ptr buf; xdc_runtime_Memory_Size size; xdc_runtime_IInstance_Params __iprms;};

rui sun4:

回复 Andy Yin1:

你好。我在heapMem的头文件中找到这段的定义:

typedef struct HeapMemMP_Params {    String name;    /*!< Name of this instance.     *     *  The name (if not NULL) must be unique among all HeapMemMP     *  instances in the entire system.  When creating a new     *  heap, it is necessary to supply an instance name.     *     *  The name does not have to be persistent.  The supplied string is copied     *  into persistent memory.     */        UInt16 regionId;    /*!< Shared region ID     *     *  The index corresponding to the shared region from which shared memory     *  will be allocated.     */        /*! @cond */    Ptr sharedAddr;    /*!< Physical address of the shared memory     *     *  This value can be left as 'null' unless it is required to place the     *  heap at a specific location in shared memory.  If sharedAddr is null,     *  then shared memory for a new instance will be allocated from the      *  heap belonging to the region identified by      *  #HeapMemMP_Params::regionId.     */    /*! @endcond */         SizeT sharedBufSize;     /*!< Size of shared buffer     *     *  This is the size of the buffer to be used in the HeapMemMP instance.       *  The actual buffer size in the created instance might actually be less     *  than the value supplied in 'sharedBufSize' because of alignment      *  constraints.      *     *  It is important to note that the total amount of shared memory required     *  for a HeapMemMP instance will be greater than the size supplied here.     *  Additional space will be consumed by shared instance attributes and     *  alignment-related padding.     */         GateMP_Handle gate;    /*!< GateMP used for critical region management of the shared memory      *     *  Using the default value of NULL will result in use of the GateMP     *  system gate for context protection.     */    } HeapMemMP_Params;

其中有Ptr sharedAddr的定义。但是我直接给它赋值0x0C000000,显示int型无法赋值给它。那我该如何处理呢??

赞(0)
未经允许不得转载:TI中文支持网 » 关于HeapMemParams.shareAddr的赋值问题。
分享到: 更多 (0)