首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP程序开发之基本API使用(2)

DSP程序开发之基本API使用(2)

五、存储器管理MEM
(1)void * addr = MEM_alloc(int segid,Uns size,Uns align)
  
指定存储段分配连续块,返回起始地址

  segid =
存储段的标识符或者ID
  size
块大小等于多少个字
  align
边界条件只为02的幂align01则无约束
(2)void * addr = MEM_calloc(segid, size, align)
  
分配内存并初始化为0
(3)int segid = MEM_define(Ptr base, Uns length, MEM_Attrs* attrs)
  
定义一个新的存储段。返回值为存储段的ID标号

  attr
参数为NULL,会按照默认参数进行配置,段的参数由结构体type MEM_Attrs规定

此函数仅在main函数中使用
  base:
新段的基地址
  length
:段长度
  attrs
:段属性
(4)bool status = MEM_free(segid,addr,size)
  
释放申请的动态内存不能在SWIHWI中调用

调用之前,用LCKAPI查看内存块的锁定情况
(5)void MEM_redefine(segid,base,length)
  
重新定义一个存储段,只能在main中调用
(6)bool status = MEM_stat(int segid, MEM_Stat * statbuf)
  segid
存储段标识符
  statbuf
状态缓存区指针
struct mem_stat{
  Uns size;//
存储段大小
  Uns used;//
已经使用的数量
  Uns length;//
最大连续存储块长度
}
  
同理:若segid有效,则MEM_stat返回TRUE
  
不能在SWIHWI中使用,应判断锁定情况

(7)void * addr = MEM_valloc(int segid, Uns size, Uns align, char value)
  
先申请内存,初始化为指定的值value

六、C6000专用模块C64x
(1)Uns oldmask = C64_diableIER(Uns mask)
  
关闭相应的中断返回值实际屏蔽的中断

(2)void C64_enableIER(Uns oldmask)
  
开放相应的中断
  
  Uns oldmask;
  oldmask = C64_disableIER(0x1); // disable INT0
  C64_enableIER(oldmask);     // enable INT0
(3)void C64_plug(int vecid, Fxn fxn, int dmachan)
  
插入一个中断向量
  int vecid:
中断序号
  Fxn fxn:
中断服务程序的函数指针
  int dmachan:
插入操作使用的DMA通道

ISFP写到中断服务表IST中。若IST在外部RAM,则CPU复制代替DMA,此时DMA-1
  IST
在片内RAM时,使用DMA方式,是0123用户保证在函数调用时该DMA通道有效



返回列表