读取DBAU1200开发板的BOOT FLASH参考代码

//========================================================================
//TITLE:
// 读取DBAU1200开发板的BOOT FLASH参考代码
//AUTHOR:
// norains
//DATE:
// Saturday 31-May-2008
//Environment:
// VS2005 + DBAU1200 BOARD + MIPSII SDK
//========================================================================

该段代码用来读取DBAU1200开发板的BOOT FLASH,并保存为SREC格式。

CFlashAmd主要是用来读取BOOT FLASH,该类可在此获取:http://blog.csdn.net/norains/archive/2008/05/31/2498178.aspx

需要注意的是,本文所列的代码为参考代码,还有很多不完善的地方,比如读取的FLASH大小必须为16的整数倍等等,使用的时候需要小心。


#include "stdafx.h"
#include "flashamd.h"
#include <vector>
#include <string>
#include <algorithm>

//DBAU1200开发板的FLASH起始地址
#define DEFAULT_DBAU1200_FLASH_ADDRESS_BASE 0x9C000000
//读取的偏移地址
#define DEFAULT_DBAU1200_FLASH_OFFSET_READ 0x3C00000
//读取的FLASH大小
#define MAX_SIZE_READ (1024 * 1024) // 1Mbyte

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
CFlashAmd flash;
flash.SetFlashInfo(Flash::FLASH_INFO_AM29LV256M);
flash.SetFlashAddressBase(DEFAULT_DBAU1200_FLASH_ADDRESS_BASE);

std::vector<BYTE> vtBuf(MAX_SIZE_READ,0);
flash.ReadFlash(DEFAULT_DBAU1200_FLASH_OFFSET_READ,&vtBuf[0],MAX_SIZE_READ);

//Change it to S3 type
const DWORD dwDataPerLine = 16;
DWORD dwStoreCount = 0;
std::string strStore;
DWORD dwChkSum = 0;
DWORD dwAddress = DEFAULT_DBAU1200_FLASH_ADDRESS_BASE + DEFAULT_DBAU1200_FLASH_OFFSET_READ;
while(true)
{
if(dwStoreCount + dwDataPerLine > vtBuf.size())
{
break;
}

//Clear the check sum.
dwChkSum = 0;

//The type and length
std::string strLine;
strLine += "S315";
dwChkSum += 0x15;

//The buffer for storing the convert string
std::vector<char> vtCnvt(9,0);

//The address
_ultoa(dwAddress,&vtCnvt[0],16);
strLine += reinterpret_cast<char *>(&vtCnvt[0]);
dwChkSum += dwAddress >> 24;
dwChkSum += (dwAddress >> 16) & 0xFF;
dwChkSum += (dwAddress >> 8) & 0xFF;
dwChkSum += dwAddress & 0xFF;
dwAddress += dwDataPerLine;



//The data
for(int i = 0; i < dwDataPerLine; i ++)
{
_ultoa(vtBuf[dwStoreCount + i],&vtCnvt[0],16);
if(vtBuf[dwStoreCount + i] > 0x0F)
{
strLine += reinterpret_cast<char *>(&vtCnvt[0]);
}
else
{
strLine = strLine + "0" + reinterpret_cast<char *>(&vtCnvt[0]);
}
dwChkSum += vtBuf[dwStoreCount + i];
}
dwStoreCount += dwDataPerLine;

//The check sum
dwChkSum = 0xFF - (dwChkSum & 0xFF);
_ultoa(dwChkSum,&vtCnvt[0],16);
if(dwChkSum > 0x0F)
{
strLine += reinterpret_cast<char *>(&vtCnvt[0]);
}
else
{
strLine = strLine + "0" + reinterpret_cast<char *>(&vtCnvt[0]);
}
strLine += "/r/n";

//Store to the buffer
strStore += strLine;
}

//to upper
transform(strStore.begin(),strStore.end(),strStore.begin(),toupper);


//Save the data to file
HANDLE hFile = CreateFile(TEXT("bootsave.rec"),GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwWrite = 0;
WriteFile(hFile,&strStore[0],strStore.size(),&dwWrite,NULL);
CloseHandle(hFile);
return 0;
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值