四、信息输出管理LOG
(1)void LOG_disable(LOG_Obj * log)
关闭指定对向的日志功能
(2)void LOG_enable(LOG_Obj * log)
开启指定对向的日志功能
(3)void LOG_error(String format, Arg arg0)
void LOG_message(String format, Arg arg0)
前一个函数可以将一个事件、数据或出错信息按照指定的格式串写入系统日志,不受TRC跟踪管理模块的影响
后一个函数类似于前一个函数,但是受到TRC跟踪管理模块的影响
(4)void LOG_event(LOG_Obj * log, Arg arg0, Arg arg1, Arg arg2)
将未格式化的事件消息写入日志中
(5)void LOG_printf(LOG_Obj * log, String format, int arg0, int arg1)
指定的LOG窗口显示消息 %d %x %o %s
(6)void LOG_reset(LOG_Obj * log)
复位日志缓冲区
五、存储器管理MEM
(1)void * addr = MEM_alloc(int segid,Uns size,Uns align)
指定存储段分配连续块,返回起始地址
segid = 存储段的标识符或者ID号
size 块大小 等于多少个字
align 边界条件 只为0或2的幂 若align为0、1 则无约束
(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)
释放申请的动态内存 不能在SWI和HWI中调用
调用之前,用LCK中API查看内存块的锁定情况
(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
不能在SWI和HWI中使用,应判断锁定情况
(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方式,是0,1,2,3 用户保证在函数调用时该DMA通道有效
|