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

📄 burnflash.h

📁 在高通的手机平台下,一个下载手机.bin文件到手机的flash中的工具,包含PC端的程序代码和运行在基带处理器中的代码.
💻 H
字号:
// NAME: BurnFlash.h
/*
 when        who                 what, where, why
 --------  --------     ---------------------------------------------------------------
 01/20/05  nony.wu      fixed bugs to support baudrate change
 ============================================================================ */

#ifndef BURN_FLASH_H
#define BURN_FLASH_H

#ifndef __cplusplus
#error "This is a C++ header file; it requires C++ to compile."
#endif

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//--------------------------------------------------------------------------------------------------
//                                           ENUMS
//--------------------------------------------------------------------------------------------------
enum result_type
{
	SUCCESS,
	ERR_NO_VALID_RAM_FILE,
	ERR_NO_VALID_PHONE_FILE,
	ERR_NO_VALID_FILE,
	ERR_NO_VALID_TARGET_FILE,
	ERR_SND_CHG_TO_OFFLINE_CMD,
	ERR_SND_DLOAD_CMD,
	ERR_SND_RAM_FILE,
	ERR_COMM_FAIL,
	ERR_ERASE_FLASH_FAIL,
	ERR_WRITE_FLASH_FAIL,
	ERR_RESET_PHONE_FAIL,
	ERR_UNKNOWN
} ;

enum cmd_code_type
{
	CMD_WRITE  = 0x01,	 /* Write a block of data to memory (received)    */
	CMD_ACK    = 0x02,	 /* Acknowledge receiving a packet  (transmitted) */
	CMD_NAK    = 0x03,	 /* Acknowledge a bad packet        (transmitted) */
	CMD_ERASE  = 0x04,	 /* Erase a block of memory         (received)    */
	CMD_GO     = 0x05,	 /* Begin execution at an address   (received)    */
	CMD_NOP    = 0x06,	 /* No operation, for debug         (received)    */
	CMD_PREQ   = 0x07,	 /* Request implementation info     (received)    */
	CMD_PARAMS = 0x08,	 /* Provide implementation info     (transmitted) */
	CMD_DUMP   = 0x09,	 /* Debug: dump a block of memory   (received)    */
	CMD_RESET  = 0x0A,	 /* Reset the phone                 (received)    */
	CMD_UNLOCK = 0x0B,	 /* Unlock access to secured ops    (received)    */
	CMD_VERREQ = 0x0C,	 /* Request software version info   (received)    */
	CMD_VERRSP = 0x0D,	 /* Provide software version info   (transmitted) */
	CMD_PWROFF = 0x0E,	 /* Turn phone power off            (received)    */
	CMD_READ_CODE_FLASH  = 0x80,
	CMD_ERASE_CODE_FLASH = 0x81,
	CMD_WRITE_CODE_FLASH = 0x82,
	CMD_READ_DATA_FLASH  = 0x83,
	CMD_ERASE_DATA_FLASH = 0x84,
	CMD_WRITE_DATA_FLASH = 0x85,
	CMD_CHANGE_BAUD_RATE = 0x90
};
enum baud_rate_type
{
 UART_576K_BPS=0,
 UART_1152K_BPS=1,
 UART_2304K_BPS=2,
 UART_4608K_BPS=4
};
//--------------------------------------------------------------------------------------------------
//                                         CLASS
//--------------------------------------------------------------------------------------------------
struct pkt_buffer_type;
class CProcDiag;

class CBurnFlash  
{
private:
	pkt_buffer_type		*m_packet_snd;
	BYTE				m_rcv_buf[MAX_PACKET_LEN];
	CProcDiag*			m_pDiag;

public:
	CBurnFlash();
	virtual ~CBurnFlash();

	int	LoadData(char* strFile, DWORD dwDstAddr,DWORD dwSpaceSize, BOOL bCode, BOOL bInitial = TRUE);
	int EraseFlash(DWORD dwDstAddr, DWORD dwSpaceSize, BOOL bCode, BOOL bInitial = TRUE);	
	BOOL ResetPhone();
private:
	BOOL RAMFileExist();
	int  LoadRAMFile(char* strFile);
	BOOL SendAndWaitRsp();	

	void FormWriteCMD(DWORD dwDstAddr, BYTE* pBuf, WORD wLen);
	void FormGoCMD(DWORD dwDstAddr);
	void FormEraseFlashCMD(DWORD dwAddrDst, DWORD dwLen, BOOL bCode);
	void FormWriteFlashCMD(DWORD dwAddrDst, BYTE* pBuf, DWORD dwLen, BOOL bCode);
	void FormResetCMD();
    void FormChangeBaudRateCMD(baud_rate_type baud_rate);
};

extern CBurnFlash	theFlash;
//--------------------------------------------------------------------------------------------------
#endif  // BURN_FLASH_H

⌨️ 快捷键说明

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