⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coff.c

📁 S3C2410例子程序
💻 C
字号:
#include "coff.h"
#include "hpi.h"

#define TRACE(X)

void load_coff(unsigned long start, unsigned long end)
{
	char*		data;
	long    	size;
	long    	offset;
	int     	index;

	FILEHDR*	pHdr;
	SECHDR*		pSec;
	OPTHDR*		pOpt;
	
	pHdr = (FILEHDR*)start;

	if(pHdr->usOptHdrSZ==0)
		offset = sizeof(FILEHDR);
	else
		offset = sizeof(FILEHDR)+28;

	pOpt = (OPTHDR*)(start+sizeof(FILEHDR));
	pSec = (SECHDR*)(start+offset);
	
	for( index = 0; index < pHdr->usNumSec; index++)
	{
		TRACE(("%s  flag=0x%x, len = %d, dst = 0x%x\n", pSec -> cName, pSec -> ulFlags, pSec->ulSize, pSec->ulPAddr));
		
		// FLAG == 0x20 | 40 需要加载, 程序和数据段
		if(pSec -> ulFlags & 0x60)
		{
			for( size = 0; size < pSec->ulSize; size++)
			{
				HPI_WR((pSec->ulPAddr+size), *((unsigned short*)(start+pSec->ulRawdata)+size));
			}
		}
		
		// FLAG == 0x80, 需要清0 
		if((pSec -> ulFlags & 0x80) == 0x80)
		{
			for( size = 0; size < pSec->ulSize; size++)
			{
				HPI_WR((pSec->ulPAddr+size), 0);
			}
		}

		pSec ++;
	}	
	
	HPI_WR(0x7F, 0);
	HPI_WR(0x7F, (pOpt->ulEntry));
	TRACE(("Entry = 0x%x\n", pOpt->ulEntry));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -