?? iap.h
字號:
/****************************************Copyright (c)**************************************************
** 廣州周立功單片機發展有限公司
** 研 究 所
** 產品一部
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: IAP.h
**創 建 人:
**最后修改日期:
**描 述: LPC2400在線升級操作的IAP頭文件
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: zhangbin
** 版 本: v1.00
** 日 期: 2007-3-30
** 描 述: 定義IAP的頭文件
** 說明:
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: Li Baihua
** 版 本: v1.01
** 日 期: 2008-07-01
** 描 述: 修改IAP的頭文件
** 說明:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
#ifndef __IAP_H
#define __IAP_H
#include "config.h"
/*定義IAP命令字*/
// 命令 參數
#define IAP_SELECTOR 50 // 選擇扇區 【起始扇區號、結束扇區號】
#define IAP_RAMTOFLASH 51 // 拷貝數據 【FLASH目標地址、RAM源地址、寫入字節數、系統時鐘頻率】
#define IAP_ERASESECTOR 52 // 擦除扇區 【起始扇區號、結束扇區號、系統時鐘頻率】
#define IAP_BLANKCHK 53 // 查空扇區 【起始扇區號、結束扇區號】
#define IAP_READPARTID 54 // 讀器件ID 【無】
#define IAP_BOOTCODEID 55 // 讀Boot版本號 【無】
#define IAP_COMPARE 56 // 比較命令 【FLASH起始地址、RAM起始地址、需要比較的字節數】
#define IAP_REINVOKE_ISP 57 // 重新調用ISP 【無】
/*定義IAP返回狀態字*/
#define CMD_SUCCESS 0
#define INVALID_COMMAND 1
#define SRC_ADDR_ERROR 2
#define DST_ADDR_ERROR 3
#define SRC_ADDR_NOT_MAPPED 4
#define DST_ADDR_NOT_MAPPED 5
#define COUNT_ERROR 7
#define SECTOR_NOT_BLANK 8
#define SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9
#define COMMPARE_ERROR 10
#define BUSY 11
extern uint32 SelSector(uint8 sec1,uint8 sec2);
/*********************************************************************************************************
**函數名稱:SelSector
**函數功能:IAP操作緩沖區選擇,代碼為50
**入口參數:sec1 起始扇區
** sec2 終止扇區
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 RamToFlash(uint32 dst, uint32 src, uint32 no);
/*********************************************************************************************************
**函數名稱:RamToFlash
**函數功能:復制RAM的數據到FLASH,命令代碼51
**入口參數:dst 目標地址,即FLASH起始地址,以512字節為分界
** src 源地址,即RAM地址,地址必須字對其
** no 復制字節個數,為256/512/1024/4096
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 EraseSector(uint32 sec1, uint32 sec2);
/*********************************************************************************************************
**函數名稱:RamToFlash
**函數功能:擦除扇區,命令代碼52
**入口參數:sec1 起始扇區
** sec2 終止扇區
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 BlankCHK(uint32 sec1,uint32 sec2);
/*********************************************************************************************************
**函數名稱:BlankCHK
**函數功能:查空扇區,命令代碼53
**入口參數:sec1 起始扇區
** sec2 終止扇區
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 ReadParID(uint32 *Device_ID);
/*********************************************************************************************************
**函數名稱:ReadParID
**函數功能:讀器件ID,命令代碼54
**入口參數:器件ID地址指針
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 BootCodeID(uint32 *Boot_ID);
/*********************************************************************************************************
**函數名稱:BootCodeID
**函數功能:讀boot代碼ID,命令代碼55
**入口參數:boot代碼ID地址指針
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
extern uint32 Compare(uint32 dst, uint32 src, uint32 no);
/*********************************************************************************************************
**函數名稱:Compare
**函數功能:校驗數據,命令代碼56
**入口參數:dst 目標地址,即RAM/FLASH起始地址,地址必須字對齊
** src 源地址,即RAM/RAM地址,地址必須字對齊
** no 復制字節個數,必須能被4整除
**出口參數:IAP 操作狀態碼
** IAP返回值(paramout緩沖區)
********************************************************************************************************/
/*********************************************************************************************************
**函數名稱:Reinvoke_ISP
**函數功能:重新調用ISP,命令代碼57。
**入口參數:無
**出口參數:無
********************************************************************************************************/
extern void Reinvoke_ISP(void);
extern uint8 WriteFlash(uint32 dst, uint32 src,uint32 no);
/*********************************************************************************************************
**函數名稱:WriteFlash
**函數功能:向FLASH中寫入數據
**入口參數:dst 目標地址,即FLASH起始地址,地址必須以256字節對齊,即地址的低8位必須為0
** src 源地址,即RAM地址,地址必須字對齊,即地址的低兩位必須為0
** no 寫入字節數,必須為256/512/1024/4096
**出口參數:Compare的返回值,操作成功正確返回0
********************************************************************************************************/
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -