IAP在線升級模塊詳細設計說明


 

1 編寫目的5

2 術語、定義和縮略語5

2.1 術語、定義 5

2.2 縮略語 5

3 模塊描述5

3.1 Flash的特性 5

3.2 Flash的資源划分 5

3.3 MCU 中斷的使用方式 5

3.3.1 Cortex-M3內核系列MCU中斷向量表重定位6

3.4 MCU復位后的硬件外設初始化 6

4 標准模塊6

5 模塊設計6

5.1 Flash空間划分 6

5.2 異步事件處理機制 7

5.3 命令處理 7

5.3.1 BLAPP對命令的支持7

6 數據描述7

6.1 數據結構說明 7

6.1.1.1 宏定義 7

6.1.1.1.1 Flash資源 7

6.1.1.1.2 鏈路層協議 9

6.1.1.2 結構體/聯合/枚舉 定義 9

6.1.1.2.1 Flash資源 9

6.1.1.2.2 異步事件 10

6.1.1.2.3 鏈路層協議 10

6.1.1.2.4 命令實現 11

6.2 全局變量說明 12

6.3 數據庫說明 12

7 函數定義12

7.1 引用函數定義 12

7.2 內部函數定義 13

7.2.1 鏈路層協議13

7.2.1.1 Mid_Tul_CheckCrc16 13

7.2.1.2 Mid_Tul_CheckTulLengthField 13

7.2.1.3 Mid_Tul_GetCmdFunc 13

7.2.1.4 Mid_Tul_GetCmdFuncTableAddr 13

8 接口設計13

8.1 用戶接口 13

8.1.1 Flash資源13

8.1.1.1 Drv_Flash_AppChecksum_GetChecksumInfo 13

8.1.1.2 Drv_Flash_AppChecksum_UpdataChecksumInfo 14

8.1.1.3 Drv_Flash_FlagOpt_GetFlagInfo 14

8.1.1.4 Drv_Flash_FlagOpt_SetFlagInfo 14

8.1.2 異步事件14

8.1.2.1 App_SysEvt_SetEventFlag 14

8.1.2.2 App_SysEvt_GetEventFlag 14

8.1.3 鏈路層協議15

8.1.3.1 Mdi_Tul_UpperLayerCmdAnalysis 15

8.1.4 命令實現15

8.1.4.1 App_TulIap_CheckRunSpace 15

8.1.4.2 App_TulIap_ModifyRunSpace 15

8.1.4.3 App_TulIap_CheckObligateVersionFileSize 15

8.1.4.4 App_TulIap_TransmitVersionFile 16

8.1.4.5 App_TulIap_TransmitVersionFilePara 16

8.2 硬件接口 16

8.2.1 Flash資源16

8.2.1.1 Drv_Flash_InitialPara 16

8.2.1.2 Drv_Flash_ErasePagesWrite 16

8.2.1.3 Drv_Flash_Read 16

8.2.1.4 Drv_Flash_EraseVersionFileSpace 17

8.2.1.5 Drv_Flash_UpdataVersionFileSpace 17

8.2.1.6 Drv_Flash_Test_ReadWriteTest Condition 17

8.3 軟件接口 17

8.3.1 規范接口17

8.3.2 非規范接口17

9 其它說明17

10 參考資料17


編寫目的

本文檔的編寫目的在於詳細的說明IAP在線升級模塊中的設計思路以及實現細節,以利於后續程序員參考實現。

 

術語、定義和縮略語

2.1 術語、定義

 

2.2 縮略語

IAP

In Application Program

MCU

Microprogrammed Control Unit

BL

Bootloader

APP

Application

IVT

Interrupt Vector Table

TUL

To Upper Layer

 

 模塊描述

實現IAP主要有以下幾個要點

1) Flash的特性,以及資源划分

2) MCU中斷的使用方式

3) MCU復位后的硬件外設初始化

 

3.1 Flash的特性

IAP的全稱是In Application Program,即在應用編程。MCU的應用程序中,通過在線擦除指定Flash區域,編程Flash區域來實現待升級版本文件(通常是.bin文件)的保存,因此要求Flash必須是可持續擦除和編程的。

 

3.2 Flash的資源划分

在一般的IAP應用中,分為BL程序和APP程序,即在MCU的存儲空間內,BL程序和APP程序是共存的,因此需要對Flash地址做合理的規划,方便對Flash地址空間做有效的管理。一般的IAP應用將Flash划分為以下幾個區間:

  • BL程序區間(必須位於MCU的啟動地址處)
  • APP程序區間
  • BL程序的全局參數存儲區間
  • APP程序的全局參數存儲區間
  • APP程序的檢驗區間
  • BL程序的備份區間(也叫2BL,用於對1BL程序做IAP升級)

 

3.3 MCU 中斷的使用方式

MCU應用中,通常會使用中斷Interrupt和外設進行數據交換。如果不能使用中斷的交互方式,需要在程序結構和數據處理過程上計算處理周期,以保證數據的完整性。MCU中存放中斷的地方叫做IVT,當程序發生中斷時,首先是在IVT里查找對應的中斷源地址,從而執行中斷程序的。

IAP應用中,MCUFlash中需要同時存儲BL程序和APP程序,也就意味着這兩塊程序會共用IVT,不論BL還是APP如果不能使用中斷處理鏈路通訊,對數據完完整性會產生影響。

因此,這里會涉及到IVT的重定位問題。

 

3.3.1 Cortex-M3內核系列MCU中斷向量表重定位

Cortex-M3內核MCU中,IVT可以支持重定位此操作:

 

#define NVIC_VectTab_FLASH            ((uint32_t)0x08000000)

#define mFlashAddr_Application_Start                 0x0800C000

NVIC_SetVectorTable(NVIC_VectTab_FLASH, mFlashAddr_Application_Start);

 

3.4 MCU復位后的硬件外設初始化

MCU的當前邏輯運行區間發生轉換時,MCU都會復位,因此在BLAPP程序里需要對響應的硬件外設資源做正確的初始化配置。

 

標准模塊

 

模塊設計

5.1 Flash空間划分

/************************************************************************

    STM32F103ZE flash total size is  256K

    Single page size is              2K

    Total pager number is            256

 

    |-----------------------|  0x08000000

    | Boot                  |

    | 48K Bytes             |

    |-----------------------|  0x0800C000

    | App                   |

    | 202K Bytes            |

    |-----------------------|  0x0803E800

    | Boot Para             |

    | 2K Bytes              |

    |-----------------------|  0x0803F000

    | App Para              |

    | 2K Bytes              |

    |-----------------------|  0x0803F800 -> |------------|-----------|---------------|

    | Apps CheckSum         |                | App Size   | App CRC   | KeepBytes     |

    | 2K Bytes              |                | 4 Bytes    | 4 Bytes   | 2K-8 Bytes    |

    |-----------------------|  0x0803FFFF

 

 ************************************************************************/

 

如上所示:

1) MCU的起始地址是0x08000000

2) BL程序分配20Kbytes

3) APP程序分配102KBytes

4) BL Para區間分配2Kbytes

5) APP Para區間分配2KBytes

6) Apps CheckSum區間分配2KBytes

 

5.2 異步事件處理機制

本系統采用異步事件處理機制,即中斷源處理作為前台事件,Main函數作為后台處理,在前台事件中標識事件源,在后台處理事件源。

 

5.3 命令處理

根據《繪畫板系列接口協議_Ver X.xx》文檔,整個IAP流程需要用到以下命令:

  • 命令3001,獲取下位機運行區間
  • 命令3002,設置下位機運行區間
  • 命令3003,獲取下位機預留的Flash空間大小
  • 命令3004,向下位機傳輸待升級版本文件
  • 命令3005,向下位機傳輸版本文件參數信息

 

5.3.1 BLAPP對命令的支持

 

命令3001

命令3002

命令3003

命令3004

命令3005

BL程序

 

APP程序

 

 

 

 

數據描述

6.1 數據結構說明

6.1.0.1 宏定義

6.1.0.1.1 Flash資源

#if CVIEW("公用資源")

 

/* 定義Flash一頁數據大小 */

#define mFlashPageSize                               2048

/* 獲取所在頁面地址 */

#define mFunc_Drv_FlashGetPageAddr(addr)             (addr&0xFFFFF800)   

/* 獲取所在頁面偏移地址 */

#define mFunc_Drv_FlashGetPageOffset(addr)           (addr&0x000007ff)

/* 獲取指定范圍Flash的頁面數量 */

#define mFunc_Drv_FlashSpecialRangePageNum(startAddr, endAddr) ((endAddr-startAddr)/mFlashPageSize)

 

#endif // #if CVIEW("公用資源")

 

#if CVIEW("地址規划")

 

#if CVIEW("Boot")

/* Boot*/

#define mFlashAddr_Bootloader_Start                  0x08000000

#define mFlashSize_Bootloader                        (10*mFlashPageSize)

#define mFlashAddr_Bootloader_End                    (mFlashAddr_Bootloader_Start + mFlashSize_Bootloader - 1)

#endif // #if CVIEW("Boot")

 

#if CVIEW("App")

/* App*/

#define mAppliacationAddress                         (uint32_t)0x08005000

#define mFlashAddr_Application_Start                 0x08005000

#define mFlashSize_Application                       (51*mFlashPageSize)

#define mFlashAddr_Application_End                   (mFlashAddr_Application_Start + mFlashSize_Application - 1)

#endif // #if CVIEW("App")

 

#if CVIEW("Boot Para")

/* Boot參數區 */

#define mFlashAddr_BootPara_Start                    0x0801E800

#define mFlashSize_BootPara                          (1*mFlashPageSize)

#define mFlashAddr_BootPara_End                      (mFlashAddr_BootPara_Start + mFlashSize_BootPara - 1)

#endif // #if CVIEW("App Para")

 

#if CVIEW("App Para")

/* App參數區 */

#define mFlashAddr_AppPara_Start                     0x0801F000

#define mFlashSize_AppPara                           (1*mFlashPageSize)

#define mFlashAddr_AppPara_End                       (mFlashAddr_AppPara_Start + mFlashSize_AppPara - 1)

#endif // #if CVIEW("App Para")

 

#if CVIEW("App Checksum")

/* Apps校驗區 */

#define mFlashAddr_AppChecksum_Start                 0x0801F800

#define mFlashSize_AppChecksum                       (1*mFlashPageSize)

#define mFlashAddr_AppChecksum_End                   (mFlashAddr_AppChecksum_Start + mFlashSize_AppChecksum - 1)

#endif // #if CVIEW("Apps Checksum")

 

#endif // #if CVIEW("地址規划")

 

6.1.0.1.2 鏈路層協議

#define mTul_FrameBootCode_Dn                        0xCD

#define mTul_FrameBootCode_Up                        0xAC

 

#define mTul_CmdFrameStruct_BootCode_Size            (1)

#define mTul_CmdFrameStruct_SubsequentLength_Size (2)

#define mTul_CmdFrameStruct_CmdCode_Size             (2)

#define mTul_CmdFrameStruct_CrcBytes_Size            (2)

#define mTul_CmdFrameStruct_CmdPara_Size             \

                    (mTul_Cmd_Array_Size - mTul_CmdFrameStruct_BootCode_Size \

                                        - mTul_CmdFrameStruct_SubsequentLength_Size \

                                        - mTul_CmdFrameStruct_CmdCode_Size \

                                        - mTul_CmdFrameStruct_CrcBytes_Size)

 

#define mTul_RspFrameStruct_BootCode_Size            (1)

#define mTul_RspFrameStruct_SubsequentLength_Size  (2)

#define mTul_RspFrameStruct_CmdCode_Size             (2)

#define mTul_RspFrameStruct_StatusCode_Size          (1)

#define mTul_RspFrameStruct_CrcBytes_Size            (2)

#define mTul_RspFrameStruct_CmdPara_Size             \

                    (mTul_Rsp_Array_Size - mTul_RspFrameStruct_BootCode_Size \

                                        - mTul_RspFrameStruct_SubsequentLength_Size \

                                        - mTul_RspFrameStruct_CmdCode_Size \

                                        - mTul_RspFrameStruct_StatusCode_Size \

                                        - mTul_RspFrameStruct_CrcBytes_Size)

 

6.1.0.2 結構體/聯合/枚舉 定義

6.1.0.2.1 Flash資源

typedef enum enumFlash_AppChecksum_Kind{    // App校驗區枚舉類型

    eFlash_AppChecksum_Kind_Size,

    eFlash_AppChecksum_Kind_Crc,

}E_Flash_AppChecksum_Kind;

 

typedef enum enumFlash_FlagKind{            // Flash操作相關枚舉

    eFlash_FlagKind_VersionFileTrans,

    eFlash_FlagKind_VersionFileChecksumTrans,

}E_Flash_FlagKind;

 

typedef struct structFlash_AppChecksum{    // App校驗區數據結構

    UINT32 ulAppSize;

    UINT32 ulAppCrc;

}T_Flash_AppChecksum;

 

typedef struct structFlashOptFlag{           // Flash操作相關數據結構

    UINT8 bVersionFileTransDoneFlag               : 1;

    UINT8 bVersionFileChecksumTransDoneFlag     : 1;

    UINT8 bKeepBits                                  : 6;

}T_Flash_OptFlag;

 

6.1.0.2.2 異步事件

// 定義系統標志位結構體

typedef struct struct_SystemEventFlag{

    UINT32 ulSysEventFlag_RevUsbFrame    : 1;              // 系統事件枚舉,接收到UsbFrame

    UINT32 ulSysEventFlag_KeyPressed     : 1;             // 系統事件枚舉,按鍵

    UINT32 ulSysEventFlag_SysReset       : 1;              // 系統事件枚舉,系統復位

    UINT32 ulSysEventFlag_KeepBits       : 29; // 系統時間標志位,保留位

}T_SystemEventFlag;

 

// 定義系統標志位枚舉

typedef enum enum_SystemEventFlag{

    E_SystemEventFlag_SystemReset,                        // 系統事件枚舉,復位系統

    E_SystemEventFlag_KeyPressed,                        // 系統事件枚舉,按鍵

    E_SystemEventFlag_RevUsbFrame,                        // 系統事件枚舉,接收到UsbFrame

}E_SystemEventFlag;

 

6.1.0.2.3 鏈路層協議

// 定義TUL層命令應答結構體

typedef struct struct_SystemResourceTul{

    UINT8 aucTulCmdFrame[TUL_CMD_ARRAY_SIZE];              // 定義Tul層命令緩存

    UINT16 usCmdFrameCnt;                                        // 定義Tul層命令緩存指針計數器

    UINT16 usCmdSubsequentLength;                                // 定義Tul層命令幀中長度字段后續數據長度

    UINT16 usCmdTotalLen;                                        // 定義Tul層命令幀全長緩存

    UINT8 aucTulRspFrame[TUL_RSP_ARRAY_SIZE];                // 定義Tul層應答緩存

    UINT16 usRspTotalLen;                                        // 定義Tul層應答幀全長緩存

    BOOL bReiceveCmdFrameStartFlag;                             // 定義命令接收標志位

    BOOL bReiceveCmdFrameEndFlag;                                // 定義命令接收標志位

}T_SystemResource_Tul;

 

// 出錯類別表

typedef enum {

    E_TulErrorCode_Success                   = 0x00, // 正確

    E_TulErrorCode_BootCodeError             = 0x01, // 引導碼錯誤

    E_TulErrorCode_CmdFrameParaLengthError = 0x02, // 命令參數長度錯誤

    E_TulErrorCode_CmdCodeError              = 0x03, // 命令碼錯誤

    E_TulErrorCode_CrcCodeError              = 0x04, // CRC錯誤

    E_TulErrorCode_CmdParaError              = 0x10, // 命令參數錯誤

}T_TulErr;

 

// 命令類型

typedef enum enum_TulCmdKind{

    Tul_Cmd_Kind_Check               = 0x10,          // 查詢類命令

    Tul_Cmd_Kind_IapProtocol         = 0x30,          // IAP在線升級類命令

}T_TulCmdKind;

 

// 適用於鏈路層協議解析的通用函數指針

typedef T_TulErr (*PT_CmdFunc)(const UINT8 *paucUpperLayerCmdPara, UINT8 *paucRspPara, UINT16 *pusRetParaLen);

 

// 命令函數入口表數據結構

typedef struct tagTulCmdFuncTable{

    UINT8 ucCmdSn;                                   // 命令流水號

    PT_CmdFunc ptCmdFunc;                            // 命令函數指針

}T_TulCmdFuncTable;

 

// 命令類型索引表結構體

typedef struct tagTulCmdKindIndex{

    T_TulCmdKind tCmdKind;                           // 命令類型

    const T_TulCmdFuncTable *ptCmdFuncTable;         // 命令類型對應的命令入口函數碼表

}T_TulCmdKindIndex;

 

// 解析幀所用參數結構體

typedef struct tagTulAnalysisPara{

    T_TulErr tCmdFrameAnalysisRst;           // 命令幀解析結果

    UINT8 ucCmdKind;                         // 上位機命令類型

    UINT8 ucCmdSn;                           // 上位機命令在對應命令碼表中的流水號

    UINT8 *pucRspParaAddr;                   // 應答參數的緩存地址

    UINT8 *pucUpperLayerCmdParaAddr;         // 上位機命令參數的緩存地址

}T_TulAnalysisPara;

 

6.1.0.2.4 命令實現

// 定義查詢下位機運行區間命令

typedef struct struct_TulRspPara_Iap_CheckReaderRunSapce{

    UINT8 ucRunSpace;                            // 運行區間

}T_TulRspPara_Iap_CheckReaderRunSpace;

 

// 定義設置下位機運行區間命令

typedef struct struct_TulCmdPara_Iap_SetReaderRunSapce{

    UINT8 ucRunSpace;                            // 運行區間

}T_TulCmdPara_Iap_SetReaderRunSpace;

 

// 定義查詢下位機預留Flash空間大小命令

typedef struct struct_TulRspPara_Iap_CheckObligateVersionFileSize{

    UINT32 ulVersionFileSize;                    // 升級文件大小

}T_TulRspPara_Iap_CheckObligateVersionFileSize;

 

// 定義向下位機傳輸版本文件命令

typedef struct struct_TulCmdPara_Iap_TransmitVersionFile{

    UINT8 bPackageEndFlag;                       // 包結束標識符

    UINT16 usPackageSn;                          // 包序號

    UINT16 usPackageLength;                      // 包長度

    UINT8 aucPackageMessage[1];                  // 包信息

}T_TulCmdPara_Iap_TransmitVersionFile;

 

// 定義向下位機傳輸版本文件參數信息命令

typedef struct struct_TulCmdPara_Iap_TransmitVersionFilePara{

    UINT32 ulVersionFileLength;                  // 升級文件長度

    UINT32 ulVersionFileCrc;                     // 升級文件Crc

}T_TulCmdPara_Iap_TransimitVersionFilePara;

 

 

6.2 全局變量說明

static T_TulAnalysisPara tTulAnalysisPara;   // 解析用參數定義

static T_SystemEventFlag tSysEventFlag;                // 定義系統事件標志位

const T_TulCmdFuncTable atCmdFuncTable_IapProtocol[]; // IAP命令碼表

static T_Flash_AppChecksum tFlash_AppChecksum;           // AppsChecksum校驗數據緩存

static T_Flash_OptFlag tFlash_OptFlag;                   // Flash操作標志位緩存

 

6.3 數據庫說明

 

函數定義

7.1 引用函數定義

 

7.2 內部函數定義

7.2.1 鏈路層協議

7.2.1.1 Mid_Tul_CheckCrc16

// 函數名稱:Mid_Tul_CheckCrc16

// 函數功能:檢查CRC16

// 函數輸入:UINT8* paucUpperLayerCmdMsg,接收到的上層命令數據

//          UINT16 usReceiveUpperLayerTotalLen,接收到上層數據的總長度

// 函數輸出:無

// 函數返回:0表示CRC不一致,1表示CRC一致

 

7.2.1.2 Mid_Tul_CheckTulLengthField

// 函數名稱:Mid_Tul_CheckTulLengthField

// 函數功能:檢查長度字段

// 函數輸入:UINT8* paucUpperLayerCmdMsg,接收到的上層命令數據

//          UINT16 usReceiveUpperLayerTotalLen,接收到上層數據的總長度

// 函數輸出:無

// 函數返回:0表示不一致,1表示一致

 

7.2.1.3 Mid_Tul_GetCmdFunc

// 函數名稱:GetCmdFuncWithCmdSn

// 函數功能:獲取命令執行函數地址

// 函數輸入:UINT8 ucCmdKind,命令類型

//          UINT8 ucCmdSn,命令序列號

// 函數輸出:無

// 函數返回:PT_CmdFunc ptCmdFunc,命令執行函數

 

7.2.1.4 Mid_Tul_GetCmdFuncTableAddr

// 函數名稱:Mid_Tul_GetCmdFuncTableAddr

// 函數功能:獲取命令碼類型對應的碼表地址

// 函數輸入:UINT8 ucCmdKind,命令類型

// 函數輸出:無

// 函數返回:T_TulCmdFuncTable *ptCmdFuncTable,命令類型對應的碼表

 

接口設計

8.1 用戶接口

8.1.1 Flash資源

8.1.1.1 Drv_Flash_AppChecksum_GetChecksumInfo

// 函數名稱:Drv_Flash_AppChecksum_GetChecksumInfo

// 函數功能:獲取AppsChecksum校驗區的校驗信息,在正確讀取后不需要對SizeCrc做大小端轉換,這里由Updata操作確保寫入時是小端寫入

// 函數輸入:E_Flash_AppChecksum_Kind eAppChecksumKind

// 函數輸出:tFlash_AppsChecksum

// 函數返回:UINT32

 

8.1.1.2 Drv_Flash_AppChecksum_UpdataChecksumInfo

// 函數名稱:Drv_Flash_AppChecksum_UpdataChecksumInfo

// 函數功能:更新AppsChecksum校驗區的校驗信息,確保函數輸入數據為小端數據

// 函數輸入:E_Flash_AppsChecksum_Kind eAppChecksumKind, UINT32 ulSizeOrCrcData

// 函數輸出:tFlash_AppsChecksum

// 函數返回:無

 

8.1.1.3 Drv_Flash_FlagOpt_GetFlagInfo

// 函數名稱:Drv_Flash_FlagOpt_GetFlagInfo

// 函數功能:查詢Flash操作相關標志位

// 函數輸入:E_Flash_FlagKind eFlashFlagKind

// 函數輸出:tFlash_OptFlag

// 函數返回:BOOL

 

8.1.1.4 Drv_Flash_FlagOpt_SetFlagInfo

// 函數名稱:Drv_Flash_FlagOpt_SetFlagInfo

// 函數功能:查詢Flash操作相關標志位

// 函數輸入:E_Flash_FlagKind eFlashFlagKind, BOOL bStatus

// 函數輸出:tFlash_OptFlag

// 函數返回:無

 

8.1.2 異步事件

8.1.2.1 App_SysEvt_SetEventFlag

// 函數名稱:App_SysEvt_SetEventFlag

// 函數功能:設置系統事件標志位

// 函數輸入:E_SystemEventFlag eEventFlag,系統事件標志位

//          BOOL bStatus,待設置內容

// 函數輸出:tSystemEventFlag

// 函數返回:無

 

8.1.2.2 App_SysEvt_GetEventFlag

// 函數名稱:App_SysEvt_GetEventFlag

// 函數功能:獲取系統事件標志位

// 函數輸入:E_SystemEventFlag eEventFlag,系統事件標志位

// 函數輸出:tSystemEventFlag

// 函數返回:BOOL

 

8.1.3 鏈路層協議

8.1.3.1 Mdi_Tul_UpperLayerCmdAnalysis

// 函數名稱:Mid_Tul_UpperLayerCmdAnalysis

// 函數功能:上層命令解析

// 函數輸入:UINT8* paucUpperLayerCmdMsg,接收到的上層命令數據

//          UINT8* paucReaderRspMsg,向上層返回的響應數據

//          UINT16 usReceiveUpperLayerTotalLen,接收到上層數據的總長度

// 函數輸出:無

// 函數返回:UINT6 usRetLength,返回的數據長度

 

8.1.4 命令實現

8.1.4.1 App_TulIap_CheckRunSpace

// 函數名稱:App_TulIap_CheckRunSpace

// 函數功能:IAP,查詢讀寫器運行區間

// 函數輸入:const UINT8* pucCmdParaMsg,接收到的上層命令參數數據

//          UINT8* pucRspRapaMsg,向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數輸出:UINT8* pucRspRapaMsg,向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數返回:T_TulErr,函數執行狀態

 

8.1.4.2 App_TulIap_ModifyRunSpace

// 函數名稱:App_TulIap_ModifyRunSpace

// 函數功能:IAP,發送版本參數信息

// 函數輸入:const UINT8* pucCmdParaMsg,接收到的上層命令參數數據

//          UINT8* pucRspRapaMsg,向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數輸出:UINT8* pucRspRapaMsg,向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數返回:T_TulErr,函數執行狀態

 

8.1.4.3 App_TulIap_CheckObligateVersionFileSize

// 函數名稱:App_TulIap_CheckObligateVersionFileSize

// 函數功能:IAP,查詢預留Flash大小

// 函數輸入:const UINT8* pucCmdParaMsg,讀寫器接收到的上層命令參數數據

//          UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數輸出:UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數返回:T_TulErr,函數執行狀態

 

8.1.4.4 App_TulIap_TransmitVersionFile

// 函數名稱:App_TulIap_TransmitVersionFile

// 函數功能:IAP,發送版本文件

// 函數輸入:const UINT8* pucCmdParaMsg,讀寫器接收到的上層命令參數數據

//          UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數輸出:UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數返回:T_TulErr,函數執行狀態

 

8.1.4.5 App_TulIap_TransmitVersionFilePara

// 函數名稱:App_TulIap_TransmitVersionFilePara

// 函數功能:IAP,發送版本參數信息

// 函數輸入:const UINT8* pucCmdParaMsg,讀寫器接收到的上層命令參數數據

//          UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數輸出:UINT8* pucRspRapaMsg,讀寫器向上層返回的響應參數數據

//          UINT16 *pusRetParaLen,需要返回的參數長度

// 函數返回:T_TulErr,函數執行狀態

 

8.2 硬件接口

8.2.1 Flash資源

8.2.1.1 Drv_Flash_InitialPara

// 函數名稱:Drv_Flash_InitialPara

// 函數功能:查詢Flash操作相關標志位

// 函數輸入:E_Flash_FlagKind eFlashFlagKind, BOOL bStatus

// 函數輸出:tFlash_OptFlag

// 函數返回:無

 

8.2.1.2 Drv_Flash_ErasePagesWrite

// 函數名稱:Drv_Flash_ErasePagesWrite

// 函數功能:Flash模塊,擦除頁信息並更新

// 函數輸入:ULONG ulFlashAddr, UCHAR *pucSavebuf, ULONG ulLen

// 函數輸出:無

// 函數返回:BOOL bStatus

 

8.2.1.3 Drv_Flash_Read

// 函數名稱:Drv_Flash_Read

// 函數功能:Flash模塊,讀取數據信息

// 函數輸入:ULONG ulFlashAddr, UCHAR *pucReadbuf, ULONG ulLen)

// 函數輸出:無

// 函數返回:BOOL bStatus

 

8.2.1.4 Drv_Flash_EraseVersionFileSpace

// 函數名稱:Drv_Flash_EraseVersionFileSpace

// 函數功能:IAP升級應用,擦除升級文件Flash空間

// 函數輸入:無

// 函數輸出:無

// 函數返回:無

 

8.2.1.5 Drv_Flash_UpdataVersionFileSpace

// 函數名稱:Drv_Flash_UpdataVersionFileSpace

// 函數功能:IAP升級應用,更新升級文件預留Flash空間

// 函數輸入:const UINT8 *pucPackageMessage, UINT16 usPackageLength, UINT16 usPackageSn

// 函數輸出:無

// 函數返回:無

 

8.2.1.6 Drv_Flash_Test_ReadWriteTest Condition

// 函數名稱:Drv_Flash_Test_ReadWrite

// 函數功能:Flash模塊,測試讀寫

// 函數輸入:無

// 函數輸出:無

// 函數返回:無


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM