由于工作需要,用到ARM7的芯片LPC2132的IAP,初次接触ARM7,历时2天时间,终于成功完成BootLoader的编写,下面和大家分享一下使用心得,方便大家的使用。
要完成BootLoader,首先得实现IAP。
LPC21XX的IAP使用比较简单,芯片手册上有具体介绍,我就不多说了。主要用到以下几个函数。
以下是一些定义:
#define IAP_ENTER_ADR 0x7FFFFFF1 // IAP入口地址定义
/*
* 定义IAP命令字
*/
#define IAP_Prepare 50
#define IAP_RAMTOFLASH 51
#define IAP_ERASESECTOR 52
#define IAP_BLANKCHK 53
#define IAP_READPARTID 54
#define IAP_BOOTCODEID 55
#define IAP_COMPARE 56
/*
* 定义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 6
#define INVALID_SECTOR 7
#define SECTOR_NOT_BLANK 8
#define
SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9
#define COMPARE_ERROR 10
#define BUSY 11
/*
* 定义CCLK值大小,单位为KHz
*/
#define IAP_FCCLK (60000) /* 此频率值必须同主频相同 */
#define EEPROM_STARTSEC 4
#define EEPROM_ENDSEC 8
#define EE_SUUCEESS 0
#define IAP_ERROR 1
#define PARA_BANK_ERROR 2
#define PARA_SRCADDR_ERROR 3
#define PARA_OVERFLOW_ERROR 4
//IAP写入字节数
typedef enum
{
MODE0 = 256,
MODE1 = 512,
MODE2
= 1024,
MODE3 = 4096,
}IAPWRITEMODE;
//IAP擦除的扇区
typedef enum
{
SECTOR0,
SECTOR1,
SECTOR2,
SECTOR3,
SECTOR4,
SECTOR5,
SECTOR6,
SECTOR7,
SECTOR8,
}IAPCHANNEL;
IAP函数实现:
/*
* 定义函数指针
*/
void (*IAP_Entry) (unsigned long
ulParam_tab[], unsigned long ulPesult_tab[]) = (void(*)())IAP_ENTER_ADR;
unsigned long GulParamin[8]; /* IAP入口参数缓冲区 */
unsigned long GulParamout[8];
/* IAP出口参数缓冲区 */
/*********************************************************************************************************
** Function name: sectorPrepare
** Descriptions: IAP操作扇区选择,命令代码50
** input parameters: ucSec1: 起始扇区
** ucSec2: 终止扇区
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long sectorPrepare (unsigned char ucSec1, unsigned char ucSec2)
{
GulParamin[0] = IAP_Prepare; /* 设置命令字 */
GulParamin[1] = ucSec1; /* 设置参数 */
GulParamin[2] = ucSec2;
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: ramCopy
** Descriptions: 复制RAM的数据到FLASH,命令代码51
** input parameters: ulDst: 目标地址,即FLASH起始地址。以512字节为分界
** ulSrc: 源地址,即RAM地址。地址必须字对齐
** ulNo: 复制字节个数,为512/1024/4096/8192
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long ramCopy (unsigned long ulDst, unsigned long ulSrc, unsigned long ulNo)
{
GulParamin[0] = IAP_RAMTOFLASH; /* 设置命令字 */
GulParamin[1] = ulDst; /* 设置参数 */
GulParamin[2] = ulSrc;
GulParamin[3] = ulNo;
GulParamin[4] = IAP_FCCLK;
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: sectorErase
** Descriptions: 扇区擦除,命令代码52
** input parameters: ucSec1 起始扇区
** ucSec2 终止扇区92
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long sectorErase (unsigned char ucSec1, unsigned
char ucSec2)
{
GulParamin[0] = IAP_ERASESECTOR; /* 设置命令字 */
GulParamin[1] = ucSec1; /* 设置参数 */
GulParamin[2] = ucSec2;
GulParamin[3] = IAP_FCCLK;
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: blankChk
** Descriptions: 扇区查空,命令代码53
** input parameters: ucSec1: 起始扇区
** ucSec2: 终止扇区92
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long blankChk (unsigned char ucSec1, unsigned char ucSec2)
{
GulParamin[0] = IAP_BLANKCHK; /* 设置命令字 */
GulParamin[1] = ucSec1; /* 设置参数 */
GulParamin[2] = ucSec2;
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: parIdRead
** Descriptions: 读器件标识号,命令代码54
** input parameters: 无
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long parIdRead (void)
{
GulParamin[0] = IAP_READPARTID; /* 设置命令字 */
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: codeIdBoot
** Descriptions: 读Boot代码版本号,命令代码55
** input parameters: 无
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long codeIdBoot (void)
{
GulParamin[0] = IAP_BOOTCODEID; /* 设置命令字 */
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
/*********************************************************************************************************
** Function name: dataCompare
** Descriptions: 校验数据,命令代码56
** input parameters: ulDst: 目标地址,即RAM/FLASH起始地址。地址必须字对齐
** ulSrc: 源地址,即FLASH/RAM地址。地址必须字对齐
** ulNo: 待比较的字节数。计数值应当为4的倍数字
** output parameters: GulParamout[0]: IAP操作状态码,IAP返回值
** Returned value: GulParamout[0]: IAP操作状态码,IAP返回值
*********************************************************************************************************/
unsigned long dataCompare (unsigned long ulDst, unsigned long ulSrc, unsigned long ulNo)
{
GulParamin[0] = IAP_COMPARE; /* 设置命令字 */
GulParamin[1] = ulDst; /* 设置参数 */
GulParamin[2] = ulSrc;
GulParamin[3] = ulNo;
(*IAP_Entry)(GulParamin, GulParamout); /* 调用IAP服务程序 */
return (GulParamout[0]); /* 返回状态码 */
}
以下为用户区代码:
写扇区,mode一共四种,而且只能使用这四种写入方式:256、512、1024或者4096字节
uint8 eepromWrite(uint32 WriteAddr, uint8
*pBuffer, IAPWRITEMODE mode)
{
uint8 ucErr = 0;
__disable_irq();
if (WriteAddr > 64 * 1024)
{
__enable_irq();
return PARA_BANK_ERROR;
}
if ((((unsigned long)pBuffer) % 4) != 0 )
{
__enable_irq();
return PARA_SRCADDR_ERROR;
}
ucErr
= sectorPrepare(EEPROM_STARTSEC, EEPROM_ENDSEC);
ucErr
= ramCopy(WriteAddr, (unsigned long)pBuffer, mode);
ucErr
= dataCompare(WriteAddr, (unsigned long)pBuffer, mode);
if
(ucErr != CMD_SUCCESS)
{ /* IAP函数调用出错 */
__enable_irq();
return
IAP_ERROR;
}
__enable_irq();
return EE_SUUCEESS;
}
擦除扇区,一次至少擦除一个扇区,在写之前必须擦除。
uint8 eepromErase(IAPCHANNEL StartSec,
IAPCHANNEL EndSec)
{
uint8 ucErr = 0;
__disable_irq();
ucErr
= sectorPrepare(StartSec, EndSec);
ucErr
= sectorErase(StartSec, EndSec);
ucErr
= blankChk(StartSec, EndSec);
if(ucErr
!= CMD_SUCCESS)
{ /* IAP函数调用出错 */
__enable_irq();
return
IAP_ERROR;
}
__enable_irq();
return EE_SUUCEESS;
}
读扇区,读取相应地址处的数据
void eepromRead(uint32 ReadAddr, uint8
*pBuffer, uint16 NumToRead)
{
uint16 i;
for (i = 0; i < NumToRead; i++)
{
pBuffer = *(uint8 * )ReadAddr;
ReadAddr += 1;
}
}
在成功实现IAP功能后,就是BootLoader的编写了,BootLoader实现比较简单,里面完成APP的写入即可,APP的写入大家可以按需要实现,用串口等方式进行数据的传输。在APP写完后将PC指针跳转到指定位置即可。PC指针的跳转相信大家都不陌生,使用以下方法实现:
//定义一个函数类型的参数
typedef void (*iapfun)(void);
iapfun jump2app;
jump2app = (iapfun)0x4000;//APP的ROM地址
(*jump2app)();
BootLoader的编写需要注意RAM的设置。
由于IAP使用到RAM顶部的32个字节,因此KEIL中设置RAM大小时要用总大小减去0X20。我使用的单片机RAM总大小为16K,因此SIZE设置为0X3FE0。如图:
![](data:image/png;base64,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)
完成BootLoader的编写,下面就是APP的实现了。
在编写APP之前,我们先看一下ARM7的中断向量表:
![](data:image/png;base64,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)
这是ARM7中断向量表的存放位置,由于BootLoader中用到了这部分中断,因此APP中无法继续使用这个向量表,因此必须实现中断向量表的重映射,回头查看芯片手册,发现支持中断向量表的RAM映射。
首先看一下BootLoader和APP的具体存放位置:
![](data:image/png;base64,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)
ROM中底部存放BootLoader,接着存放APP。
RAM中底部64个字节存放32字节中断向量表以及额外的32个字节。接着留给APP的使用,最顶部32字节给IAP使用。
下面是KEIL工程的具体设置:
工程设置好后:就是中断向量表的COPY和重映射的实现。
这部分工作要在复位的时候设置好,打开启动文件,完成以下修改:
这部分在KEIL自带的启动文件中有,因此只要打开宏开关即可,如果使用的启动文件没有的话,可以自己添加,打开宏的方法:
在这之前要先完成中断向量表的COPY:
;定义RAM基地址
RAM_BASE EQU 0x40000000
; Copy Exception Vectors to Internal RAM
IF EF:RAM_INTVEC
ADR R8, Vectors
LDR R9, =RAM_BASE
LDMIA R8!, {R0-R7}
STMIA R9!, {R0-R7}
LDMIA R8!, {R0-R7}
STMIA R9!, {R0-R7}
ENDIF
为了更加通用,加一下宏开关,使用时工程中作相应设置:
完成以上所有工作即可实现BootLoader的使用,谢谢支持,四人行出品。
|