📄 downloadthread.h
字号:
#if !defined(AFX_DOWNLOADTHREAD_H__F50CE256_8EE7_4459_BB62_EAAF94F83115__INCLUDED_)
#define AFX_DOWNLOADTHREAD_H__F50CE256_8EE7_4459_BB62_EAAF94F83115__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DownloadThread.h : header file
//
#include "SerialComm.h"
#include "FlashDescription.h"
#include "FlashSectorList.h"
#include "FlashCharacteristic.h"
#define DL_THREAD_LOCKED 0
#define DL_THREAD_RUNNING 1
#define DL_THREAD_WORKING 2
#define DL_MSG_WORK_GO WM_USER+1
#define DL_MSG_TARGETDETECT WM_USER+2
#define DL_MSG_DLLOADER WM_USER+3
#define DL_MSG_PROGRESS WM_USER+4
#define DL_MSG_ERR WM_USER+5
#define DL_MSG_WORK_CANCEL WM_USER+6
#define DL_MSG_WORK_DONE WM_USER+7
#define DL_MSG_THREAD_EXIT WM_USER+8
enum
{
BOOT_CREQ5087_4_ERR,
SEND_BOOT_CONFIRM_ERR,
CLEAR_DTR_ERR,
DL_TARGET_DETECTED,
SEND_SYSTEM_CFG_ERR,
SEND_JUMP_ADDR_ERR,
SEND_CHAR_ERR,
BOOT_CCON_ERR,
STACK_POINTER_ERR,
FLASH_TYPE_ACK_ERR,
FLASH_TYPE_READ_ERR,
FLASH_TYPE_UNKNOWN,
SET_GPIO_ERR,
CHANGE_SPEED_ERR,
DOWNLOAD_MODULE_ERR,
GET_SECTOR_LIST_ERR,
GET_SECTOR_SIZE_ERR,
DOWNLOAD_SECTOR_ERR,
TFS_INIT_ERR,
TFS_WRITE_VER_ERR,
TFS_WRITE_PATH_ERR,
TFS_WRITE_FILE_ERR,
ERASE_SECTOR_ERR,
DL_LOADER_DONE,
DL_FLASH_ERASE,
DL_FLASH_BIN_LOADING,
DL_FLASH_TFS_LOADING,
};
/////////////////////////////////////////////////////////////////////////////
// CDownloadThread thread
class CDownloadThread : public CWinThread
{
DECLARE_DYNCREATE(CDownloadThread)
protected:
CDownloadThread(); // protected constructor used by dynamic creation
// Attributes
public:
BYTE* m_pFileClaData;
BYTE* m_pFileTFSData;
CSerialComm m_CommPort;
CFile m_FileTrace;
CFile m_fileBin;
CFile m_fileTfs;
CWnd* m_pWnd;
HANDLE m_hEvt;
int m_nThreadState;
UINT m_nPercent;
UINT m_nBaudRatePos;
BOOL m_bPortInit;
BOOL m_bStop;
BOOL m_bRun;
int m_nPort;
int m_nBaudRate;
int m_nDownloadMode; // 0 = BIN & TFS , 1 = BIN Only , 2 = TFS Only
CString m_strBinPathName;
CString m_strTfsPathName;
BYTE m_FlashManufacturer;
BYTE m_FlashId;
DWORD m_dwBinLength;
DWORD m_dwTfsLength;
// Operations
public:
BOOL SetOwner(CWnd* pView);
void ResetEvt();
void SetEvt();
int GetThreadState();
void CancelDload();
HANDLE GetThreadHandle();
void Destroy();
void SetRunFlag(BOOL bRun);
BOOL SetBaud(int nBaud);
BOOL SetPort(int nPort);
BOOL SetDownloadMode(int nDownloadMode);
BOOL SetBinPathName(CString szBinPathName);
BOOL SetTfsPathName(CString szTfsPathName);
BOOL InitFlashDescription();
BOOL InitTFSDescription(CString TfsFileName);
void WriteFileTrace(CString strData);
BOOL InitCommPort(UINT nBaud);
BOOL ReadCharFromUart(clock_t lTimeout, BYTE *byReceivedChar);
BOOL WriteCharToUart(BYTE txChar);
BOOL DownloadStart();
BOOL SendFirstRecord();
BOOL SendToRam();
BOOL GetTypeFlash();
void DisplayFlashName();
BOOL GetFlashIndex(BYTE* Index);
BOOL SetGPIO();
BOOL SetSpeedAndPMU();
BOOL ChangeSpeed();
BOOL SpeedControl();
BOOL DownloadExtendMobule();
BOOL FileOpen();
BOOL SendToFlash();
BOOL DownloadSoftware(UINT vp_AddrBase);
BOOL GetSectorList(CFlashSectorList* pp_FlashSectorList, UINT vp_StartAddress, DWORD vp_SectionSize);
BOOL GetSectorNumberWithStartAddr(UINT vp_StartAddress, UINT* pp_SectorNumber);
BOOL GetSectorSize(UINT vp_SectorNb, UINT* pp_SectorSize);
BOOL DownloadSectorCommand(UINT vp_StartAddress, UINT vp_SectorSize, UINT vp_BlockSize);
BOOL NandFormat();
BOOL DownloadTFSSoftware();
BOOL TFS_Init();
BOOL TFS_WriteVersion();
BOOL TFS_WritePath(int PathNum);
BOOL TFS_WriteFile(int FileNum, UINT *pCheckSum, UINT *pNbrCharSent);
BOOL SwitchOffCommand();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDownloadThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CDownloadThread();
// Generated message map functions
//{{AFX_MSG(CDownloadThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DOWNLOADTHREAD_H__F50CE256_8EE7_4459_BB62_EAAF94F83115__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -