logo elektroda
logo elektroda
X
logo elektroda

NiceMCU XH-WB3S BK7238 Flashing, Testing, Pinout, Development, Porting

divadiow 7686 223
ADVERTISEMENT
  • #61 21341959
    p.kaczmarek2
    Moderator Smart Home
    Ah, I see, that's a good news.

    Ok, I've tried to write flash with BK7231 Easy UART flasher, but I am getting CRC error and it seems that nothing was written? Any ideas?

    Or I will just use BKFIL for now...
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #63 21342118
    p.kaczmarek2
    Moderator Smart Home
    I think that your flash write "worked" because previous write failed so the flash content was the same as the backup you wanted to flash?

    For me, 2MB flash write of any BK image fails.

    There is some kind of AT factory flashed:
    Screenshot of RealTerm program showing errors with AT commands.
    but those commands are not working:
    https://blog.csdn.net/qq_37843007/article/details/143399906?spm=1001.2014.3001.5501
    AT command guide for Espressif devices.
    Helpful post? Buy me a coffee.
  • #64 21342198
    divadiow
    Level 35  
    p.kaczmarek2 wrote:
    the flash content was the same as the backup you wanted to flash?

    I don't think this is the case. This meant I erased the whole flash, including bootloader, with BKFIL, before I restored with EF:

    Code: Text
    Log in, to see the code


    I have just done the same again. erased whole flash in BKFIL. Renamed backup of SP548E bin (taken with BKFIL) so EF will see it, then flashed back to empty BK7238 inc. bootloader
    Screenshot of Easy UART Flasher showing the successful flashing process of a BK7231N microcontroller.

    and it boots

    Screenshot of system startup on BK7238 microcontroller
    I have confirmed not even bootloader output to log after BKFIL whole erase (in case of erase success result but no actual erase).

    the result is the same with the Zengge BK7238 restore (after full erase) and the original NiceMCU backup, all in Easy Flasher.

    Are you doing BL overwrite too or letting EF split up the bin?
  • #65 21342220
    insmod
    Level 26  
    Since there is no encryption on BK7238, i wonder what would happen if BK7231M firmware is flashed (both with and without bootloader)
  • ADVERTISEMENT
  • #66 21342226
    p.kaczmarek2
    Moderator Smart Home
    Ok so I am doing 2MB Atorch backup write:
    Screenshot of BK7231 Easy UART Flasher program with errors during firmware read and write attempts.
    It is supposedly writing and erasing:
    Screenshot of Easy UART Flasher showing memory sector erasing and writing process.
    Full log:
    
    Starting flash new (no backup)!
    Now is: wtorek, 10 grudnia 2024 18:39:22.
    Flasher mode: BK7231N
    Going to open port: COM15.
    Serial port open!
    Getting bus... (now, please do reboot by CEN or by power off/on)
    Getting bus success!
    Going to set baud rate setting (921600)!
    Will try to read device flash MID (for unprotect N):
    Flash MID loaded: 152085
    Will now search for Flash def in out database...
    Failed to find flash def for device MID!
    Going to read encryption key...
    Encryption key read done!
    Encryption key: 84d36500 84d36500 84d36500 84d36500
    ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^
    WARNING! Non-standard encryption key!
    If it's all zero, it may also mean that read is disabled.
    Please report to forum https://www.elektroda.com/rtvforum/forum51.html 
    Or just try using BK7231M mode 
    ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^
    Reading file backups\readResult_BK7231N_QIO_atorch-s1w-first_2024-25-4-22-32-44.bin...
    Loaded 2097152 bytes from backups\readResult_BK7231N_QIO_atorch-s1w-first_2024-25-4-22-32-44.bin...
    Preparing to write data file to chip - resetting bus and baud...
    Getting bus... (now, please do reboot by CEN or by power off/on)
    Getting bus success!
    Going to set baud rate setting (921600)!
    Will try to read device flash MID (for unprotect N):
    Flash MID loaded: 152085
    Will now search for Flash def in out database...
    Failed to find flash def for device MID!
    Going to do erase, start 0, sec count 512!
    Erasing sector 0... ok! Erasing sector 4096... ok! Erasing sector 8192... ok! Erasing sector 12288... ok! Erasing sector 16384... ok! Erasing sector 20480... ok! Erasing sector 24576... ok! Erasing sector 28672... ok! Erasing sector 32768... ok! Erasing sector 36864... ok! Erasing sector 40960... ok! Erasing sector 45056... ok! Erasing sector 49152... ok! Erasing sector 53248... ok! Erasing sector 57344... ok! Erasing sector 61440... ok! Erasing sector 65536... ok! Erasing sector 69632... ok! Erasing sector 73728... ok! Erasing sector 77824... ok! Erasing sector 81920... ok! Erasing sector 86016... ok! Erasing sector 90112... ok! Erasing sector 94208... ok! Erasing sector 98304... ok! Erasing sector 102400... ok! Erasing sector 106496... ok! Erasing sector 110592... ok! Erasing sector 114688... ok! Erasing sector 118784... ok! Erasing sector 122880... ok! Erasing sector 126976... ok! Erasing sector 131072... ok! Erasing sector 135168... ok! Erasing sector 139264... ok! Erasing sector 143360... ok! Erasing sector 147456... ok! Erasing sector 151552... ok! Erasing sector 155648... ok! Erasing sector 159744... ok! Erasing sector 163840... ok! Erasing sector 167936... ok! Erasing sector 172032... ok! Erasing sector 176128... ok! Erasing sector 180224... ok! Erasing sector 184320... ok! Erasing sector 188416... ok! Erasing sector 192512... ok! Erasing sector 196608... ok! Erasing sector 200704... ok! Erasing sector 204800... ok! Erasing sector 208896... ok! Erasing sector 212992... ok! Erasing sector 217088... ok! Erasing sector 221184... ok! Erasing sector 225280... ok! Erasing sector 229376... ok! Erasing sector 233472... ok! Erasing sector 237568... ok! Erasing sector 241664... ok! Erasing sector 245760... ok! Erasing sector 249856... ok! Erasing sector 253952... ok! Erasing sector 258048... ok! Erasing sector 262144... ok! Erasing sector 266240... ok! Erasing sector 270336... ok! Erasing sector 274432... ok! Erasing sector 278528... ok! Erasing sector 282624... ok! Erasing sector 286720... ok! Erasing sector 290816... ok! Erasing sector 294912... ok! Erasing sector 299008... ok! Erasing sector 303104... ok! Erasing sector 307200... ok! Erasing sector 311296... ok! Erasing sector 315392... ok! Erasing sector 319488... ok! Erasing sector 323584... ok! Erasing sector 327680... ok! Erasing sector 331776... ok! Erasing sector 335872... ok! Erasing sector 339968... ok! Erasing sector 344064... ok! Erasing sector 348160... ok! Erasing sector 352256... ok! Erasing sector 356352... ok! Erasing sector 360448... ok! Erasing sector 364544... ok! Erasing sector 368640... ok! Erasing sector 372736... ok! Erasing sector 376832... ok! Erasing sector 380928... ok! Erasing sector 385024... ok! Erasing sector 389120... ok! Erasing sector 393216... ok! Erasing sector 397312... ok! Erasing sector 401408... ok! Erasing sector 405504... ok! Erasing sector 409600... ok! Erasing sector 413696... ok! Erasing sector 417792... ok! Erasing sector 421888... ok! Erasing sector 425984... ok! Erasing sector 430080... ok! Erasing sector 434176... ok! Erasing sector 438272... ok! Erasing sector 442368... ok! Erasing sector 446464... ok! Erasing sector 450560... ok! Erasing sector 454656... ok! Erasing sector 458752... ok! Erasing sector 462848... ok! Erasing sector 466944... ok! Erasing sector 471040... ok! Erasing sector 475136... ok! Erasing sector 479232... ok! Erasing sector 483328... ok! Erasing sector 487424... ok! Erasing sector 491520... ok! Erasing sector 495616... ok! Erasing sector 499712... ok! Erasing sector 503808... ok! Erasing sector 507904... ok! Erasing sector 512000... ok! Erasing sector 516096... ok! Erasing sector 520192... ok! Erasing sector 524288... ok! Erasing sector 528384... ok! Erasing sector 532480... ok! Erasing sector 536576... ok! Erasing sector 540672... ok! Erasing sector 544768... ok! Erasing sector 548864... ok! Erasing sector 552960... ok! Erasing sector 557056... ok! Erasing sector 561152... ok! Erasing sector 565248... ok! Erasing sector 569344... ok! Erasing sector 573440... ok! Erasing sector 577536... ok! Erasing sector 581632... ok! Erasing sector 585728... ok! Erasing sector 589824... ok! Erasing sector 593920... ok! Erasing sector 598016... ok! Erasing sector 602112... ok! Erasing sector 606208... ok! Erasing sector 610304... ok! Erasing sector 614400... ok! Erasing sector 618496... ok! Erasing sector 622592... ok! Erasing sector 626688... ok! Erasing sector 630784... ok! Erasing sector 634880... ok! Erasing sector 638976... ok! Erasing sector 643072... ok! Erasing sector 647168... ok! Erasing sector 651264... ok! Erasing sector 655360... ok! Erasing sector 659456... ok! Erasing sector 663552... ok! Erasing sector 667648... ok! Erasing sector 671744... ok! Erasing sector 675840... ok! Erasing sector 679936... ok! Erasing sector 684032... ok! Erasing sector 688128... ok! Erasing sector 692224... ok! Erasing sector 696320... ok! Erasing sector 700416... ok! Erasing sector 704512... ok! Erasing sector 708608... ok! Erasing sector 712704... ok! Erasing sector 716800... ok! Erasing sector 720896... ok! Erasing sector 724992... ok! Erasing sector 729088... ok! Erasing sector 733184... ok! Erasing sector 737280... ok! Erasing sector 741376... ok! Erasing sector 745472... ok! Erasing sector 749568... ok! Erasing sector 753664... ok! Erasing sector 757760... ok! Erasing sector 761856... ok! Erasing sector 765952... ok! Erasing sector 770048... ok! Erasing sector 774144... ok! Erasing sector 778240... ok! Erasing sector 782336... ok! Erasing sector 786432... ok! Erasing sector 790528... ok! Erasing sector 794624... ok! Erasing sector 798720... ok! Erasing sector 802816... ok! Erasing sector 806912... ok! Erasing sector 811008... ok! Erasing sector 815104... ok! Erasing sector 819200... ok! Erasing sector 823296... ok! Erasing sector 827392... ok! Erasing sector 831488... ok! Erasing sector 835584... ok! Erasing sector 839680... ok! Erasing sector 843776... ok! Erasing sector 847872... ok! Erasing sector 851968... ok! Erasing sector 856064... ok! Erasing sector 860160... ok! Erasing sector 864256... ok! Erasing sector 868352... ok! Erasing sector 872448... ok! Erasing sector 876544... ok! Erasing sector 880640... ok! Erasing sector 884736... ok! Erasing sector 888832... ok! Erasing sector 892928... ok! Erasing sector 897024... ok! Erasing sector 901120... ok! Erasing sector 905216... ok! Erasing sector 909312... ok! Erasing sector 913408... ok! Erasing sector 917504... ok! Erasing sector 921600... ok! Erasing sector 925696... ok! Erasing sector 929792... ok! Erasing sector 933888... ok! Erasing sector 937984... ok! Erasing sector 942080... ok! Erasing sector 946176... ok! Erasing sector 950272... ok! Erasing sector 954368... ok! Erasing sector 958464... ok! Erasing sector 962560... ok! Erasing sector 966656... ok! Erasing sector 970752... ok! Erasing sector 974848... ok! Erasing sector 978944... ok! Erasing sector 983040... ok! Erasing sector 987136... ok! Erasing sector 991232... ok! Erasing sector 995328... ok! Erasing sector 999424... ok! Erasing sector 1003520... ok! Erasing sector 1007616... ok! Erasing sector 1011712... ok! Erasing sector 1015808... ok! Erasing sector 1019904... ok! Erasing sector 1024000... ok! Erasing sector 1028096... ok! Erasing sector 1032192... ok! Erasing sector 1036288... ok! Erasing sector 1040384... ok! Erasing sector 1044480... ok! Erasing sector 1048576... ok! Erasing sector 1052672... ok! Erasing sector 1056768... ok! Erasing sector 1060864... ok! Erasing sector 1064960... ok! Erasing sector 1069056... ok! Erasing sector 1073152... ok! Erasing sector 1077248... ok! Erasing sector 1081344... ok! Erasing sector 1085440... ok! Erasing sector 1089536... ok! Erasing sector 1093632... ok! Erasing sector 1097728... ok! Erasing sector 1101824... ok! Erasing sector 1105920... ok! Erasing sector 1110016... ok! Erasing sector 1114112... ok! Erasing sector 1118208... ok! Erasing sector 1122304... ok! Erasing sector 1126400... ok! Erasing sector 1130496... ok! Erasing sector 1134592... ok! Erasing sector 1138688... ok! Erasing sector 1142784... ok! Erasing sector 1146880... ok! Erasing sector 1150976... ok! Erasing sector 1155072... ok! Erasing sector 1159168... ok! Erasing sector 1163264... ok! Erasing sector 1167360... ok! Erasing sector 1171456... ok! Erasing sector 1175552... ok! Erasing sector 1179648... ok! Erasing sector 1183744... ok! Erasing sector 1187840... ok! Erasing sector 1191936... ok! Erasing sector 1196032... ok! Erasing sector 1200128... ok! Erasing sector 1204224... ok! Erasing sector 1208320... ok! Erasing sector 1212416... ok! Erasing sector 1216512... ok! Erasing sector 1220608... ok! Erasing sector 1224704... ok! Erasing sector 1228800... ok! Erasing sector 1232896... ok! Erasing sector 1236992... ok! Erasing sector 1241088... ok! Erasing sector 1245184... ok! Erasing sector 1249280... ok! Erasing sector 1253376... ok! Erasing sector 1257472... ok! Erasing sector 1261568... ok! Erasing sector 1265664... ok! Erasing sector 1269760... ok! Erasing sector 1273856... ok! Erasing sector 1277952... ok! Erasing sector 1282048... ok! Erasing sector 1286144... ok! Erasing sector 1290240... ok! Erasing sector 1294336... ok! Erasing sector 1298432... ok! Erasing sector 1302528... ok! Erasing sector 1306624... ok! Erasing sector 1310720... ok! Erasing sector 1314816... ok! Erasing sector 1318912... ok! Erasing sector 1323008... ok! Erasing sector 1327104... ok! Erasing sector 1331200... ok! Erasing sector 1335296... ok! Erasing sector 1339392... ok! Erasing sector 1343488... ok! Erasing sector 1347584... ok! Erasing sector 1351680... ok! Erasing sector 1355776... ok! Erasing sector 1359872... ok! Erasing sector 1363968... ok! Erasing sector 1368064... ok! Erasing sector 1372160... ok! Erasing sector 1376256... ok! Erasing sector 1380352... ok! Erasing sector 1384448... ok! Erasing sector 1388544... ok! Erasing sector 1392640... ok! Erasing sector 1396736... ok! Erasing sector 1400832... ok! Erasing sector 1404928... ok! Erasing sector 1409024... ok! Erasing sector 1413120... ok! Erasing sector 1417216... ok! Erasing sector 1421312... ok! Erasing sector 1425408... ok! Erasing sector 1429504... ok! Erasing sector 1433600... ok! Erasing sector 1437696... ok! Erasing sector 1441792... ok! Erasing sector 1445888... ok! Erasing sector 1449984... ok! Erasing sector 1454080... ok! Erasing sector 1458176... ok! Erasing sector 1462272... ok! Erasing sector 1466368... ok! Erasing sector 1470464... ok! Erasing sector 1474560... ok! Erasing sector 1478656... ok! Erasing sector 1482752... ok! Erasing sector 1486848... ok! Erasing sector 1490944... ok! Erasing sector 1495040... ok! Erasing sector 1499136... ok! Erasing sector 1503232... ok! Erasing sector 1507328... ok! Erasing sector 1511424... ok! Erasing sector 1515520... ok! Erasing sector 1519616... ok! Erasing sector 1523712... ok! Erasing sector 1527808... ok! Erasing sector 1531904... ok! Erasing sector 1536000... ok! Erasing sector 1540096... ok! Erasing sector 1544192... ok! Erasing sector 1548288... ok! Erasing sector 1552384... ok! Erasing sector 1556480... ok! Erasing sector 1560576... ok! Erasing sector 1564672... ok! Erasing sector 1568768... ok! Erasing sector 1572864... ok! Erasing sector 1576960... ok! Erasing sector 1581056... ok! Erasing sector 1585152... ok! Erasing sector 1589248... ok! Erasing sector 1593344... ok! Erasing sector 1597440... ok! Erasing sector 1601536... ok! Erasing sector 1605632... ok! Erasing sector 1609728... ok! Erasing sector 1613824... ok! Erasing sector 1617920... ok! Erasing sector 1622016... ok! Erasing sector 1626112... ok! Erasing sector 1630208... ok! Erasing sector 1634304... ok! Erasing sector 1638400... ok! Erasing sector 1642496... ok! Erasing sector 1646592... ok! Erasing sector 1650688... ok! Erasing sector 1654784... ok! Erasing sector 1658880... ok! Erasing sector 1662976... ok! Erasing sector 1667072... ok! Erasing sector 1671168... ok! Erasing sector 1675264... ok! Erasing sector 1679360... ok! Erasing sector 1683456... ok! Erasing sector 1687552... ok! Erasing sector 1691648... ok! Erasing sector 1695744... ok! Erasing sector 1699840... ok! Erasing sector 1703936... ok! Erasing sector 1708032... ok! Erasing sector 1712128... ok! Erasing sector 1716224... ok! Erasing sector 1720320... ok! Erasing sector 1724416... ok! Erasing sector 1728512... ok! Erasing sector 1732608... ok! Erasing sector 1736704... ok! Erasing sector 1740800... ok! Erasing sector 1744896... ok! Erasing sector 1748992... ok! Erasing sector 1753088... ok! Erasing sector 1757184... ok! Erasing sector 1761280... ok! Erasing sector 1765376... ok! Erasing sector 1769472... ok! Erasing sector 1773568... ok! Erasing sector 1777664... ok! Erasing sector 1781760... ok! Erasing sector 1785856... ok! Erasing sector 1789952... ok! Erasing sector 1794048... ok! Erasing sector 1798144... ok! Erasing sector 1802240... ok! Erasing sector 1806336... ok! Erasing sector 1810432... ok! Erasing sector 1814528... ok! Erasing sector 1818624... ok! Erasing sector 1822720... ok! Erasing sector 1826816... ok! Erasing sector 1830912... ok! Erasing sector 1835008... ok! Erasing sector 1839104... ok! Erasing sector 1843200... ok! Erasing sector 1847296... ok! Erasing sector 1851392... ok! Erasing sector 1855488... ok! Erasing sector 1859584... ok! Erasing sector 1863680... ok! Erasing sector 1867776... ok! Erasing sector 1871872... ok! Erasing sector 1875968... ok! Erasing sector 1880064... ok! Erasing sector 1884160... ok! Erasing sector 1888256... ok! Erasing sector 1892352... ok! Erasing sector 1896448... ok! Erasing sector 1900544... ok! Erasing sector 1904640... ok! Erasing sector 1908736... ok! Erasing sector 1912832... ok! Erasing sector 1916928... ok! Erasing sector 1921024... ok! Erasing sector 1925120... ok! Erasing sector 1929216... ok! Erasing sector 1933312... ok! Erasing sector 1937408... ok! Erasing sector 1941504... ok! Erasing sector 1945600... ok! Erasing sector 1949696... ok! Erasing sector 1953792... ok! Erasing sector 1957888... ok! Erasing sector 1961984... ok! Erasing sector 1966080... ok! Erasing sector 1970176... ok! Erasing sector 1974272... ok! Erasing sector 1978368... ok! Erasing sector 1982464... ok! Erasing sector 1986560... ok! Erasing sector 1990656... ok! Erasing sector 1994752... ok! Erasing sector 1998848... ok! Erasing sector 2002944... ok! Erasing sector 2007040... ok! Erasing sector 2011136... ok! Erasing sector 2015232... ok! Erasing sector 2019328... ok! Erasing sector 2023424... ok! Erasing sector 2027520... ok! Erasing sector 2031616... ok! Erasing sector 2035712... ok! Erasing sector 2039808... ok! Erasing sector 2043904... ok! Erasing sector 2048000... ok! Erasing sector 2052096... ok! Erasing sector 2056192... ok! Erasing sector 2060288... ok! Erasing sector 2064384... ok! Erasing sector 2068480... ok! Erasing sector 2072576... ok! Erasing sector 2076672... ok! Erasing sector 2080768... ok! Erasing sector 2084864... ok! Erasing sector 2088960... ok! Erasing sector 2093056... ok! 
    All selected sectors erased!
    Writing sector 0x00... ok! Writing sector 0x1000... ok! Writing sector 0x2000... ok! Writing sector 0x3000... ok! Writing sector 0x4000... ok! Writing sector 0x5000... ok! Writing sector 0x6000... ok! Writing sector 0x7000... ok! Writing sector 0x8000... ok! Writing sector 0x9000... ok! Writing sector 0xA000... ok! Writing sector 0xB000... ok! Writing sector 0xC000... ok! Writing sector 0xD000... ok! Writing sector 0xE000... ok! Writing sector 0xF000... ok! Writing sector 0x10000... ok! Writing sector 0x11000... ok! Writing sector 0x12000... ok! Writing sector 0x13000... ok! Writing sector 0x14000... ok! Writing sector 0x15000... ok! Writing sector 0x16000... ok! Writing sector 0x17000... ok! Writing sector 0x18000... ok! Writing sector 0x19000... ok! Writing sector 0x1A000... ok! Writing sector 0x1B000... ok! Writing sector 0x1C000... ok! Writing sector 0x1D000... ok! Writing sector 0x1E000... ok! Writing sector 0x1F000... ok! Writing sector 0x20000... ok! Writing sector 0x21000... ok! Writing sector 0x22000... ok! Writing sector 0x23000... ok! Writing sector 0x24000... ok! Writing sector 0x25000... ok! Writing sector 0x26000... ok! Writing sector 0x27000... ok! Writing sector 0x28000... ok! Writing sector 0x29000... ok! Writing sector 0x2A000... ok! Writing sector 0x2B000... ok! Writing sector 0x2C000... ok! Writing sector 0x2D000... ok! Writing sector 0x2E000... ok! Writing sector 0x2F000... ok! Writing sector 0x30000... ok! Writing sector 0x31000... ok! Writing sector 0x32000... ok! Writing sector 0x33000... ok! Writing sector 0x34000... ok! Writing sector 0x35000... ok! Writing sector 0x36000... ok! Writing sector 0x37000... ok! Writing sector 0x38000... ok! Writing sector 0x39000... ok! Writing sector 0x3A000... ok! Writing sector 0x3B000... ok! Writing sector 0x3C000... ok! Writing sector 0x3D000... ok! Writing sector 0x3E000... ok! Writing sector 0x3F000... ok! Writing sector 0x40000... ok! Writing sector 0x41000... ok! Writing sector 0x42000... ok! Writing sector 0x43000... ok! Writing sector 0x44000... ok! Writing sector 0x45000... ok! Writing sector 0x46000... ok! Writing sector 0x47000... ok! Writing sector 0x48000... ok! Writing sector 0x49000... ok! Writing sector 0x4A000... ok! Writing sector 0x4B000... ok! Writing sector 0x4C000... ok! Writing sector 0x4D000... ok! Writing sector 0x4E000... ok! Writing sector 0x4F000... ok! Writing sector 0x50000... ok! Writing sector 0x51000... ok! Writing sector 0x52000... ok! Writing sector 0x53000... ok! Writing sector 0x54000... ok! Writing sector 0x55000... ok! Writing sector 0x56000... ok! Writing sector 0x57000... ok! Writing sector 0x58000... ok! Writing sector 0x59000... ok! Writing sector 0x5A000... ok! Writing sector 0x5B000... ok! Writing sector 0x5C000... ok! Writing sector 0x5D000... ok! Writing sector 0x5E000... ok! Writing sector 0x5F000... ok! Writing sector 0x60000... ok! Writing sector 0x61000... ok! Writing sector 0x62000... ok! Writing sector 0x63000... ok! Writing sector 0x64000... ok! Writing sector 0x65000... ok! Writing sector 0x66000... ok! Writing sector 0x67000... ok! Writing sector 0x68000... ok! Writing sector 0x69000... ok! Writing sector 0x6A000... ok! Writing sector 0x6B000... ok! Writing sector 0x6C000... ok! Writing sector 0x6D000... ok! Writing sector 0x6E000... ok! Writing sector 0x6F000... ok! Writing sector 0x70000... ok! Writing sector 0x71000... ok! Writing sector 0x72000... ok! Writing sector 0x73000... ok! Writing sector 0x74000... ok! Writing sector 0x75000... ok! Writing sector 0x76000... ok! Writing sector 0x77000... ok! Writing sector 0x78000... ok! Writing sector 0x79000... ok! Writing sector 0x7A000... ok! Writing sector 0x7B000... ok! Writing sector 0x7C000... ok! Writing sector 0x7D000... ok! Writing sector 0x7E000... ok! Writing sector 0x7F000... ok! Writing sector 0x80000... ok! Writing sector 0x81000... ok! Writing sector 0x82000... ok! Writing sector 0x83000... ok! Writing sector 0x84000... ok! Writing sector 0x85000... ok! Writing sector 0x86000... ok! Writing sector 0x87000... ok! Writing sector 0x88000... ok! Writing sector 0x89000... ok! Writing sector 0x8A000... ok! Writing sector 0x8B000... ok! Writing sector 0x8C000... ok! Writing sector 0x8D000... ok! Writing sector 0x8E000... ok! Writing sector 0x8F000... ok! Writing sector 0x90000... ok! Writing sector 0x91000... ok! Writing sector 0x92000... ok! Writing sector 0x93000... ok! Writing sector 0x94000... ok! Writing sector 0x95000... ok! Writing sector 0x96000... ok! Writing sector 0x97000... ok! Writing sector 0x98000... ok! Writing sector 0x99000... ok! Writing sector 0x9A000... ok! Writing sector 0x9B000... ok! Writing sector 0x9C000... ok! Writing sector 0x9D000... ok! Writing sector 0x9E000... ok! Writing sector 0x9F000... ok! Writing sector 0xA0000... ok! Writing sector 0xA1000... ok! Writing sector 0xA2000... ok! Writing sector 0xA3000... ok! Writing sector 0xA4000... ok! Writing sector 0xA5000... ok! Writing sector 0xA6000... ok! Writing sector 0xA7000... ok! Writing sector 0xA8000... ok! Writing sector 0xA9000... ok! Writing sector 0xAA000... ok! Writing sector 0xAB000... ok! Writing sector 0xAC000... ok! Writing sector 0xAD000... ok! Writing sector 0xAE000... ok! Writing sector 0xAF000... ok! Writing sector 0xB0000... ok! Writing sector 0xB1000... ok! Writing sector 0xB2000... ok! Writing sector 0xB3000... ok! Writing sector 0xB4000... ok! Writing sector 0xB5000... ok! Writing sector 0xB6000... ok! Writing sector 0xB7000... ok! Writing sector 0xB8000... ok! Writing sector 0xB9000... ok! Writing sector 0xBA000... ok! Writing sector 0xBB000... ok! Writing sector 0xBC000... ok! Writing sector 0xBD000... ok! Writing sector 0xBE000... ok! Writing sector 0xBF000... ok! Writing sector 0xC0000... ok! Writing sector 0xC1000... ok! Writing sector 0xC2000... ok! Writing sector 0xC3000... ok! Writing sector 0xC4000... ok! Writing sector 0xC5000... ok! Writing sector 0xC6000... ok! Writing sector 0xC7000... ok! Writing sector 0xC8000... ok! Writing sector 0xC9000... ok! Writing sector 0xCA000... ok! Writing sector 0xCB000... ok! Writing sector 0xCC000... ok! Writing sector 0xCD000... ok! Writing sector 0xCE000... ok! Writing sector 0xCF000... ok! Writing sector 0xD0000... ok! Writing sector 0xD1000... ok! Writing sector 0xD2000... ok! Writing sector 0xD3000... ok! Writing sector 0xD4000... ok! Writing sector 0xD5000... ok! Writing sector 0xD6000... ok! Writing sector 0xD7000... ok! Writing sector 0xD8000... ok! Writing sector 0xD9000... ok! Writing sector 0xDA000... ok! Writing sector 0xDB000... ok! Writing sector 0xDC000... ok! Writing sector 0xDD000... ok! Writing sector 0xDE000... ok! Writing sector 0xDF000... ok! Writing sector 0xE0000... ok! Writing sector 0xE1000... ok! Writing sector 0xE2000... ok! Writing sector 0xE3000... ok! Writing sector 0xE4000... ok! Writing sector 0xE5000... ok! Writing sector 0xE6000... ok! Writing sector 0xE7000... ok! Writing sector 0xE8000... ok! Writing sector 0xE9000... ok! Writing sector 0xEA000... ok! Writing sector 0xEB000... ok! Writing sector 0xEC000... ok! Writing sector 0xED000... ok! Writing sector 0xEE000... ok! Writing sector 0xEF000... ok! Writing sector 0xF0000... ok! Writing sector 0xF1000... ok! Writing sector 0xF2000... ok! Writing sector 0xF3000... ok! Writing sector 0xF4000... ok! Writing sector 0xF5000... ok! Writing sector 0xF6000... ok! Writing sector 0xF7000... ok! Writing sector 0xF8000... ok! Writing sector 0xF9000... ok! Writing sector 0xFA000... ok! Writing sector 0xFB000... ok! Writing sector 0xFC000... ok! Writing sector 0xFD000... ok! Writing sector 0xFE000... ok! Writing sector 0xFF000... ok! Writing sector 0x100000... ok! Writing sector 0x101000... ok! Writing sector 0x102000... ok! Writing sector 0x103000... ok! Writing sector 0x104000... ok! Writing sector 0x105000... ok! Writing sector 0x106000... ok! Writing sector 0x107000... ok! Writing sector 0x108000... ok! Writing sector 0x109000... ok! Writing sector 0x10A000... ok! Writing sector 0x10B000... ok! Writing sector 0x10C000... ok! Writing sector 0x10D000... ok! Writing sector 0x10E000... ok! Writing sector 0x10F000... ok! Writing sector 0x110000... ok! Writing sector 0x111000... ok! Writing sector 0x112000... ok! Writing sector 0x113000... ok! Writing sector 0x114000... ok! Writing sector 0x115000... ok! Writing sector 0x116000... ok! Writing sector 0x117000... ok! Writing sector 0x118000... ok! Writing sector 0x119000... ok! Writing sector 0x11A000... ok! Writing sector 0x11B000... ok! Writing sector 0x11C000... ok! Writing sector 0x11D000... ok! Writing sector 0x11E000... ok! Writing sector 0x11F000... ok! Writing sector 0x120000... ok! Writing sector 0x121000... ok! Writing sector 0x122000... ok! Writing sector 0x123000... ok! Writing sector 0x124000... ok! Writing sector 0x125000... ok! Writing sector 0x126000... ok! Writing sector 0x127000... ok! Writing sector 0x128000... ok! Writing sector 0x129000... ok! Writing sector 0x12A000... ok! Writing sector 0x12B000... ok! Writing sector 0x12C000... ok! Writing sector 0x12D000... ok! Writing sector 0x12E000... ok! Writing sector 0x12F000... ok! Writing sector 0x130000... ok! Writing sector 0x131000... ok! Writing sector 0x132000... ok! Writing sector 0x133000... ok! Writing sector 0x134000... ok! Writing sector 0x135000... ok! Writing sector 0x136000... ok! Writing sector 0x137000... ok! Writing sector 0x138000... ok! Writing sector 0x139000... ok! Writing sector 0x13A000... ok! Writing sector 0x13B000... ok! Writing sector 0x13C000... ok! Writing sector 0x13D000... ok! Writing sector 0x13E000... ok! Writing sector 0x13F000... ok! Writing sector 0x140000... ok! Writing sector 0x141000... ok! Writing sector 0x142000... ok! Writing sector 0x143000... ok! Writing sector 0x144000... ok! Writing sector 0x145000... ok! Writing sector 0x146000... ok! Writing sector 0x147000... ok! Writing sector 0x148000... ok! Writing sector 0x149000... ok! Writing sector 0x14A000... ok! Writing sector 0x14B000... ok! Writing sector 0x14C000... ok! Writing sector 0x14D000... ok! Writing sector 0x14E000... ok! Writing sector 0x14F000... ok! Writing sector 0x150000... ok! Writing sector 0x151000... ok! Writing sector 0x152000... ok! Writing sector 0x153000... ok! Writing sector 0x154000... ok! Writing sector 0x155000... ok! Writing sector 0x156000... ok! Writing sector 0x157000... ok! Writing sector 0x158000... ok! Writing sector 0x159000... ok! Writing sector 0x15A000... ok! Writing sector 0x15B000... ok! Writing sector 0x15C000... ok! Writing sector 0x15D000... ok! Writing sector 0x15E000... ok! Writing sector 0x15F000... ok! Writing sector 0x160000... ok! Writing sector 0x161000... ok! Writing sector 0x162000... ok! Writing sector 0x163000... ok! Writing sector 0x164000... ok! Writing sector 0x165000... ok! Writing sector 0x166000... ok! Writing sector 0x167000... ok! Writing sector 0x168000... ok! Writing sector 0x169000... ok! Writing sector 0x16A000... ok! Writing sector 0x16B000... ok! Writing sector 0x16C000... ok! Writing sector 0x16D000... ok! Writing sector 0x16E000... ok! Writing sector 0x16F000... ok! Writing sector 0x170000... ok! Writing sector 0x171000... ok! Writing sector 0x172000... ok! Writing sector 0x173000... ok! Writing sector 0x174000... ok! Writing sector 0x175000... ok! Writing sector 0x176000... ok! Writing sector 0x177000... ok! Writing sector 0x178000... ok! Writing sector 0x179000... ok! Writing sector 0x17A000... ok! Writing sector 0x17B000... ok! Writing sector 0x17C000... ok! Writing sector 0x17D000... ok! Writing sector 0x17E000... ok! Writing sector 0x17F000... ok! Writing sector 0x180000... ok! Writing sector 0x181000... ok! Writing sector 0x182000... ok! Writing sector 0x183000... ok! Writing sector 0x184000... ok! Writing sector 0x185000... ok! Writing sector 0x186000... ok! Writing sector 0x187000... ok! Writing sector 0x188000... ok! Writing sector 0x189000... ok! Writing sector 0x18A000... ok! Writing sector 0x18B000... ok! Writing sector 0x18C000... ok! Writing sector 0x18D000... ok! Writing sector 0x18E000... ok! Writing sector 0x18F000... ok! Writing sector 0x190000... ok! Writing sector 0x191000... ok! Writing sector 0x192000... ok! Writing sector 0x193000... ok! Writing sector 0x194000... ok! Writing sector 0x195000... ok! Writing sector 0x196000... ok! Writing sector 0x197000... ok! Writing sector 0x198000... ok! Writing sector 0x199000... ok! Writing sector 0x19A000... ok! Writing sector 0x19B000... ok! Writing sector 0x19C000... ok! Writing sector 0x19D000... ok! Writing sector 0x19E000... ok! Writing sector 0x19F000... ok! Writing sector 0x1A0000... ok! Writing sector 0x1A1000... ok! Writing sector 0x1A2000... ok! Writing sector 0x1A3000... ok! Writing sector 0x1A4000... ok! Writing sector 0x1A5000... ok! Writing sector 0x1A6000... ok! Writing sector 0x1A7000... ok! Writing sector 0x1A8000... ok! Writing sector 0x1A9000... ok! Writing sector 0x1AA000... ok! Writing sector 0x1AB000... ok! Writing sector 0x1AC000... ok! Writing sector 0x1AD000... ok! Writing sector 0x1AE000... ok! Writing sector 0x1AF000... ok! Writing sector 0x1B0000... ok! Writing sector 0x1B1000... ok! Writing sector 0x1B2000... ok! Writing sector 0x1B3000... ok! Writing sector 0x1B4000... ok! Writing sector 0x1B5000... ok! Writing sector 0x1B6000... ok! Writing sector 0x1B7000... ok! Writing sector 0x1B8000... ok! Writing sector 0x1B9000... ok! Writing sector 0x1BA000... ok! Writing sector 0x1BB000... ok! Writing sector 0x1BC000... ok! Writing sector 0x1BD000... ok! Writing sector 0x1BE000... ok! Writing sector 0x1BF000... ok! Writing sector 0x1C0000... ok! Writing sector 0x1C1000... ok! Writing sector 0x1C2000... ok! Writing sector 0x1C3000... ok! Writing sector 0x1C4000... ok! Writing sector 0x1C5000... ok! Writing sector 0x1C6000... ok! Writing sector 0x1C7000... ok! Writing sector 0x1C8000... ok! Writing sector 0x1C9000... ok! Writing sector 0x1CA000... ok! Writing sector 0x1CB000... ok! Writing sector 0x1CC000... ok! Writing sector 0x1CD000... ok! Writing sector 0x1CE000... ok! Writing sector 0x1CF000... ok! Writing sector 0x1D0000... ok! Writing sector 0x1D1000... ok! Writing sector 0x1D2000... ok! Writing sector 0x1D3000... ok! Writing sector 0x1D4000... ok! Writing sector 0x1D5000... ok! Writing sector 0x1D6000... ok! Writing sector 0x1D7000... ok! Writing sector 0x1D8000... ok! Writing sector 0x1D9000... ok! Writing sector 0x1DA000... ok! Writing sector 0x1DB000... ok! Writing sector 0x1DC000... ok! Writing sector 0x1DD000... ok! Writing sector 0x1DE000... ok! Writing sector 0x1DF000... ok! Writing sector 0x1E0000... ok! Writing sector 0x1E1000... ok! Writing sector 0x1E2000... ok! Writing sector 0x1E3000... ok! Writing sector 0x1E4000... ok! Writing sector 0x1E5000... ok! Writing sector 0x1E6000... ok! Writing sector 0x1E7000... ok! Writing sector 0x1E8000... ok! Writing sector 0x1E9000... ok! Writing sector 0x1EA000... ok! Writing sector 0x1EB000... ok! Writing sector 0x1EC000... ok! Writing sector 0x1ED000... ok! Writing sector 0x1EE000... ok! Writing sector 0x1EF000... ok! Writing sector 0x1F0000... ok! Writing sector 0x1F1000... ok! Writing sector 0x1F2000... ok! Writing sector 0x1F3000... ok! Writing sector 0x1F4000... ok! Writing sector 0x1F5000... ok! Writing sector 0x1F6000... ok! Writing sector 0x1F7000... ok! Writing sector 0x1F8000... ok! Writing sector 0x1F9000... ok! Writing sector 0x1FA000... ok! Writing sector 0x1FB000... ok! Writing sector 0x1FC000... ok! Writing sector 0x1FD000... ok! Writing sector 0x1FE000... ok! Writing sector 0x1FF000... ok! Starting CRC check for 512 sectors, starting at offset 0x00
    CRC mismatch!
    Send by BK 0x5806DC0, our CRC 0x46B6E35B
    Maybe you have wrong chip type set?
    Did you set BK7231T but have in reality BK7231N or BK7231M?
    Writing file data to chip failed.
    
    

    and now I open RealTerm and press EN again on board. It still identifies as www.sparkleiot.com and still has AT:
    Screenshot of Easy UART Flasher and RealTerm program showing flash memory operations with a CRC error.
    What do you think?

    Added after 3 [minutes]:

    UPDATE:
    I did 2MB read in Easy Flasher directly afterwards, the flash still contains "sparkleiot", and it's unecrypted as @insmod correctly pointed out:
    Hex editor with binary file content displaying sparkleiot text.
    So I am forced to conclude that no Erase and neither write has actually happened in my case.
    Helpful post? Buy me a coffee.
  • #67 21342237
    divadiow
    Level 35  
    divadiow wrote:
    Are you doing BL overwrite too or letting EF split up the bin?

    but also, I've just custom-erased everything on BK7238 from 0x11000 onwards (which then boot-loops because of no app data)

    If I write a BK7238 fw back from 0x11000 I get a working device again.
    Everything I'm doing seems to prove EF is writing back OK for me.

    I am using EF 1.3.4

    Screenshot of the BK7231 flashing software showing a successful write.

    Added after 1 [minutes]:

    I'll overwrite with an Atorch BKN too and report back

    Added after 6 [minutes]:

    OK, so I erased ALL again with BKFIL - took a flash backup after - it's empty. Restored BK7238 fw inc bootloader with EF and the image boots and is pairable with Zengge app.

    Added after 3 [minutes]:

    erased all. flashed Atorch S1, backed-up firmware from device. compared what was flashed with what backed-up

    Comparison of two binary files in a hexadecimal editor.

    Added after 15 [minutes]:

    >>21342220

    trimmed 0x11000 from OpenBK7231M_QIO_1.17.798.bin and flashed to 0x11000 on BK7238

    User interface of a firmware flashing application with binary file settings.

    loops with
    Screenshot of BK7238 boot logs with ARM ANOMALY error message.

    Added after 1 [minutes]:

    flashed virgin OpenBK7231M_QIO_1.17.798.bin from 0x0 and no boot output at all

    Added after 2 [minutes]:

    would it be interesting to get BK7231M RBLs generated too for flashing to OTA partition?
  • Helpful post
    #68 21342321
    insmod
    Level 26  
    >>21342237 I believe N rbls are the same as M, because they are generated from unencrypted binaries. The aes key should be identical in them.
  • #69 21342347
    p.kaczmarek2
    Moderator Smart Home
    I am not sure what's going on, but I've got an idea. Maybe I can capture UART communication with Salae logic analyzer and compare what's going on?

    I've did read and write with my flasher:
    Screenshot of the BK7231 Easy UART Flasher application with FormCustom window.
    And now write in bkfil:
    Screenshot of the Beken Flash Image Loader (BKFIL) interface displaying flash memory erase progress.

    You can open captures in PulseView and add UART decoder. Here is ERASE command:
    UART signal analysis in PulseView with displayed hexadecimal data.
    szCmd can have two values:
    
        SECTOR_4K = 0x20
        BLOCK_64K = 0xD8
    

    This can be compared with our source code to see what's different:
    C# code snippet with data sequence analysis in PulseView.
    Captures in attachment, you can open them in Pulseview, anyone up for some analysis?
    Helpful post? Buy me a coffee.
  • #70 21342363
    DeDaMrAz
    Level 20  
    p.kaczmarek2 wrote:
    Captures in attachment, you can open them in Pulseview, anyone up for some analysis?


    My device has not yet arrived :/

    What I am reading in here looks like a unsupported flash chip for some reason.
  • #71 21342384
    p.kaczmarek2
    Moderator Smart Home
    My idea is to compare the BKFIL flash write operation capture with the source code of our flasher and see what we are doing incorrectly.
    https://github.com/openshwprojects/BK7231GUIF...Tool/blob/main/BK7231Flasher/BK7231Flasher.cs

    Added after 48 [minutes]:

    Ok so first we have different baud rate:
    UART protocol snapshot in Pulseview showing break conditions and register values.
    You need to adjust Pulseview UART decoder to read it.
    Once baud rate is set, one of first commands is Read MID:
    Source code snippet related to the operation of reading the manufacturer ID of flash memory.

    Added after 13 [minutes]:

    What is this, directly before first FLASH ERASE? Ah, Read SR, for address 0x35
    Code snippet and UART signal diagram with FlashReadSR command.
    Where does 0x35 come from? In our flasher... it depends on flash type?
    Code: C / C++
    Log in, to see the code

    but... it fails to find flash for us?
    Screenshot from a code editor showing a C# code snippet for flash memory operations in the BK7231Flasher project.
    This would mean we have uncorrect:

    Code: C / C++
    Log in, to see the code

    so we can't unprotect the flash, so write fails

    Added after 1 [minutes]:

    Wait, we don't even attempt to unprotect it in our flasher! It returns early:

    Screenshot of BK7231Flasher source code with a highlighted line indicating an error reading MID value.
    Helpful post? Buy me a coffee.
  • #72 21342512
    DeDaMrAz
    Level 20  
    p.kaczmarek2 wrote:
    ...so we can't unprotect the flash, so write fails


    That looks like a difference, can you capture the N device UART flashing log so we can compare?
  • #73 21342518
    divadiow
    Level 35  
    but my device has flash ID 852015 too
  • #74 21342531
    p.kaczmarek2
    Moderator Smart Home
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #76 21342754
    insmod
    Level 26  
    Maybe also add something like
    serial.RtsEnable = true;
    Thread.Sleep(10);
    serial.RtsEnable = false;

    before getting bus? This should automatically reset any dev board, or, if manually wiring rts->cen, remove the need to manually trigger chip reset.

    And considering i have seen a 4mb beken N, change the code to automatically adjust read size to what was detected
  • #77 21342809
    DeDaMrAz
    Level 20  
    insmod wrote:
    And considering i have seen a 4mb beken N, change the code to automatically adjust read size to what was detected


    Wow 4Mb!! I just mentioned such a thing to @p.kaczmarek2 as there seems to be 32Mb (!!??!!) chips out there at least based on the flash ID identifiers.
  • #78 21342904
    divadiow
    Level 35  
    insmod wrote:
    change the code to automatically adjust read size to what was detected


    yes, that change might mean success for this device?

    https://www.elektroda.com/rtvforum/topic4086986.html

    Code: Text
    Log in, to see the code


    Not sure why it's FLASH_ID_NA and not
    Code: Text
    Log in, to see the code


    GigaDevice GD25Q32
  • #79 21343311
    max4elektroda
    Level 20  
    Wish my device had arrived yet, but it will last another week I fear.
    But this way I can lay back and enjoy your work later ;-)
    Thanks!!
  • #80 21343454
    divadiow
    Level 35  
    you're missing out!
  • #81 21361562
    p.kaczmarek2
    Moderator Smart Home
    So what's the state of this PR, @insmod ? I would like to merge it soon. Is futher testing needed?
    https://github.com/openshwprojects/OpenBK7231T_App/pull/1451
    Helpful post? Buy me a coffee.
  • #83 21361788
    p.kaczmarek2
    Moderator Smart Home
    Ah, okay. If that's soon, then I will just wait, otherwise I will think about some temporary merge or do some tests in your PR.
    By the way, if it has a newer BK7231N SDK, please for the time being keep both old OpenBK7231N and new port, at least in the workflow and artifacts. This will help with testing. Once we are sure that newer BK7231N SDK works, we will just switch links in Releases page.
    I've started playing with my XH-WB3S_V2.0 more (XH-WB3S version 2?):
    Electronic modules on a wooden surface. CB3S and XH-WB3S modules and NiceMCU_WB3S_V1 board on a table.
    XH-WB3S pinout is slightly different than CB3S. CEN is moved... but they also routed out P16, which is still hardware SPI OUT, that's good for WS2812.
    Here is some doc I've found:
    Circuit diagram with XH-WB3S module
    Helpful post? Buy me a coffee.
  • #84 21364327
    p.kaczmarek2
    Moderator Smart Home
    Recently I've did a very simple classic CB2S to NiceMCU transplant: CB2S/WB2S cheap dev board made from NiceMCU_WB3S_V1 (replace WB3S with WB2S/etc) . It might be good idea for anyone looking for cheap CB2S/WB2S dev boards, as NiceMCU is very cheap (as low as 1$ for new clients) and with my approach, the pin indexes on silkscreen are not mixed after conversion.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #85 21384845
    irekhq
    Level 13  
    The package arrived, I wanted to play around, what am I doing wrong ?
    I also checked on OpenBK7231N_QIO_1.18.14.bin
    Screenshot of BK7231 Easy UART Flasher software with open operation panel and activity log. .

    Screen with debugging information for the BK7238 system.
  • #86 21384885
    p.kaczmarek2
    Moderator Smart Home
    This requires a compilation from this PR, which is not yet in the official repository. This is the BK7238, not the BK7231. The naming of WB3S by the board manufacturer is unfortunate.
    https://github.com/openshwprojects/OpenBK7231T_App/pull/1451
    There were ready binaries for BK7238 on the forum too, but they are not yet in the official Releases.


    @insmod can we please merge this PR into the releases?
    Helpful post? Buy me a coffee.
  • #88 21384957
    p.kaczmarek2
    Moderator Smart Home
    I know, it's just that we have impatient users and we might need a temporary solution.

    We need to merge Realtek fast. I hope to merge the new driver defines today and then merge realtek, i don't know, tomorrow?
    Helpful post? Buy me a coffee.
  • #89 21386532
    insmod
    Level 26  
    I tried to flash empty sdk compiled as bk7231u to HLK-B30 with cc8000 chip.
    Results in bootloop, so something must be different. Flashing OTA results in the same.
    No "ARM ANOMALY", just loops.

    BKFIL cannot detect it, loops after "Gotten Bus..."

Topic summary

The discussion centers on the NiceMCU XH-WB3S development board featuring the BK7238 SoC, initially suspected to be BK7231T but confirmed as BK7238. Users share experiences with flashing, testing, and porting firmware, including challenges with encryption keys, flash IDs, and bootloader compatibility. The BK7238 uses 2MB flash with varying encryption keys per chip, complicating universal firmware flashing. Tools like BKFIL and Easy Flasher (EF) are used for backup and restore, with EF supporting full flash erase and restore including bootloader. Flash ID support was extended to include missing flash chips to avoid CRC errors. Arduino SDK and Beken FreeRTOS SDK (version 3.0.70.1 and newer 3.0.76) are referenced for development, with partial support for BK7238 and related chips (BK7231N, BK7231U, BK7252). Porting efforts include adapting delay functions for 160MHz BK7238, resolving flashvars alignment issues due to 64-bit time_t, and addressing HTTP server and TCP socket stability problems in LWIP. OTA updates are functional but require correct image types and bootloader versions. Power save modes and their impact on peripherals like BL0937 energy meter and DS18B20 sensors are discussed, with some instability noted under power save. SPI flashing and UART flashing methods are compared, with SPI preferred for some devices. BK7231U (CC8000 chip) support is emerging, with builds available but some undefined references and boot issues. BK7252 camera module support is experimental, with encrypted flash complicating firmware use. Users report issues with DS18B20 sensor timing on BK7238 due to delay_us inaccuracies, partially fixed by new SDK delay implementations. Logging and MQTT load affect system stability and sensor reading consistency. The community shares flash dumps, toolchain links, and SDK forks to aid development and testing. Overall, the thread provides detailed technical insights into BK7238-based NiceMCU boards' flashing, SDK porting, peripheral support, and firmware development challenges and progress.
Summary generated by the language model.
ADVERTISEMENT