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

📄 module_ld.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
字号:
#include "global.h"
#include "config.h"
#include "user_init.h"
#include "memmap.h"
#include "hwsetup.h"
#include "fs9660.h"
#include "framebuf.h"

#ifdef COMPRESS_MODULE

#ifdef SUPPORT_EPP_DBG
    #define DBU_MODULE_LOAD     0
#endif

//Totally module on program
#define TOT_MODULE      7

//moudel entry define 
#define MODULE_FS9660       0
#define MODULE_JPG          1
#define MODULE_MP3          2
#define MODULE_FUDU         3
#define MODULE_PREV_PROG    4
#define MODULE_SETUP        5
#define MODULE_FIX          6


//load flag control
#define FS9660_DRV_LOAD     (1<<MODULE_FS9660)
#define MP3_DRV_LOAD        (1<<MODULE_MP3) 
#define JPG_DRV_LOAD        (1<<MODULE_JPG)
#define FUDU_LOAD         (1<<MODULE_FUDU)
#define PREV_PROG_LOAD      (1<<MODULE_PREV_PROG)
#define SETUP_LOAD          (1<<MODULE_SETUP)
#define FIX_LOAD          (1<<MODULE_FIX)




//each module load address

extern  const BYTE _fs9660_drv_m_ps[0];
extern  const BYTE _jpg_drv_m_ps[0];
extern  const BYTE _mp3_drv_m_ps[0];
extern  const BYTE _fudu_drv_m_ps[0];
extern  const BYTE _prev_prog_drv_m_ps[0];
extern  const BYTE _setup_drv_m_ps[0];
extern  const BYTE _fix_drv_m_ps[0];


#define FS9660_DRV_START    _fs9660_drv_m_ps//0x881e7c00//(SDRAM_BASE+_fs9660_drv_m)
#define JPEG_DRV_START      _jpg_drv_m_ps//0x881e4000//(SDRAM_BASE+_jpg_drv_m)
#define MP3_DRV_START       _mp3_drv_m_ps//0x881e0400//(SDRAM_BASE+_mp3_drv_m)
#define FUDU_DRV_START      _fudu_drv_m_ps//0x881eac00//(SDRAM_BASE+_fudu_drv_m)
#define PREV_PROG_DRV_START _prev_prog_drv_m_ps//0x881ec800//(SDRAM_BASE+_setup_drv_m)
#define SETUP_DRV_START     _setup_drv_m_ps//0x881ec800//(SDRAM_BASE+_prev_prog_drv_m)
#define FIX_DRV_START       _fix_drv_m_ps//0x881ee800//(SDRAM_BASE+_fix_drv_m)




extern void DeCompress();
extern const unsigned char _etextf[];

UINT16  IsMp3DrvLoad(void);
void    Fs9660DrvInit(void);
void    LoadFs9660Drv(void);
void    LoadJpegDrv(void);
void    LoadMp3drv(void);
void    LoadFuduDrv(void);
void    LoadPrevProgDrv(void);
void    LoadSetupDrv(void);
void    LoadFixDrv(void);


UINT16  unDriverFlag;


UINT16 IsMp3DrvLoad()
{
    return (unDriverFlag&MP3_DRV_LOAD); 
}

UINT16 IsFuduDrvLoad()
{
    return (unDriverFlag&FUDU_LOAD); 
}

UINT16 IsFixDrvLoad()
{
    return (unDriverFlag&FIX_LOAD); 
}

void Fs9660DrvInit(void)
{
    disable_video();
    config_framebuffer(MEM_CONFIG_MP3);
    clrFrameBuffer(FRAME_REF0);         
    enable_video();     
    LoadFs9660Drv();        
    LoadMp3drv();   
}           


void LoadModule(int iModuleIndex,BYTE *pDestAddr)
{
    BYTE    *p;
    UINT32  unOffset;
    
    
    unOffset=((UINT32 *)_etextf)[iModuleIndex]; 
    p=(BYTE *)(_etextf+unOffset+TOT_MODULE*4);  
    DeCompress(p,pDestAddr);    
    return;
}



void LoadFs9660Drv(void)
{

    if ((unDriverFlag&FS9660_DRV_LOAD)==0)
    {
        #ifdef DBU_MODULE_LOAD
            epp_write_wait("Load fs9660 drv\n");
        #endif
        LoadModule(MODULE_FS9660,(BYTE *)FS9660_DRV_START);
        unDriverFlag|=FS9660_DRV_LOAD;              
    }   
    #ifdef DBU_MODULE_LOAD  
    else
        epp_write_wait("fs9660 drv exist\n");
    #endif  
    
}


void LoadMp3drv(void)
{

    if ((unDriverFlag&MP3_DRV_LOAD)==0)
    {       
        #ifdef DBU_MODULE_LOAD  
            epp_write_wait("Load mp3 drv\n");
        #endif
        LoadModule(MODULE_MP3,(BYTE *)MP3_DRV_START);
        unDriverFlag&=(~JPG_DRV_LOAD);
        unDriverFlag|=MP3_DRV_LOAD;                 
    }
    #ifdef DBU_MODULE_LOAD  
    else
        epp_write_wait("mp3 drv exist\n");
    #endif  
        
}


void LoadPrevProgDrv(void)
{
    if ((unDriverFlag&PREV_PROG_LOAD)==0)
    {   
        #ifdef DBU_MODULE_LOAD      
            epp_write_wait("Load preview/prog drv\n");
        #endif  
        LoadModule(MODULE_PREV_PROG,(BYTE *)PREV_PROG_DRV_START);
        unDriverFlag&=(~SETUP_LOAD);
        unDriverFlag|=PREV_PROG_LOAD;                   
    }
    #ifdef DBU_MODULE_LOAD  
    else
        epp_write_wait("preview/prog drv exist\n");
    #endif  
    
}


void LoadSetupDrv(void)
{
    
    if ((unDriverFlag&SETUP_LOAD)==0)
    {   
        #ifdef DBU_MODULE_LOAD      
            epp_write_wait("Load setup drv\n");
        #endif
            
        LoadModule(MODULE_SETUP,(BYTE *)SETUP_DRV_START);
        unDriverFlag&=(~PREV_PROG_LOAD);
        unDriverFlag|=SETUP_LOAD;                   
    }
    #ifdef DBU_MODULE_LOAD  
    else
        epp_write_wait("setup drv exist\n");
    #endif  
    
}


void LoadFixDrv(void)
{
    
    #ifdef DBU_MODULE_LOAD      
        epp_write_wait("Load fix drv\n");
    #endif          
    LoadModule(MODULE_FIX,(BYTE *)FIX_DRV_START);       
    
    unDriverFlag|=FIX_LOAD;
}


void LoadFuduDrv(void)
{   
    #ifdef DBU_MODULE_LOAD  
        epp_write_wait("Load fudu drv\n");
    #endif
    LoadModule(MODULE_FUDU,(BYTE *)FUDU_DRV_START);         
    unDriverFlag|=FUDU_LOAD;         
}


#ifdef SUPPORT_JPG
void LoadJpegDrv(void)
{   
    if ((unDriverFlag&JPG_DRV_LOAD)==0)
    {
        #ifdef DBU_MODULE_LOAD  
            epp_write_wait("Load jpg drv\n");
        #endif
        
        //load jpeg driver
        LoadModule(MODULE_JPG,(BYTE *)JPEG_DRV_START);
        //DeCompress(p,(BYTE *)JPEG_DRV_START);     
        unDriverFlag&=(~MP3_DRV_LOAD);
        unDriverFlag|=JPG_DRV_LOAD;
    }   
    #ifdef DBU_MODULE_LOAD  
    else
    {
        epp_write_wait("jpeg drv exist\n");
    }
    #endif
}
#endif

#endif

⌨️ 快捷键说明

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