⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memtest.c

📁 DSP系統設計和BIOS編程及應用實例-書籍光碟範例-第5章
💻 C
字号:
/*
 *  ======== memtest.c ========
 */
 
#include <std.h>

#include <log.h>
#include <mem.h>

#include "memtestcfg.h"


#define NALLOCS 2       /* 每一个存储段中分配的个数 */
#define BUFSIZE 128     /* 每个存储段分配的大小*/

extern Int SEG0;        /* 外部变量,存储段的名字为SEG0*/

static Void printmem(Int segid);    /* 用来显示内存分配与释放情况的函数*/

/*
 *  ======== main ========
 */
Void main()
{
    LOG_printf(&trace, "memtest example started.\n");  /* task运行时需要调用的函数*/
}

/*
 *  ======== initTask ========
 */
Void initTask()
{
    Int i;
    Ptr ram[NALLOCS];   /*ram重的指针数组*/

    LOG_printf(&trace, "before allocating ...");

    /*显示SEG0存储段在分配前的状态*/
    printmem(SEG0);

    LOG_printf(&trace, "allocating ...");

    /* 下一段程序用来分配一段内存空间 */
    for (i = 0; i < NALLOCS; i++) {
        /*在SEG0段分配大小为128byte的存储空间,
         *并返回该存储段的首地址存于ram数组中*/
        ram[i] = MEM_alloc(SEG0, BUFSIZE, 0); 
        LOG_printf(&trace, "seg %d: ptr = 0x%x", SEG0, ram[i]);
    }

    LOG_printf(&trace, "after allocating ...");

     /*打印分配好内存空间的存储段SEG0*/
    printmem(SEG0);

    /*释放刚刚在SEG0段分配的128B空间 */
    for (i = 0; i < NALLOCS; i++) {    
        MEM_free(SEG0, ram[i], BUFSIZE);/* free函数中的参数必须和allocate函数中的参数完全一致*/
    } 

    LOG_printf(&trace, "after freeing ...");

    /*打印释放完空间的SEG0存储段的状态*/
    printmem(SEG0);

    LOG_printf(&trace, "Test Complete");
}

/*
 *  ======== printmem ========
 */
static Void printmem(Int segid)/*用来显示segid存储段状态的函数*/
{
    MEM_Stat    statbuf;

    MEM_stat(segid, &statbuf); /*调用bool类型的存储器状态函数;当segid段的存储区available时,MEM_stat返回true,否则返回0*/

    LOG_printf(&trace, "seg %d: O 0x%x", segid, statbuf.size);/*打印存储段号SEG0和存储段的大小*/
    LOG_printf(&trace, "\tU 0x%x\tA 0x%x", statbuf.used, statbuf.length);/*打印存储段SEG0用过的大小和存储块中连续空间的长度*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -