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模块,测试读写

// 函数输入:无

// 函数输出:无

// 函数返回:无

posted @ 2020-04-06 16:20  寻觅左岸  阅读(960)  评论(0编辑  收藏  举报