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

📄 msdos.h

📁 这个是嵌入式arm系列的一个bootloader程序。对需要编写bootloader的很有参考价值
💻 H
字号:
/*



Module Name:

    MsDos.h

Abstract:
	MS-DOS partition interface.

*/

#ifndef __MSDOS_H__
#define __MSDOS_H__

#define	mBytesPerSector			512
#define	mMaxFATSize				256
#define	mDirectoryEntrySize		32

#define	mPartitionMapOffset		0x1BE
#define	mPartitionMapSize		16
#define	mPartitionSigOffset		0x1FE
#define	mPartitionSigSize		2
#define	mPartitionSigValue		0xAA55

#define mMSDFileLoadAddr		0xA3C8D000UL  		//	$$$ Need to fix! Buffer address
#define mFATLoadAddr			0xA3C97000UL		//	$$$ Need to fix! Buffer address
#define	mMaxBootfileSize		0x80000

#define	mBootfileNameLength		8
#define	mBootfileExtLength		3

#define	mPartitionBootableFlag	0x80
#define	mPartitionTypeOffset	4
#define	mPartitionTypeLength	1
#define	mPartitionStartOffset	8
#define	mPartitionStartLength	4
#define	mPartitionLengthOffset	12
#define	mPartitionLengthLength	4

#define	mPartitionTypeFAT16		4
#define	mPartitionTypeFAT12		1

#define	mBinHeaderLength		15
#define	mBinStartOffset			7
#define	mBinStartSize			4
#define	mBinSegHeaderLength		12
#define	mBinSegAddrOffset		0
#define	mBinSegAddrSize			4
#define	mBinSegLengthOffset		4
#define	mBinSegLengthSize		4

#define	mClusterEndOfFile		0xFFFF
#define	mClusterEndOfFileMask	0xFFF

#define	mDirNameOffset			0
#define	mDirExtOffset			8
#define	mDirStartOffset			26
#define	mDirStartSize			2
#define	mDirLengthOffset		28
#define	mDirLengthSize			4

#define	mSectorsPerClusterOffset	13
#define	mSectorsPerClusterSize		1
#define	mReservedSectorsOffset		14
#define	mReservedSectorsSize		1
#define	mCopiesOfFATOffset			16
#define	mCopiesOfFATSize			1
#define	mRootDirEntriesOffset		17
#define	mRootDirEntriesSize			2
#define	mSectorsPerFATOffset		22
#define	mSectorsPerFATSize			2
#define	mHiddenSectorsOffset		29
#define	mHiddenSectorsSize			2

#define mEmptyType			0x00
#define mFAT12Type			0x01
#define mXENIXType			0x02
#define mXENIXType2			0x03
#define mFAT16Type			0x04
#define mExtendedType		0x05
#define mDOS32MegType		0x06
#define mOS2_HPFSType		0x07
#define mBootMgrType		0x0A
#define mFAT32Type			0x0B
#define mNovellType			0x64
#define mPCIXType			0x75
#define mCPM_ConcurType		0xDB
#define mBBTType			0xFF

DWORD bytesToNum(BYTE *b, int bytes);
int getNextCluster(int cluster);
void readCluster(int cluster, BYTE *p);
BOOL findBootPartition(void);
BOOL processBootRecord(void);
BOOL findBootFile(PBYTE fileName, PBYTE fileExt);
BOOL readBootFile(PBYTE Addr, ULONG bytesToRead, PULONG bytesRead);
BOOL compare(PBYTE a, PBYTE b, int length);
void copy(PBYTE a, PBYTE b, int length);

#endif  // __MSDOS_H__

⌨️ 快捷键说明

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