📄 module_ld.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 + -