Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing chips features #154

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 43 additions & 2 deletions src/targets/esp32c3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,52 @@
return desc;
}

public async getChipFeatures(loader: ESPLoader) {
return ["Wi-Fi"];
public async getFlashCap(loader: ESPLoader): Promise<number> {
const numWord = 3;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const flashCap = (registerValue >> 27) & 0x07;
return flashCap;
}

public async getFlashVendor(loader: ESPLoader): Promise<string> {
const numWord = 4;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const vendorId = (registerValue >> 0) & 0x07;
const vendorMap: { [key: number]: string } = {
1: "XMC",
2: "GD",
3: "FM",
4: "TT",
5: "ZBIT",
};
return vendorMap[vendorId] || "";
}

public async getChipFeatures(loader: ESPLoader): Promise<string[]> {
const features: string[] = ["Wi-Fi", "BLE"];

const flashMap: { [key: number]: string | null } = {
0: null,
1: "Embedded Flash 4MB",
2: "Embedded Flash 2MB",
3: "Embedded Flash 1MB",
4: "Embedded Flash 8MB",
};
const flashCap = await this.getFlashCap(loader);
const flashVendor = await this.getFlashVendor(loader);
const flash = flashMap[flashCap];
const flashDescription = flash !== undefined ? flash : "Unknown Embedded Flash";
if (flash !== null) {
features.push(`${flashDescription} (${flashVendor})`);
}
return features;
}

public async getCrystalFreq(loader: ESPLoader) {

Check warning on line 115 in src/targets/esp32c3.ts

View workflow job for this annotation

GitHub Actions / ci

'loader' is defined but never used
return 40;
}

Expand Down
2 changes: 1 addition & 1 deletion src/targets/esp32c6.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,11 @@
return desc;
}

public async getChipFeatures(loader: ESPLoader) {

Check warning on line 70 in src/targets/esp32c6.ts

View workflow job for this annotation

GitHub Actions / ci

'loader' is defined but never used
return ["Wi-Fi"];
return ["Wi-Fi 6", "BT 5", "IEEE802.15.4"];
}

public async getCrystalFreq(loader: ESPLoader) {

Check warning on line 74 in src/targets/esp32c6.ts

View workflow job for this annotation

GitHub Actions / ci

'loader' is defined but never used
return 40;
}

Expand Down
66 changes: 53 additions & 13 deletions src/targets/esp32s2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,63 @@ export class ESP32S2ROM extends ROM {
}
}

public async getChipFeatures(loader: ESPLoader) {
const features = ["Wi-Fi"];
const pkgVer = await this.getPkgVersion(loader);
if (pkgVer == 1) {
features.push("Embedded 2MB Flash");
} else if (pkgVer == 2) {
features.push("Embedded 4MB Flash");
}
public async getFlashCap(loader: ESPLoader): Promise<number> {
const numWord = 3;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const flashCap = (registerValue >> 21) & 0x0f;
return flashCap;
}

public async getPsramCap(loader: ESPLoader): Promise<number> {
const numWord = 3;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const psramCap = (registerValue >> 28) & 0x0f;
return psramCap;
}

public async getBlock2Version(loader: ESPLoader): Promise<number> {
const numWord = 4;
const block2Addr = this.EFUSE_BASE + 0x05c;
const addr = block2Addr + 4 * numWord;
const word4 = await loader.readReg(addr);
const block2Ver = (word4 >> 4) & 0x07;
const registerValue = await loader.readReg(addr);
const block2Ver = (registerValue >> 4) & 0x07;
return block2Ver;
}

public async getChipFeatures(loader: ESPLoader) {
const features: string[] = ["Wi-Fi"];

const flashMap: { [key: number]: string | null } = {
0: "No Embedded Flash",
1: "Embedded Flash 2MB",
2: "Embedded Flash 4MB",
};
const flashCap = await this.getFlashCap(loader);
const flashDescription = flashMap[flashCap] || "Unknown Embedded Flash";
features.push(flashDescription);

const psramMap: { [key: number]: string | null } = {
0: "No Embedded Flash",
1: "Embedded PSRAM 2MB",
2: "Embedded PSRAM 4MB",
};
const psramCap = await this.getPsramCap(loader);
const psramDescription = psramMap[psramCap] || "Unknown Embedded PSRAM";
features.push(psramDescription);

const block2VersionMap: { [key: number]: string | null } = {
0: "No calibration in BLK2 of efuse",
1: "ADC and temperature sensor calibration in BLK2 of efuse V1",
2: "ADC and temperature sensor calibration in BLK2 of efuse V2",
};
const block2Ver = await this.getBlock2Version(loader);
const block2VersionDescription = block2VersionMap[block2Ver] || "Unknown Calibration in BLK2";
features.push(block2VersionDescription);

if (block2Ver == 1) {
features.push("ADC and temperature sensor calibration in BLK2 of efuse");
}
return features;
}

Expand Down
80 changes: 78 additions & 2 deletions src/targets/esp32s3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,85 @@ export class ESP32S3ROM extends ROM {
public async getChipDescription(loader: ESPLoader) {
return "ESP32-S3";
}
public async getChipFeatures(loader: ESPLoader) {
return ["Wi-Fi", "BLE"];

public async getFlashCap(loader: ESPLoader): Promise<number> {
const numWord = 3;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const flashCap = (registerValue >> 27) & 0x07;
return flashCap;
}

public async getFlashVendor(loader: ESPLoader): Promise<string> {
const numWord = 4;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const vendorId = (registerValue >> 0) & 0x07;
const vendorMap: { [key: number]: string } = {
1: "XMC",
2: "GD",
3: "FM",
4: "TT",
5: "BY",
};
return vendorMap[vendorId] || "";
}

public async getPsramCap(loader: ESPLoader): Promise<number> {
const numWord = 4;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const psramCap = (registerValue >> 3) & 0x03;
return psramCap;
}

public async getPsramVendor(loader: ESPLoader): Promise<string> {
const numWord = 4;
const block1Addr = this.EFUSE_BASE + 0x044;
const addr = block1Addr + 4 * numWord;
const registerValue = await loader.readReg(addr);
const vendorId = (registerValue >> 7) & 0x03;
const vendorMap: { [key: number]: string } = {
1: "AP_3v3",
2: "AP_1v8",
};
return vendorMap[vendorId] || "";
}

public async getChipFeatures(loader: ESPLoader): Promise<string[]> {
const features: string[] = ["Wi-Fi", "BLE"];

const flashMap: { [key: number]: string | null } = {
0: null,
1: "Embedded Flash 8MB",
2: "Embedded Flash 4MB",
};
const flashCap = await this.getFlashCap(loader);
const flashVendor = await this.getFlashVendor(loader);
const flash = flashMap[flashCap];
const flashDescription = flash !== undefined ? flash : "Unknown Embedded Flash";
if (flash !== null) {
features.push(`${flashDescription} (${flashVendor})`);
}

const psramMap: { [key: number]: string | null } = {
0: null,
1: "Embedded PSRAM 8MB",
2: "Embedded PSRAM 2MB",
};
const psramCap = await this.getPsramCap(loader);
const psramVendor = await this.getPsramVendor(loader);
const psram = psramMap[psramCap];
const psramDescription = psram !== undefined ? psram : "Unknown Embedded PSRAM";
if (psram !== null) {
features.push(`${psramDescription} (${psramVendor})`);
}
return features;
}

public async getCrystalFreq(loader: ESPLoader) {
return 40;
}
Expand Down
Loading