2622|5

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

问个白痴问题。。希望解决! [复制链接]

#include
#include
#include
#include
#include
#include "image_cfg.h"
#include "s3c2440x_lcd.h"
#include
//------------------------------------------------------------------------------
//  Definition

#define MAXLOGONUM           18
const char   LOGOTag[8]={'A','M','O','I','L','O','G','O'};   

static DWORD  PowonLogoNum=0;
DWORD ChgLogoNum;
DWORD UpdateLogoNum;

static HANDLE g_hSTORE = NULL;

//------------------------------------------------------------------------------
//  Frame buffer

//static USHORT s_frameBuffer[320 * 240];
static LOGOINFO  LogoInfo[MAXLOGONUM];//   the max num of the logo is 10
                                       

//Function: InitOrCloseBootstore
//IsInit == True,will init the bootstore
//ISInit == False,will Deinit the bootstore
BOOL InitOrCloseBootstore(BOOL IsInit)
{
    //#ifdef SHIP_BUILD
    if(IsInit)
    {
     g_hSTORE = BootStoreInit(&g_bootStoreInit);
      if (g_hSTORE == NULL)
     {

        RETAILMSG(OAL_INFO, (L"INFO: "
            L"Failed Init store!\r\n"));
                  
        return FALSE;
      }
    }
    else if(!IsInit)
    {
       //BootStoreDeinit(g_hSTORE);
        BootStoreClose(g_hSTORE);
    }
  // #endif

    return TRUE;
}
//------------------------------------------------------------------------------
//
//  Function:  ShowLogo
//
BOOL
ShowPowonLogo(
    )
{
    BOOL rc=TRUE;
    InitOrCloseBootstore(TRUE);
   
    if(ReadLogoHead() ==FALSE)//读取LOGO头文件失败
    {
       OALMSG(OAL_INFO, (L"INFO: "
            L"  POWON logo read ReadLogoHead fail!\r\n"));  
       return rc = FALSE;                  
    }

    if( ReadLogoAndDisplay(0,POWONLOGO)==FALSE)//读取和显示LOGO失败
    {
     OALMSG(OAL_INFO, (L"INFO: "
            L"POWON logo  ReadLogoAndDisplay fail!\r\n"));
     rc = FALSE;
    }
   
    InitOrCloseBootstore(FALSE);//初始化失败
    return rc;
}

BOOL ReadLogoHead()
{
   // #ifdef SHIP_BUILD
    UINT16 *pHBuffer,*pInfoBuffer;
    DWORD   TotalLogo;
    UINT16 LogoIndex;
    UINT16 PowonLogoIndex=0,ChgLogIndex=0,UpdateLogoIndex=0;
    LogoRegionHeader  LogoHeader;
    int i;
   /* UINT16 *P1,*p2,*p3;
    UINT32 Pa1,pc3;
    UINT16 a[10]={1,1,2,3,1,3},b[10],c[10];
    p2=b;
    P1=a;
    memcpy(p2,P1,sizeof(a));
    for(i=0;i<10;i++)
    RETAILMSG(1, (L"memory cache to cache %x\r\n",p2));
   
    Pa1=OALVAtoPA(&a[0]);
    P1 =OALPAtoUA(Pa1);
    pc3=OALVAtoPA(&c[0]);
    p3 =OALPAtoUA(pc3);
   
    memcpy(p2,P1,sizeof(a));
    for(i=0;i<10;i++)
    RETAILMSG(1, (L"uncache to cache %x\r\n",p2));  
    memcpy(p3,p2,sizeof(a));
    for(i=0;i<10;i++)
    RETAILMSG(1, (L"cache to uncache %x\r\n",p3));*/
      
    pHBuffer = (UINT16 *)&LogoHeader;
    pInfoBuffer = (UINT16 *)LogoInfo;
   
    if (!BootStoreOpenReservedRegion(g_hSTORE, BOOT_STORE_ACCESS_READ, "LOGO"))
    {
        RETAILMSG(1, (L"INFO: "
            L"Failed open reserved region LOGO!\r\n"));
            
        return FALSE;        
    }
    if(BootStoreRead(g_hSTORE, pHBuffer, sizeof(LogoHeader)) != sizeof(LogoHeader))
    {
         RETAILMSG(1, (L"INFO: "
            L"Failed read logo header from reserved region!\r\n"));
        return FALSE;
    }  
   if(memcmp(LogoHeader.LogoTag,LOGOTag,8)==0)
    {
        TotalLogo = LogoHeader.TotalNumber;
        
        if(TotalLogo > MAXLOGONUM)
        {
            TotalLogo = MAXLOGONUM;         
        }
        if(!BootStoreSeek(g_hSTORE,(sizeof(LogoHeader)-sizeof(LOGOINFO))))
        {
            RETAILMSG(1, (L"INFO: "
            L"seek to the headInfo fail in reserved region!\r\n"
            ));   
          return FALSE;
        }
        if(BootStoreRead(g_hSTORE, pInfoBuffer, TotalLogo*sizeof(LOGOINFO)) != TotalLogo*sizeof(LOGOINFO))
        {
            RETAILMSG(1, (L"INFO: "
            L"Failed read logo info from reserved region!\r\n"));

            return FALSE;
         }  
        for(LogoIndex =0;LogoIndex < TotalLogo;LogoIndex++)
        {
            //POWON logo
            if(LogoInfo[LogoIndex].LogoID == 1)
            {
                PowonLogoIndex++;
            }
            //CHARGE LOGO
           else if(LogoInfo[LogoIndex].LogoID == 2)
           {
               ChgLogIndex++;
           }      
           else if(LogoInfo[LogoIndex].LogoID == 3)
           {
              UpdateLogoIndex++;
           }
        }
        PowonLogoNum = PowonLogoIndex;
        ChgLogoNum = ChgLogIndex;
        UpdateLogoNum = UpdateLogoIndex;     
        
        return TRUE;
    }
    else
  //  #endif   
    {   
        //for debug
        for(i=0;i         {
            RETAILMSG(1, (L"LogoHeader.LogoTag %x\r\n",LogoHeader.LogoTag));
        }
        RETAILMSG(1, (L"INFO: "L"logo not exist!\r\n"));
         
        return FALSE;
    }  
   
}

//function: ReadLogoAndDisplay;
//argument:
// LogoIndex:  the LogoIndex is begin at 0 to the max logonum -1.
// logo: indicate the  chargelogo or powon logo that should be showed.

BOOL ReadLogoAndDisplay(WORD LogoIndex,LOGO Logo)
{
    //#ifdef SHIP_BUILD
    UINT16 *pBuffer;
    DWORD logosize;
    DWORD  index;

    pBuffer = (UINT16*)IMAGE_FRAMEBUFFER_UA_BASE;
   
    if (g_hSTORE == NULL)
    {

        OALMSG(OAL_INFO, (L"INFO: "
            L"g_hSTORE is not initted!\r\n"));
                  
        return FALSE;
    }

    if(Logo == POWONLOGO)
    {      
        if(LogoIndex >= PowonLogoNum)
        {
           return FALSE;
        }
        index = LogoIndex;
        if(!BootStoreSeek(g_hSTORE,LogoInfo[index].LocationOffSet))
        {
            OALMSG(OAL_INFO, (L"INFO: "
            L"seek to the PowonLogo fail in reserved region!\r\n"));
            
          return FALSE;
         }
    }
   
    else if(Logo == CHGLOGO)
    {
        if(LogoIndex >= ChgLogoNum)
        {
            return FALSE;
        }
        index = PowonLogoNum + LogoIndex;      
        if(!BootStoreSeek(g_hSTORE,LogoInfo[index].LocationOffSet))
        {
            OALMSG(OAL_INFO, (L"INFO: "
                L"seek to the chargelog fail in reserved region!\r\n" ));
           
            return FALSE;
         }      
    }
    else if(Logo == UPDATELOGO)
    {
      if(LogoIndex >= UpdateLogoNum)
      {
        return FALSE;
      }
      index = PowonLogoNum + ChgLogoNum + LogoIndex;
      
      if(!BootStoreSeek(g_hSTORE,LogoInfo[index].LocationOffSet))
        {
            OALMSG(OAL_INFO, (L"INFO: "
                L"seek to the chargelog fail in reserved region!\r\n" ));
           
            return FALSE;
         }      
    }

    if(LogoInfo[index].Pos.x != 0)
    {
       OALMSG(OAL_INFO, (L"INFO: "
            L"pos.x should be zero!!\r\n"));
      
       return FALSE;
    }
   
    pBuffer = pBuffer+ (LogoInfo[index].Pos.y *  LogoInfo[index].Pos.width);
    logosize = (LogoInfo[index].size)* 2;  
   
    if(BootStoreRead(g_hSTORE,pBuffer,LogoInfo[index].size *2) != LogoInfo[index].size * 2)               
    {
       OALMSG(OAL_INFO, (L"INFO: "
            L"Failed read logo info from reserved region!\r\n"
          ));   
         return FALSE;
    }  
    // Start display
    //BootStartDisplay(pBuffer,LCD_ARRAY_SIZE_TFT_16BIT);
//   #endif
   
    return TRUE;
}


在这段LOGO代码里面,哪一段是换图片需要修改的代码

最新回复

s_frameBuffer[320 * 240]  详情 回复 发表于 2009-3-27 16:28
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
好长的代码
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
static USHORT s_frameBuffer[320 * 240];
你去找找使用了这个变量的代码。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 xqhrs232 的回复:
好长的代码


同意
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
把那个数组换成你的图片数据应该就可以了。

-----------------------------------------------------
无论您是个人用户,还是企业用户;无论您是初学者,还是高手,飞凌嵌入式总有一款开发板适合您。飞凌嵌入式技术有限公司愿做您通往成功,成为高手的桥梁。飞凌值得信赖!!
飞凌嵌入式技术有限公司    http://www.witech.com.cn
咨询热线: 0312-3113161
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
s_frameBuffer[320 * 240]
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表