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

📄 l1_system.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
        L2_SetAFBSize(postCdspWidth, postCdspHeight);
        L2_SetBFBSize(postCdspWidth, postCdspHeight);
	//patch4.3@richie@zo marked
        //L2_SetDisplaySrcImgSize(postCdspWidth, postCdspHeight, G_DisplayType);
	//patch4.3@richie@zo
	L1_DisplayZoomIn(G_ucZoomFactor);

	//patch4.2@yichang@0520 for fix version4.1 bug of turning off display
	//L2_TurnOnOffDisplay(1);
	if ((XBYTE[0x2B00] & 0x01) == 0x00)
        {
        	L2_SetCMOSPreview();   //set the CMOS sensor back to decimation mode
                L2_WaitVD(0, 1);
        }

        L1_InitSPCA533(1);

        //patch4.4@yichang@for valid signal begin
        for(i=0;i<100;i++)
//                DELAY_1ms();//wendy@2004/8/14
		DELAY_10ms();

        //patch5.04@Joe@2003.5.14 9:41 mask begin
        /*
        while(((XBYTE[0x2DA0] & 0x04) == 0x04))
        {
                L2_CtrlScreen(1);
        }
        */
        //patch5.04@Joe@2003.5.14 9:41 mask end
        //patch4.4@yichang@for valid signal end

        //patch4.2@yichang@0520 for fix version4.1 bug of turning off display

        //patch5.03@Joe@2003.4.16 13:57 add begin
        if (OnOff > 0)
        	L2_TurnOnOffDisplay2(1);
        //patch5.03@Joe@2003.4.16 13:57 add end

        //PRINT_L1("    L1_InitPreview: Exit.\n");
}



//-----------------------------------------------------------------------------
//L1_InitPCCam
//-----------------------------------------------------------------------------
//PC-CAM mode related settings those are not handled by L2_InitXXX
void L1_InitPCCam(void) USING_0
{
        UCHAR revid;

//version4.0 richie@ps0503
        //USHORT postJpegWidth;
        //USHORT postJpegHeight;

//version4.0 richie@ps0503
	//G_usPostJpegWidth = 320;
        //G_usPostJpegHeight = 240;

//patch4.5@yichang@badpixel begin
#if (NANDF_OPTION == 1 && CARD_OPTION == 1)
        //Reading badpixel coordinate for sub-sample mode
        UCHAR blockNum, startBlock, pageNum, pageCnt;
        ULONG addr;
        USHORT badx, bady, tmp;
        USHORT i;
        USHORT offsetx, offsety;
	//UI_SensorPowerOnOff(1);//hx@test
        startBlock = 0;
        blockNum = 1;
        pageNum = 14;
        pageCnt = 2;
        offsetx = 45;
        offsety = 7;
//patch5.0@richie@sdram mapping begin
	for(i=startBlock;i<(blockNum + startBlock);i++)
        {
               addr =  (K_SDRAM_PreviewBufAddrB + K_SDRAM_PreviewBufSizeB) + (ULONG)(i-startBlock)*(G_Card_BlockSize/2);
	       NANDF_AccessReserveBlock(K_NANDF_Reserve_FlashToDram, i, pageNum, pageCnt,addr );

        }

        L2_SetSRAMDMA(0x0C00);
        L2_SetDRAMDMA(K_SDRAM_PreviewBufAddrB + K_SDRAM_PreviewBufSizeB);
        L2_DoDMA(0,1,1024,0,0);
//patch5.0@richie@sdram mapping end
        badx = bady = 0;
        L2_SetCDSPBadPixelMode(2);

        for(i=0;i<256;i++)
        {
                badx = XBYTE[0x1c00+i*4];
                tmp = (USHORT)(XBYTE[0x1c00+i*4+1] << 8);
                badx = tmp + badx;

                bady = XBYTE[0x1c00+i*4+2];
                tmp = (USHORT)(XBYTE[0x1c00+i*4+3] << 8);
                bady = tmp + bady;

                badx += offsetx;
                bady += offsety;

                L2_WriteCDSPBadPixel((UCHAR)i, badx, bady);
        }

        L2_SetCDSPBadPixelMode(1);
#endif
//patch4.5@yichang@badpixel end


#if Audio
#if EmbCodec
	L2_EnableAudStream(0x02, 0x00);
#endif
#if AC97
#endif
#endif

printf("G_usPostJpegWidth = %d,G_usPostJpegHeight = %d\n",G_usPostJpegWidth,G_usPostJpegHeight);
printf("G_MHSize = %d,G_MVSize = %d\n",G_MHSize,G_MVSize);

        XBYTE[0x21a6] = 1;      // enable color brightness/contrast boost
	//patch4.5@richie@hue
        XBYTE[0x21ac] |= 0x01;      // enable color saturation/hue boost

        L2_ReadRevID(&revid);
        //if (revid < 2)  //Revision A/B did NOT support JPEG vertical scaling
        //        postJpegHeight = G_MVSize - 13;
        L2_SetCamMode(0);
//patch4.3@richie@ra0603
        L2_SetFrontImgOffsetm((K_PCCamera_Adjust_Width >> 2) << 1, (K_PCCamera_Adjust_Height >> 2) << 1);
//patch4.3@richie@ra0603
        L2_SetFrontImgSizem((900 - K_PCCamera_Adjust_Width), (720 - K_PCCamera_Adjust_Height));
        L2_SetCMOSPreview();

        //Joe@2003.3.21 9:31 mask begin
	//L2_TurnOnOffDisplay(0);
	//Joe@2003.3.21 9:31 mask end

        L2_SetDisplayMode(0, 0);
//version4.0 richie@ps0503 begin
//patch4.3@richie@ra0603
//patch5.0@richie@sdram mapping begin
        //L2_SetCDSPScale(G_MHSize - K_PCCamera_Adjust_Width, G_usPostJpegWidth + 16);
		L2_SetCDSPScale(900 - K_PCCamera_Adjust_Width, G_usPostJpegWidth);
//patch5.0@richie@sdram mapping end
        L2_SetAFBAddr(K_SDRAM_PreviewBufAddrA);
        L2_SetRFBAddr(K_SDRAM_PreviewBufAddrA);
//patch4.3@richie@ra0603
        L2_SetAFBSize(G_usPostJpegWidth, (720 - K_PCCamera_Adjust_Height) - 13);
        L2_SetRFBSize(G_usPostJpegWidth, (720 - K_PCCamera_Adjust_Height) - 13);
        L2_SetACDSPWidth(G_usPostJpegWidth);
        L2_SetRCDSPWidth(G_usPostJpegWidth);
//patch4.3@richie@ra0603
        L2_SetJPEGVscale((720 - K_PCCamera_Adjust_Height) - 13, G_usPostJpegHeight);
//version4.0 richie@ps0503 end
	//patch4.4.1@richie@noncompress begin
	if (G_ucNonCompFlag == 0)
	{
        	L2_SetImageType(5);
	}
	//patch4.4.1@richie@noncompress end
        L1_InitSPCA533(4);   //Call platform-independent L2 initialization
	//DbgPrint("L2_TurnOnOffDisplay13=%bu\n",13);
     //   L2_SetGPIOBit(15,0);     //hx@2003.4.28 for mito turn off lcd//wendy
//        L2_SetGPIOBit(7,0);     //hx@2003.4.28 for mito turn off lcd//wendy

}

//-----------------------------------------------------------------------------
//L1_InitVideoClip
//-----------------------------------------------------------------------------
//patch3.2@cytsai@0328
void L1_InitVideoClip(void) USING_0
{
        USHORT i;
        ULONG  tmp0;

        //UCHAR error;
        //PRINT_L1("    L1_InitVideoClip: Enter.\n");

        //version4.0@yichang@0513
        //richie@ae0226 //cytsai@0328
        XBYTE[0x21a6] = 0;      // disable color brightness/contrast boost
	//patch4.5@richie@hue
  	XBYTE[0x21ac] &= 0xFE; 			// disable color saturation boost

        L2_InitSDRAM(3);

	for(i=0;i<0x0200;i++) XBYTE[0x1C00+i] = AVIHeader[i];

	//patch5.0@richie@avi size begin
	XBYTE[0x1C40] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1C41] = (UCHAR)(G_usVideoClip_Width>>8);
	XBYTE[0x1C44] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1C45] = (UCHAR)(G_usVideoClip_Height>>8);
        XBYTE[0x1CA0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CA1] = (UCHAR)(G_usVideoClip_Width>>8);
	XBYTE[0x1CA2] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CA3] = (UCHAR)(G_usVideoClip_Height>>8);
	XBYTE[0x1CB0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CB1] = (UCHAR)(G_usVideoClip_Width>>8);
	XBYTE[0x1CB4] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CB5] = (UCHAR)(G_usVideoClip_Height>>8);
        tmp0 = (ULONG)G_usVideoClip_Width*G_usVideoClip_Height*3;
	//patch5.0@richie@avi size end
	XBYTE[0x1CC0] = (UCHAR)(tmp0);      XBYTE[0x1CC1] = (UCHAR)(tmp0>>8);
	XBYTE[0x1CC2] = (UCHAR)(tmp0>>16);  XBYTE[0x1CC3] = (UCHAR)(tmp0>>24);

        if(G_FrameRate == 10 || G_FrameRate == 20)
        {
                XBYTE[0x1C20] = 0xA0; XBYTE[0x1C21] = 0x86;
                XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
		XBYTE[0x1C80] = 0xA0; XBYTE[0x1C81] = 0x86;
                XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
        }
        else if(G_FrameRate == 15 || G_FrameRate == 30)
        {
                XBYTE[0x1C20] = 0x6B; XBYTE[0x1C21] = 0x04;
                XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
		XBYTE[0x1C80] = 0x6B; XBYTE[0x1C81] = 0x04;
                XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
        }

        L2_SetSRAMDMA(0x0C00);
	//patch5.0@richie@sdram mapping begin
	L2_SetDRAMDMA(K_SDRAM_AviCapHeaderBufAddr);
	L2_DoDMA(1,0,0x0200,0,0);
	for(i=0;i<0x0104;i++) XBYTE[0x1C00+i] = VideoHeader[i];
	//patch5.0@richie@avi size begin
        XBYTE[0x1CE8] = (UCHAR)(G_usVideoClip_Height>>8); XBYTE[0x1CE9] = (UCHAR)(G_usVideoClip_Height);
	XBYTE[0x1CEA] = (UCHAR)(G_usVideoClip_Width>>8); XBYTE[0x1CEB] = (UCHAR)(G_usVideoClip_Width);
	//patch5.0@richie@avi size end

        L2_SetSRAMDMA(0x0C00);          // fill A video clip buffer
	L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrA);
	L2_DoDMA(1,0,0x0104,0,0);
        L2_SetSRAMDMA(0x0C00);          // fill B video clip buffer
	L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrB);
	L2_DoDMA(1,0,0x0104,0,0);
	//patch5.0@richie@sdram mapping end
//patch4.5@cytsai@AVI record begin
/*
        // Video chunk 0x19E0 ~ 0x19EF
        XBYTE[0x19E0] = 0x30;   XBYTE[0x19E1] = 0x30;
        XBYTE[0x19E2] = 0x64;   XBYTE[0x19E3] = 0x63;
        XBYTE[0x19E4] = 0x10;   XBYTE[0x19E5] = 0x00;
        XBYTE[0x19E6] = 0x00;   XBYTE[0x19E7] = 0x00;
        // Audio chunk 0x19D0 ~ 0x19DF
        XBYTE[0x19D0] = 0x30;   XBYTE[0x19D1] = 0x31;
        XBYTE[0x19D2] = 0x77;   XBYTE[0x19D3] = 0x62;
        XBYTE[0x19D4] = 0x00;   XBYTE[0x19D5] = 0x00;
        XBYTE[0x19D6] = 0x00;   XBYTE[0x19D7] = 0x00;
        XBYTE[0x19DC] = 0x00;   XBYTE[0x19DD] = 0x02;
        XBYTE[0x19DE] = 0x00;   XBYTE[0x19DF] = 0x00;
*/
//patch4.5@cytsai@AVI record end
        //PRINT_L1("    L1_InitVideoClip: Exit.\n");
}

//-----------------------------------------------------------------------------
//L1_InitPowerOn
//-----------------------------------------------------------------------------
void L1_InitPowerOn(void) USING_0
{
        //UCHAR error;
	USHORT i;
        UCHAR tmp;
        //patch4.3@yichang@0611 for version B/C chip co-exist
        tmp = MemStretch;
        MemStretch = 0x01;


        //PRINT_L1("    L1_InitPowerOn: Enter.\n");
        //power control

        //Joe@2003.2.27 15:01 mask begin
        //XBYTE[0x2039] |= 0x80;	//gpio14
        //XBYTE[0x2031] |= 0x80;	//gpio14
        //Joe@2003.2.27 15:01 mask end

         //Joe@2003.2.19 19:00 mask for don't on lcd power begin
        //XBYTE[0x2032] |= 0x01; //gpio16
         //Joe@2003.2.19 19:00 mask for don't on lcd power end

         //Joe@2003.2.27 15:01 mask begin
        //XBYTE[0x2039] |= 0x80;  //cytsai@0201
        //XBYTE[0x203A] |= 0x01;	//gpio16
        //Joe@2003.2.27 15:02 mask end

        XBYTE[0x201C] = 0x00;
	 //Joe@2003.2.19 19:05 mask for this pin is Sensor reset begin
        //Power On 15V
        //XBYTE[0x2038] |= 0x80;
        //XBYTE[0x2030] |= 0x80;
	 //Joe@2003.2.19 19:05 mask for this pin is Sensor reset end
	//richie@0402

  	for (i = 0;i < 35535;i++)
        	;//delay


        //TV hue and saturation adjustment
        XBYTE[0X2D22]=0X40;
        XBYTE[0X2D23]=0X02;

	    //patch4.5@ada@improve power to shot performance begin
        //Set the address indices
        //L2_SetDisplayType(G_DisplayType);
        //L2_SetACDSPWidth(G_Hsize);
        //L2_SetRCDSPWidth(G_Hsize);
        //L2_SetBCDSPWidth(G_Hsize);
        //L2_SetAFBSize(G_Hsize,G_Vsize);
        //L2_SetBFBSize(G_Hsize,G_Vsize);
        //L2_SetAFBAddr(K_SDRAM_FrameBufAAddr);
        //L2_SetRFBAddr(K_SDRAM_FrameBufAAddr);
        //L2_SetBFBAddr(K_SDRAM_FrameBufBAddr);
        //L2_SetAVLCAddr(K_SDRAM_VideoVlcBufAAddr);
        //L2_SetBVLCAddr(K_SDRAM_VideoVlcBufBAddr);
		//patch4.5@ada@improve power to shot performance end

        L2_SetFOSDAddr(K_SDRAM_CharFontBufAddr);

		//patch4.5@ada@improve power to shot performance begin
        //L2_SetDCTAddr(K_SDRAM_DcTermBufAddr);
        //L2_WriteQTable(1, G_Image_QTableIndex, 0); //K_Q85

        //Color Correction Matrix (add by Max according to CYWu's params)
        //L2_SetColorC(0X04A,0X1FD,0X1F0,  //A11,A12,A13
        //             0X000,0X03B,0X1F8,  //A21,A22,A23
		//			 0X000,0X1E0,0X04F); //A31,A32,A33
        //Inital WB setting (Add by Max)
        //L2_SetWB( 0X03,   //ROffset
        //          0X00,   //GrOffset
        //          0X02,   //BOffset
        //          0X00,   //GbOffset
        //          0X04C,   //RGain
        //          0X040,   //GrGain
        //          0X054,   //BGain
        //          0X040);   //GbGain
		//patch4.5@ada@improve power to shot performance end

        L1_InitSPCA533(0);   //Call platform-independent L2 initialization

	//Joe@2003.2.27 15:22 modify begin
	/*
        // Setting the Real Time Clock
        L2_WriteRTC(&G_DATEINFO);
        */
/*//wendy@2004/9/8
        L3_ReadRTCData(0x20, &tmp);
        if (tmp != 0x55)
        {
           L2_WriteRTC(&G_DATEINFO);
             L3_WriteRTCData(0x20, 0x55);
        }
*/
	//Joe@2003.2.27 15:22 modify end

        //patch4.3@yichang@0611 for version B/C chip co-exist
        MemStretch = tmp;
        // Load Bad Pixel Coordinates
        //L1_UpLoadBadPxlCoor((USHORT)(&Badcoor[0]));

        //yichang@patch4.3@0611 move to other place

        //Load 2 banks of font-based OSD data
        //FOSDtoDRAM(K_FOSD_Start_Bank, K_FOSD_Total_Bank, K_SDRAM_CharFontBufAddr);
        //Load 3 banks of graphic-based OSD data
	//GOSDtoDRAM(K_GRAFFONT_Width, K_GRAFFONT_Height, K_GOSD_Start_Bank, K_GOSD_Total_Bank, K_SDRAM_GrafFontBufAddr);

//ada@0207
/*        //CFA initialization
#ifdef CFAIDE
        L2_FlashMode(3,1,1);
        L2_CFInit(1,0x07,0x00);
        L2_CFReset(1);
#endif
#ifdef CFAMEM
        L2_FlashMode(4,1,1);
        L2_CFInit(0,0x07,0x00);
        L2_CFReset(0);
#endif
#ifdef SD
        if(L1_SDIdentification(512)!=0) error =1;
       	if(L1_SDCheckState()!=0) error =1;
        if(L1_SDSetBusMode(1)!=0) error =1;
        if(L1_SDEraseData(0 , 0x4000000)!=0) error =1;
#endif
*/
        //PRINT_L1("    L1_InitPowerOn: Exit.\n");
}

//-----------------------------------------------------------------------------
//L1_InitPlayback
//-----------------------------------------------------------------------------
// Playback mode related settings those are not handled by L2_InitXXX
// display device TV / STNLCD
// JPEG image size  : 1152x864
// Decompression to : 1152x864
// Scale down to    : 240x160 (G_DSPHsize x G_DSPVsize)
// Display buffer index : B fram buffer index
void L1_InitPlayback(void) USING_0
{

⌨️ 快捷键说明

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