yunsi-toolbox-vue/lib/app-image/types.ts

94 lines
2.0 KiB
TypeScript

export enum SpiFlashMode {
QIO = 0,
QOUT = 1,
DIO = 2,
DOUT = 3,
}
export enum SpiFlashSpeed {
SPEED_40M = 0x0,
SPEED_26M = 0x1,
SPEED_20M = 0x2,
SPEED_80M = 0xF,
}
export enum SpiFlashSize {
SIZE_1MB = 0x0,
SIZE_2MB = 0x1,
SIZE_4MB = 0x2,
SIZE_8MB = 0x3,
SIZE_16MB = 0x4,
SIZE_32MB = 0x5,
SIZE_64MB = 0x6,
SIZE_128MB = 0x7,
}
export interface ImageHeader {
magic: number;
segmentCount: number;
spiMode: SpiFlashMode;
spiSpeed: SpiFlashSpeed;
spiSize: SpiFlashSize;
entryPoint: number;
}
export interface ExtendedHeader {
wpPin: number;
spiPinDrv: [number, number, number];
chipId: number;
minChipRev: number;
minChipRevFull: number;
maxChipRevFull: number;
hashAppended: boolean;
}
export interface SegmentHeader {
loadAddr: number;
dataLen: number;
}
export interface AppDescription {
magicWord: number;
secureVersion: number;
version: string;
projectName: string;
compileTime: string;
compileDate: string;
idfVersion: string;
appElfSha256: Uint8Array;
}
export interface AppImageInfo {
header: ImageHeader;
extendedHeader: ExtendedHeader;
segments: SegmentHeader[];
appDescription: AppDescription | null;
valid: boolean;
chipName: string;
}
export const SPI_FLASH_MODE_NAMES: Record<number, string> = {
[SpiFlashMode.QIO]: 'QIO',
[SpiFlashMode.QOUT]: 'QOUT',
[SpiFlashMode.DIO]: 'DIO',
[SpiFlashMode.DOUT]: 'DOUT',
};
export const SPI_FLASH_SPEED_NAMES: Record<number, string> = {
[SpiFlashSpeed.SPEED_40M]: '40MHz',
[SpiFlashSpeed.SPEED_26M]: '26MHz',
[SpiFlashSpeed.SPEED_20M]: '20MHz',
[SpiFlashSpeed.SPEED_80M]: '80MHz',
};
export const SPI_FLASH_SIZE_NAMES: Record<number, string> = {
[SpiFlashSize.SIZE_1MB]: '1MB',
[SpiFlashSize.SIZE_2MB]: '2MB',
[SpiFlashSize.SIZE_4MB]: '4MB',
[SpiFlashSize.SIZE_8MB]: '8MB',
[SpiFlashSize.SIZE_16MB]: '16MB',
[SpiFlashSize.SIZE_32MB]: '32MB',
[SpiFlashSize.SIZE_64MB]: '64MB',
[SpiFlashSize.SIZE_128MB]: '128MB',
};