Skip to content

Commit

Permalink
Add missing chips features (#154)
Browse files Browse the repository at this point in the history
* Add missing chips features

* Add chip features helper function

---------

Co-authored-by: Rushikesh Patange <[email protected]>
  • Loading branch information
RushikeshPatange and Rushikesh Patange authored Sep 11, 2024
1 parent 1e721b0 commit ba9fc98
Show file tree
Hide file tree
Showing 4 changed files with 175 additions and 18 deletions.
45 changes: 43 additions & 2 deletions src/targets/esp32c3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,49 @@ export class ESP32C3ROM extends ROM {
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
Expand Down
2 changes: 1 addition & 1 deletion src/targets/esp32c6.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export class ESP32C6ROM extends ROM {
}

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
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

0 comments on commit ba9fc98

Please sign in to comment.