flashrom is a utility for detecting, reading, writing, verifying and erasing flash chips

Overview
-------------------------------------------------------------------------------
flashrom README
-------------------------------------------------------------------------------

flashrom is a utility for detecting, reading, writing, verifying and erasing
flash chips. It is often used to flash BIOS/EFI/coreboot/firmware images
in-system using a supported mainboard, but it also supports flashing of network
cards (NICs), SATA controller cards, and other external devices which can
program flash chips.

It supports a wide range of flash chips (most commonly found in SOIC8, DIP8,
SOIC16, WSON8, PLCC32, DIP32, TSOP32, and TSOP40 packages), which use various
protocols such as LPC, FWH, parallel flash, or SPI.

Do not use flashrom on laptops (yet)! The embedded controller (EC) present in
many laptops might interact badly with any attempts to communicate with the
flash chip and may brick your laptop.

Please make a backup of your flash chip before writing to it.

Please see the flashrom(8) manpage.


Packaging
---------

To package flashrom and remove dependencies on Git, either use
make export
or
make tarball

'make export' will export all flashrom files from the Git repository at
revision HEAD into a directory named "$EXPORTDIR/flashrom-$RELEASENAME"
and will additionally add a "versioninfo.inc" file in that directory to
contain the Git revision of the exported tree and a date for the manual
page.

'make tarball' will simply tar up the result of make export and compress
it with bzip2.

The snapshot tarballs are the result of 'make tarball' and require no
further processing.


Build Instructions
------------------

To build flashrom you need to install the following software:

 * pciutils+libpci (if you want support for mainboard or PCI device flashing)
 * libusb (if you want FT2232, Dediprog or USB-Blaster support)
 * libftdi (if you want FT2232 or USB-Blaster support)
 * libjaylink (if you want support for SEGGER J-Link and compatible devices)

Linux et al:

 * pciutils / libpci
 * pciutils-devel / pciutils-dev / libpci-dev
 * zlib-devel / zlib1g-dev (needed if libpci was compiled with libz support)

On FreeBSD, you need the following ports:

 * devel/gmake
 * devel/libpci

On OpenBSD, you need the following ports:

 * devel/gmake
 * sysutils/pciutils

To compile on Linux, use:

 make

To compile on FreeBSD, OpenBSD or DragonFly BSD, use:

 gmake

To compile on Nexenta, use:

 make

To compile on Solaris, use:

 gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2

To compile on NetBSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use:

 gmake

To compile and run on Darwin/Mac OS X:

 Install DirectHW from coresystems GmbH.
 DirectHW is available at http://www.coreboot.org/DirectHW .

To cross-compile on Linux for DOS:

 Get packages of the DJGPP cross compiler and install them:
 djgpp-filesystem djgpp-gcc djgpp-cpp djgpp-runtime djgpp-binutils
 As an alternative, the DJGPP web site offers packages for download as well:
 djcross-binutils-2.29.1-1ap.x86_64.rpm
 djcross-gcc-7.2.0-1ap.x86_64.rpm
 djcrx-2.05-5.x86_64.rpm
 The cross toolchain packages for your distribution may have slightly different
 names (look for packages named *djgpp*).

 Alternatively, you could use a script to build it from scratch:
 https://github.com/andrewwutw/build-djgpp

 You will need the libpci and libgetopt library source trees and
 their compiled static libraries and header files installed in some
 directory say libpci-libgetopt/, which will be later specified with
 LIBS_BASE parameter during flashrom compilation. Easiest way to
 handle it is to put pciutils, libgetopt and flashrom directories
 in one subdirectory. There will be an extra subdirectory libpci-libgetopt
 created, which will contain compiled libpci and libgetopt.

 Download pciutils 3.5.6 and apply http://flashrom.org/File:Pciutils-3.5.6.patch.gz
 Compile pciutils, using following command line:

 make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \
     PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt  \
     STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib

 Download and compile with 'make' http://flashrom.org/File:Libgetopt.tar.gz

 Copy the libgetopt.a to ../libpci-libgetopt/lib and
 getopt.h to ../libpci-libgetopt/include

 Enter the flashrom directory.

 make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip

 If you like, you can compress the resulting executable with UPX:

 upx -9 flashrom.exe

 To run flashrom.exe, download http://flashrom.org/File:Csdpmi7b.zip and
 unpack CWSDPMI.EXE into the current directory or one in PATH.

To cross-compile on Linux for Windows:

 Get packages of the MinGW cross compiler and install them:
 mingw32-filesystem mingw32-cross-cpp mingw32-cross-binutils mingw32-cross-gcc
 mingw32-runtime mingw32-headers
 The cross toolchain packages for your distribution may have slightly different
 names (look for packages named *mingw*).
 PCI-based programmers (internal etc.) are not supported on Windows.
 Run (change CC= and STRIP= settings where appropriate)
 make CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip

Processor architecture dependent features:

 On non-x86 architectures a few programmers don't work (yet) because they
 use port-based I/O which is not directly available on non-x86. Those
 programmers will be disabled automatically if you run "make".

Compiler quirks:

If you are using clang and if you want to enable only one driver, you may hit an
overzealous compiler warning from clang. Compile with "make WARNERROR=no" to
force it to continue and enjoy.

Installation
------------

In order to install flashrom and the manpage into /usr/local, type:

 make install

For installation in a different directory use DESTDIR, e.g. like this:

 make DESTDIR=/usr install

If you have insufficient permissions for the destination directory, use sudo
by adding sudo in front of the commands above.


Contact
-------

The official flashrom website is:

  http://www.flashrom.org/

Available contact methods are

  https://www.flashrom.org/Contact
Comments
  • mec1308.c build failed

    mec1308.c build failed

    septs@CBDesktop02 ~ $ brew install flashrom --HEAD
    Updating Homebrew...
    ==> Cloning https://review.coreboot.org/flashrom.git
    Updating /Users/septs/Library/Caches/Homebrew/flashrom--git
    ==> Checking out branch master
    Already on 'master'
    Your branch is up to date with 'origin/master'.
    HEAD is now at 06ca247 flashrom.c,flash.h: Kill dead fn shutdown_free()
    ==> make DESTDIR=/usr/local/Cellar/flashrom/HEAD-06ca247 PREFIX=/ install
    Last 15 lines from /Users/septs/Library/Logs/Homebrew/flashrom/01.make:
    2 errors generated.
    make: *** [ene_lpc.o] Error 1
    make: *** Waiting for unfinished jobs....
    mec1308.c:512:2: error: use of undeclared identifier 'internal_buses_supported'; did you mean 'get_buses_supported'?
            internal_buses_supported |= BUS_LPC;    /* for LPC <--> SPI bridging */
            ^~~~~~~~~~~~~~~~~~~~~~~~
            get_buses_supported
    ./flash.h:424:18: note: 'get_buses_supported' declared here
    enum chipbustype get_buses_supported(void);
                     ^
    mec1308.c:512:27: error: invalid operands to binary expression ('enum chipbustype (void)' and 'int')
            internal_buses_supported |= BUS_LPC;    /* for LPC <--> SPI bridging */
            ~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~
    2 errors generated.
    make: *** [mec1308.o] Error 1
    
    READ THIS: https://docs.brew.sh/Troubleshooting
    
    Please create pull requests instead of asking for help on Homebrew's GitHub,
    Discourse, Twitter or IRC.
    

    follow commit: https://github.com/flashrom/flashrom/commit/821e44cb4dc23ca1261a92b3ee3cdf591c1da91b ?

    OS: macOS Catalina, clang 12

    opened by septs 16
  • Option to force write if image file is smaller than target chip.

    Option to force write if image file is smaller than target chip.

    Tested with 25 series SPI flash on various TV boards, STBs and routers. It even somehow pass verification. Unused area got filled with hex 00, though it doesn't matter, at least for my applications. I don't really like my text messages and key "-S", so change it, if you have better ideas.

    opened by EvilGremlin 13
  • Debugger outputting 512kB instead of 256kB?

    Debugger outputting 512kB instead of 256kB?

    Referencing: https://github.com/kreyware/repairs/issues/1

    I have CH341A trying to flash GV-RXVEGA56GAMING with VBIOS 016.001.001.000.033736 which is 256kB, but flashrom [flashrom v1.2-204-gb05c9b1-dirty on Linux 5.10.0-3-amd64 (x86_64)] reads it as 512kB which would make it one of a kind Vega 56 and refuses to write.

    Can you provide more info?

    Saving the read ROM gives me 512kB image.

    LOG: https://gist.github.com/Kreyren/3c2582bb6f01aa6cf5da8be68e3cbb41

    opened by Kreyren 8
  • hwaccess: use __asm__ as is done elsewhere

    hwaccess: use __asm__ as is done elsewhere

    Fixes compilation under powerpc platform. Made the change for the SPARC platform as well.

    ../hwaccess.c: In function 'sync_primitive': ../hwaccess.c:74:2: warning: implicit declaration of function 'asm' [-Wimplicit-function-declaration] 74 | asm("eieio" : : : "memory"); | ^~~ ../hwaccess.c:74:13: error: expected ')' before ':' token 74 | asm("eieio" : : : "memory");

    Signed-off-by: Rosen Penev [email protected]

    opened by neheb 6
  • Some Meson fixes and enhancements

    Some Meson fixes and enhancements

    A handful of changes I have noticed Meson scripts still needed to get closer to feature parity with the Makefile:

    • make it actually possible to build flashrom with the bitbang_spi back-end disabled;
    • fix dependencies of drivers utilising raw hardware access;
    • fix dependencies of stlinkv3_spi and usbblaster_spi;
    • make it possible to enable jlink_spi;
    • make the group-wide off switches for libusb and libpci programmers stay more in sync with options for individual programmers;
    • introduce similar group logic for libftdi programmers.
    opened by mkszuba 6
  • Reading old flash chip contents... Transaction error

    Reading old flash chip contents... Transaction error

    System Information

    
            Manufacturer: Inspur
            Product Name: SA5212M5
            Version: 00001
    
    

    Base Board Information

            Manufacturer: Inspur
            Product Name: NF5280M5
            Version: NF5280M5
    

    BIOS Information

            Vendor: Inspur
            Version: 4.0.6
            Release Date: 03/07/2019
    
    

    run log

    [root@T64 ~/rt_flash_rom]# ./flashrom -p internal -r flashrom_backup.bin
    flashrom  on Linux 3.10.107-1-tlinux2_nosign_test1-0047 (x86_64)
    flashrom is free software, get the source code at https://flashrom.org
    
    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Found chipset "Intel C622 Series Chipset (QS/PRQ)".
    This chipset is marked as untested. If you are using an up-to-date version
    of flashrom *and* were (not) able to successfully update your firmware with it,
    then please email a report to [email protected] including a verbose (-V) log.
    Thank you!
    Enabling flash write... SPI Configuration is locked down.
    FREG2: Management Engine region (0x00003000-0x007dffff) is locked.
    Not all flash regions are freely accessible by flashrom. This is most likely
    due to an active ME. Please see https://flashrom.org/ME for details.
    At least some flash regions are read protected. You have to use a flash
    layout and include only accessible regions. For write operations, you'll
    additionally need the --noverify-all switch. See manpage for more details.
    Enabling hardware sequencing because some important opcode is locked.
    OK.
    Found Programmer flash chip "Opaque flash chip" (32768 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
    Reading flash... Transaction error between offset 0x00003000 and 0x0000303f (= 0x00003000 + 63)!
    Read operation failed!
    FAILED.
    [root@T64 ~/rt_flash_rom]# ./flashrom -p internal -w ./Fake_for_flash.bin
    flashrom  on Linux 3.10.107-1-tlinux2_nosign_test1-0047 (x86_64)
    flashrom is free software, get the source code at https://flashrom.org
    
    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Found chipset "Intel C622 Series Chipset (QS/PRQ)".
    This chipset is marked as untested. If you are using an up-to-date version
    of flashrom *and* were (not) able to successfully update your firmware with it,
    then please email a report to [email protected] including a verbose (-V) log.
    Thank you!
    Enabling flash write... SPI Configuration is locked down.
    FREG2: Management Engine region (0x00003000-0x007dffff) is locked.
    Not all flash regions are freely accessible by flashrom. This is most likely
    due to an active ME. Please see https://flashrom.org/ME for details.
    At least some flash regions are read protected. You have to use a flash
    layout and include only accessible regions. For write operations, you'll
    additionally need the --noverify-all switch. See manpage for more details.
    Enabling hardware sequencing because some important opcode is locked.
    OK.
    Found Programmer flash chip "Opaque flash chip" (32768 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
    Reading old flash chip contents... Transaction error between offset 0x00003000 and 0x0000303f (= 0x00003000 + 63)!
    FAILED.
    [root@T64 ~/rt_flash_rom]#
    
    
    opened by comicsheep 6
  • [patch] Support for MB ASUS P4P800SE

    [patch] Support for MB ASUS P4P800SE

    --- flashrom.orig/board_enable.c        2018-01-23 23:30:42.346381000 +0300
    +++ flashrom/board_enable.c 2018-01-24 01:20:30.603030000 +0300
    @@ -2360,6 +2360,7 @@
            {0x8086, 0x2570, 0x1043, 0x80f2,  0x8086, 0x24d3, 0x1043, 0x80a6, "^P4P800-E$", NULL, NULL,           P3, "ASUS",        "P4P800-E Deluxe",       0,   OK, intel_ich_gpio21_raise},
            {0x8086, 0x2570, 0x1043, 0x80a5,  0x8086, 0x24d3, 0x1043, 0x80a6, "^P4P800-VM$", NULL, NULL,          P3, "ASUS",        "P4P800-VM",             0,   OK, intel_ich_gpio21_raise},
            {0x8086, 0x2570, 0x1043, 0x80f2,  0x8086, 0x24d3, 0x1043, 0x80a6, "^P4P800-X$", NULL, NULL,           P3, "ASUS",        "P4P800-X",              0,   OK, intel_ich_gpio21_raise},
    +       {0x8086, 0x2570, 0x1043, 0x80f2,  0x8086, 0x24d3,      0,      0, "^P4P800SE$", NULL, NULL,           P3, "ASUS",        "P4P800SE",              0,   OK, intel_ich_gpio21_raise},
            {0x8086, 0x2570, 0x1043, 0x80b2,  0x8086, 0x24c3, 0x1043, 0x8089, "^P4PE-X/TE$",NULL, NULL,           P3, "ASUS",        "P4PE-X/TE",             0,   NT, intel_ich_gpio21_raise},
            {0x1039, 0x0651, 0x1043, 0x8081,  0x1039, 0x0962,      0,      0, NULL,         NULL, NULL,           P3, "ASUS",        "P4SC-E",                0,   OK, it8707f_write_enable_2e},
            {0x8086, 0x2570, 0x1043, 0x80A5,  0x105A, 0x24D3, 0x1043, 0x80A6, NULL,         NULL, NULL,           P3, "ASUS",        "P4SD-LA",               0,   NT, intel_ich_gpio32_raise},
    diff -ur flashrom.orig/print.c flashrom/print.c
    --- flashrom.orig/print.c       2018-01-23 23:30:42.376649000 +0300
    +++ flashrom/print.c        2018-01-24 00:10:02.819518000 +0300
    @@ -679,6 +679,7 @@
            B("ASUS",       "P4P800-E Deluxe",      OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800E_Deluxe/", NULL),
            B("ASUS",       "P4P800-VM",            OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800VM/", NULL),
            B("ASUS",       "P4P800-X",             OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800X/", NULL),
    +       B("ASUS",       "P4P800SE",             OK, "https://www.asus.com/supportonly/P4P800 SE/", NULL),
            B("ASUS",       "P4PE-X/TE",            NT, "http://www.asus.com/999/html/events/mb/socket478/p4pe-x-te/overview.htm", NULL),
            B("ASUS",       "P4S533-X",             OK, NULL, NULL),
            B("ASUS",       "P4S800-MX",            OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4S800MX/", NULL),
    
    # flashrom/flashrom -p internal -w P4P800SE-ASUS-1012.001
    flashrom 0.9.9-115-g25fde40-dirty on FreeBSD 11.1-RELEASE (i386)
    flashrom is free software, get the source code at https://flashrom.org
    
    Using clock_gettime for delay loops (clk_id: 4, resolution: 1ns).
    Found chipset "Intel ICH5/ICH5R".
    Enabling flash write... OK.
    Enabling full flash access for board "ASUS P4P800SE"... OK.
    Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0xfff80000.
    Reading old flash chip contents... done.
    Erasing and writing flash chip... Erase/write done.
    Verifying flash... VERIFIED.
    
    opened by VVD 6
  • Request support for RISC-V architecture platform

    Request support for RISC-V architecture platform

    I encountered an architecture unsupported error when I tried to build flashrom on archlinux-riscv

    ❯ rv64build
    ==> 获取源代码...
      -> 找到 flashrom-v1.2.tar.bz2
      -> 找到 flashrom-v1.2.tar.bz2.asc
    ==> 正在为源代码文件创建完整性检查值...
    [sudo] password for taotieren: 
    :: Synchronizing package databases...
     core downloading...
     extra downloading...
     community downloading...
    :: Starting full system upgrade...
    resolving dependencies...
    looking for conflicting packages...
    
    Package (1)     Old Version  New Version  Net Change  Download Size
    
    core/libxcrypt  4.4.28-1     4.4.28-2       0.00 MiB       0.09 MiB
    
    Total Download Size:   0.09 MiB
    Total Installed Size:  0.18 MiB
    Net Upgrade Size:      0.00 MiB
    
    :: Proceed with installation? [Y/n] 
    :: Retrieving packages...
     libxcrypt-4.4.28-2-riscv64 downloading...
    checking keyring...
    checking package integrity...
    loading package files...
    checking for file conflicts...
    :: Processing package changes...
    upgrading libxcrypt...
    ==> Building in chroot for [extra] (riscv64)...
    ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [taotieren]...done
    ==> Making package: flashrom 1.2-2 (Sat Feb 26 16:06:54 2022)
    ==> Retrieving sources...
      -> Found flashrom-v1.2.tar.bz2
      -> Found flashrom-v1.2.tar.bz2.asc
    ==> Validating source files with sha256sums...
        flashrom-v1.2.tar.bz2 ... Passed
        flashrom-v1.2.tar.bz2.asc ... Skipped
    ==> Verifying source file signatures with gpg...
        flashrom-v1.2.tar.bz2 ... Passed
    ==> Making package: flashrom 1.2-2 (Sat 26 Feb 2022 04:07:07 PM CST)
    ==> Checking runtime dependencies...
    ==> Installing missing dependencies...
    resolving dependencies...
    looking for conflicting packages...
    
    Package (7)          New Version  Net Change
    
    community/confuse    3.3-3          0.12 MiB
    core/hwdata          0.356-1        1.98 MiB
    core/kmod            29-1           0.21 MiB
    core/libusb          1.0.25-2       0.18 MiB
    community/libftdi    1.5-4          0.47 MiB
    extra/libusb-compat  0.1.7-1        0.03 MiB
    core/pciutils        3.7.0-2        0.24 MiB
    
    Total Installed Size:  3.24 MiB
    
    :: Proceed with installation? [Y/n] 
    checking keyring...
    checking package integrity...
    loading package files...
    checking for file conflicts...
    :: Processing package changes...
    installing libusb...
    installing confuse...
    installing libftdi...
    Optional dependencies for libftdi
        python: library bindings
    installing hwdata...
    installing kmod...
    installing pciutils...
    installing libusb-compat...
    ==> Checking buildtime dependencies...
    ==> Installing missing dependencies...
    resolving dependencies...
    looking for conflicting packages...
    
    Package (14)                     New Version  Net Change
    
    core/libnsl                      2.0.0-2        0.06 MiB
    community/ninja                  1.10.2-1       0.21 MiB
    extra/perl-error                 0.17029-3      0.04 MiB
    extra/perl-mailtools             2.21-5         0.11 MiB
    extra/perl-timedate              2.33-3         0.08 MiB
    core/python                      3.10.1-2      79.11 MiB
    extra/python-appdirs             1.4.4-6        0.07 MiB
    community/python-more-itertools  8.10.0-4       0.32 MiB
    extra/python-ordered-set         4.0.2-6        0.06 MiB
    extra/python-packaging           21.0-1         0.26 MiB
    extra/python-pyparsing           3.0.0-1        0.93 MiB
    extra/python-setuptools          1:59.1.0-1     2.95 MiB
    extra/git                        2.35.1-1      29.55 MiB
    extra/meson                      0.61.2-1       7.61 MiB
    
    Total Installed Size:  121.37 MiB
    
    :: Proceed with installation? [Y/n] 
    checking keyring...
    checking package integrity...
    loading package files...
    checking for file conflicts...
    :: Processing package changes...
    installing libnsl...
    installing python...
    Optional dependencies for python
        python-setuptools [pending]
        python-pip
        sqlite [installed]
        mpdecimal: for decimal
        xz: for lzma [installed]
        tk: for tkinter
    installing python-appdirs...
    installing python-more-itertools...
    installing python-ordered-set...
    installing python-pyparsing...
    Optional dependencies for python-pyparsing
        python-railroad-diagrams: for generating Railroad Diagrams
        python-jinja: for generating Railroad Diagrams
    installing python-packaging...
    installing python-setuptools...
    installing ninja...
    installing meson...
    installing perl-error...
    installing perl-timedate...
    installing perl-mailtools...
    installing git...
    Optional dependencies for git
        tk: gitk and git gui
        perl-libwww: git svn
        perl-term-readkey: git svn and interactive.singlekey setting
        perl-io-socket-ssl: git send-email TLS support
        perl-authen-sasl: git send-email TLS support
        perl-mediawiki-api: git mediawiki support
        perl-datetime-format-iso8601: git mediawiki support
        perl-lwp-protocol-https: git mediawiki https support
        perl-cgi: gitweb (web interface) support
        python: git svn & git p4 [installed]
        subversion: git svn
        org.freedesktop.secrets: keyring credential helper
        libsecret: libsecret credential helper [installed]
    :: Running post-transaction hooks...
    (1/1) Warn about old perl modules
    ==> Retrieving sources...
      -> Found flashrom-v1.2.tar.bz2
      -> Found flashrom-v1.2.tar.bz2.asc
    ==> WARNING: Skipping all source file integrity checks.
    ==> Extracting sources...
      -> Extracting flashrom-v1.2.tar.bz2 with bsdtar
    ==> Starting build()...
    + exec meson setup --prefix /usr --libexecdir lib --sbindir bin --buildtype plain --auto-features enabled --wrap-mode nodownload -D b_lto=true -D b_pie=true ../build
    The Meson build system
    Version: 0.61.2
    Source dir: /build/flashrom/src/flashrom-v1.2
    Build dir: /build/flashrom/src/build
    Build type: native build
    WARNING: You should add the boolean check kwarg to the run_command call.
             It currently defaults to false,
             but it will default to true in future releases of meson.
             See also: https://github.com/mesonbuild/meson/issues/9300
    Project name: flashromutils
    Project version: v1.2
    C compiler for the host machine: cc (gcc 11.2.0 "cc (GCC) 11.2.0")
    C linker for the host machine: cc ld.bfd 2.38
    Host machine cpu family: riscv64
    Host machine cpu: riscv64
    Compiler for C supports arguments -Wwrite-strings: YES 
    Compiler for C supports arguments -Wno-unused-parameter: YES 
    Compiler for C supports arguments -Wno-address-of-packed-member: YES 
    Compiler for C supports arguments -Wno-enum-conversion: YES 
    Compiler for C supports arguments -Wno-missing-braces: YES 
    Checking for function "clock_gettime" : YES 
    Checking for function "strnlen" : YES 
    Check usable header "sys/utsname.h" : YES 
    Found pkg-config: /usr/bin/pkg-config (1.8.0)
    Run-time dependency libusb-1.0 found: YES 1.0.25
    Run-time dependency libpci found: YES 3.7.0
    Run-time dependency libftdi1 found: YES 1.5
    Build targets in project: 3
    
    flashromutils v1.2
    
      User defined options
        auto_features: enabled
        buildtype    : plain
        libexecdir   : lib
        prefix       : /usr
        sbindir      : bin
        wrap_mode    : nodownload
        b_lto        : true
        b_pie        : true
    
    Found ninja-1.10.2 at /usr/bin/ninja
    ninja: Entering directory `../build'
    [1/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/drkaiser.c.o -MF libflashrom.so.1.0.0.p/drkaiser.c.o.d -o libflashrom.so.1.0.0.p/drkaiser.c.o -c ../flashrom-v1.2/drkaiser.c
    FAILED: libflashrom.so.1.0.0.p/drkaiser.c.o 
    cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/drkaiser.c.o -MF libflashrom.so.1.0.0.p/drkaiser.c.o.d -o libflashrom.so.1.0.0.p/drkaiser.c.o -c ../flashrom-v1.2/drkaiser.c
    In file included from ../flashrom-v1.2/drkaiser.c:20:
    ../flashrom-v1.2/hwaccess.h:300:2: error: #error Unknown architecture, please check if it supports PCI port IO.
      300 | #error Unknown architecture, please check if it supports PCI port IO.
          |  ^~~~~
    [2/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/atavia.c.o -MF libflashrom.so.1.0.0.p/atavia.c.o.d -o libflashrom.so.1.0.0.p/atavia.c.o -c ../flashrom-v1.2/atavia.c
    FAILED: libflashrom.so.1.0.0.p/atavia.c.o 
    cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/atavia.c.o -MF libflashrom.so.1.0.0.p/atavia.c.o.d -o libflashrom.so.1.0.0.p/atavia.c.o -c ../flashrom-v1.2/atavia.c
    In file included from ../flashrom-v1.2/atavia.c:23:
    ../flashrom-v1.2/hwaccess.h:300:2: error: #error Unknown architecture, please check if it supports PCI port IO.
      300 | #error Unknown architecture, please check if it supports PCI port IO.
          |  ^~~~~
    [3/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/pcidev.c.o -MF libflashrom.so.1.0.0.p/pcidev.c.o.d -o libflashrom.so.1.0.0.p/pcidev.c.o -c ../flashrom-v1.2/pcidev.c
    FAILED: libflashrom.so.1.0.0.p/pcidev.c.o 
    cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/pcidev.c.o -MF libflashrom.so.1.0.0.p/pcidev.c.o.d -o libflashrom.so.1.0.0.p/pcidev.c.o -c ../flashrom-v1.2/pcidev.c
    In file included from ../flashrom-v1.2/pcidev.c:22:
    ../flashrom-v1.2/hwaccess.h:300:2: error: #error Unknown architecture, please check if it supports PCI port IO.
      300 | #error Unknown architecture, please check if it supports PCI port IO.
          |  ^~~~~
    [4/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/usbdev.c.o -MF libflashrom.so.1.0.0.p/usbdev.c.o.d -o libflashrom.so.1.0.0.p/usbdev.c.o -c ../flashrom-v1.2/usbdev.c
    [5/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/developerbox_spi.c.o -MF libflashrom.so.1.0.0.p/developerbox_spi.c.o.d -o libflashrom.so.1.0.0.p/developerbox_spi.c.o -c ../flashrom-v1.2/developerbox_spi.c
    [6/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/ch341a_spi.c.o -MF libflashrom.so.1.0.0.p/ch341a_spi.c.o.d -o libflashrom.so.1.0.0.p/ch341a_spi.c.o -c ../flashrom-v1.2/ch341a_spi.c
    [7/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/digilent_spi.c.o -MF libflashrom.so.1.0.0.p/digilent_spi.c.o.d -o libflashrom.so.1.0.0.p/digilent_spi.c.o -c ../flashrom-v1.2/digilent_spi.c
    [8/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/buspirate_spi.c.o -MF libflashrom.so.1.0.0.p/buspirate_spi.c.o.d -o libflashrom.so.1.0.0.p/buspirate_spi.c.o -c ../flashrom-v1.2/buspirate_spi.c
    [9/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/dummyflasher.c.o -MF libflashrom.so.1.0.0.p/dummyflasher.c.o.d -o libflashrom.so.1.0.0.p/dummyflasher.c.o -c ../flashrom-v1.2/dummyflasher.c
    [10/140] cc -Ilibflashrom.so.1.0.0.p -I. -I../flashrom-v1.2 -I/usr/include/libusb-1.0 -I/usr/include/libftdi1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c99 -Wwrite-strings -Wno-unused-parameter -Wno-address-of-packed-member -Wno-enum-conversion -Wno-missing-braces -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE -D_BSD_SOURCE '-DFLASHROM_VERSION="v1.2"' -DHAVE_CLOCK_GETTIME=1 -DHAVE_STRNLEN=1 -DHAVE_UTSNAME=1 -march=rv64gc -mabi=lp64d -O2 -pipe -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -flto -fPIC -DNEED_PCI=1 -DCONFIG_ATAVIA=1 -DCONFIG_BUSPIRATE_SPI=1 -DCONFIG_CH341A_SPI=1 -DCONFIG_DEDIPROG=1 -DCONFIG_DEVELOPERBOX_SPI=1 -DCONFIG_DIGILENT_SPI=1 -DCONFIG_DRKAISER=1 -DCONFIG_DUMMY=1 -DCONFIG_FT2232_SPI=1 -DHAVE_FT232H=1 -DCONFIG_GFXNVIDIA=1 -DCONFIG_INTERNAL=1 -DCONFIG_INTERNAL_DMI=1 -DCONFIG_IT8212=1 -DCONFIG_LINUX_MTD=1 -DCONFIG_LINUX_SPI=1 -DCONFIG_NIC3COM=1 -DCONFIG_NICINTEL=1 -DCONFIG_NICINTEL_EEPROM=1 -DCONFIG_NICINTEL_SPI=1 -DCONFIG_NICREALTEK=1 -DCONFIG_OGP_SPI=1 -DCONFIG_PICKIT2_SPI=1 -DCONFIG_PONY_SPI=1 -DCONFIG_RAYER_SPI=1 -DCONFIG_SATAMV=1 -DCONFIG_SATASII=1 -DCONFIG_SERPROG=1 -DCONFIG_USBBLASTER_SPI=1 -DCONFIG_STLINKV3_SPI=1 -DCONFIG_BITBANG_SPI=1 -DNEED_RAW_ACCESS=1 -MD -MQ libflashrom.so.1.0.0.p/dediprog.c.o -MF libflashrom.so.1.0.0.p/dediprog.c.o.d -o libflashrom.so.1.0.0.p/dediprog.c.o -c ../flashrom-v1.2/dediprog.c
    ninja: build stopped: subcommand failed.
    ==> ERROR: A failure occurred in build().
        Aborting...
    ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/taotieren/build
    
    
    opened by taotieren 5
  • Add support for Winbond W25X05CL

    Add support for Winbond W25X05CL

    This commit adds support for the Winbond W25X05CL SPI flash chip. The Winbond W25X05CL is a 512K-BIT SPI flash chip with 4KB sectors. I have tested this patch with a Bus Pirate (v3b) and an in-circuit W25X05CL flash chip using a test clip. Reading, erasing, and writing all function as expected.

    Datasheet: http://www.winbond.com/resource-files/w25x05cl_f%2004252017.pdf

    Change-Id: I3d387b4bd711e7d80f0e912a7236e5a75515a1c7 Signed-off-by: Jacob Appelbaum [email protected]

    opened by ioerror 5
  • Tag a new flashrom release

    Tag a new flashrom release

    Any chance at tagged a new release soon? Since https://github.com/flashrom/flashrom/commit/cb97368328bc68698ab7e58a6d692635dfb1b1c7#diff-969b60ad3d206fd45c208e266ccfed38 happened and fwupd grew flashrom support it would be good to start pushing distros to adopt it in library form so it can be used in more places.

    Right now it's off by default in fwupd other than CI, but it would be good to expand. (https://github.com/fwupd/fwupd/pull/1327)

    opened by superm1 5
  • Erase fails on some W25Q128FV and W25Q128JV using Raspberry Pi 2

    Erase fails on some W25Q128FV and W25Q128JV using Raspberry Pi 2

    EDIT: See the solution at the bottom. Can someone update the Wiki, please?

    My programmer is a Raspberry Pi 2. I have two batches of W25Q128FVs and one of W25Q128JVs. One of the W25Q128FV batches can be erased and written perfectly using flashrom. The other one and the W25Q128JV batch fail to erase the chip. All of these chips can be erased and written on OpenWrt routers. Even stranger: The batch that can be erased using flashrom can't be erased using a TL866 II Plus, while the others work perfectly fine.

    opened by CodeFetch 5
  • Documentation at https://www.flashrom.org/Per_region_file_arguments

    Documentation at https://www.flashrom.org/Per_region_file_arguments

    I have read https://www.flashrom.org/Per_region_file_arguments but have problems with it.

    It lists alternatives rather than stating what is implemented. For example the filename after the -w option is mandatory.

    I see there is a Chromium fork. Please document the relationship between this repository and the Chromium fork and say whether that one considered better or what.

    I simply want to write a region with a region-sized file yet none of the alternative syntaxes in the table actually work. I see that way back in the time of 0.9.8 the error about the file supplied being to short was commented out.

    opened by jms19 0
  • cli_classic.c:718:13: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'}

    cli_classic.c:718:13: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'}

    Compiling on Raspberry Pi using Debian Bullseye fails with this error:

    root@raspberrypi:~/flashrom# make
    Replacing all version templates with v1.2-642-g4bee256.
    C compiler found: cc (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110
    Target arch: arm
    Target OS: Linux
    Target endian: little
    Dependency libpci found: yes
      Checking for old "pci_get_dev()": no
      CFLAGS: -I/usr/include/arm-linux-gnueabihf
      LDFLAGS: -lpci -lz -lresolv -ludev
    Dependency libusb1 found: no
    Dependency libjaylink found: no
    Dependency NI-845x found: no
    Dependency libftdi1 found: no
    Checking for header "mtd/mtd-user.h": yes
    Checking for header "linux/spi/spidev.h": yes
    Checking for header "linux/i2c-dev.h": yes
    Checking for header "linux/i2c.h": yes
    Checking for header "sys/utsname.h": yes
    Checking for function "clock_gettime": yes
    Checking for external "librt": yes
    cc -MMD -Os -Wall -Wextra -Wno-unused-parameter -Wshadow -Wmissing-prototypes -Wwrite-strings -Werror -I/usr/include/arm-linux-gnueabihf   -D'IS_WINDOWS=0' -D'__FLASHROM_LITTLE_ENDIAN__=1' -D'USE_IOPL=1' -D'USE_DEV_IO=0' -D'USE_IOPERM=0' -D'CONFIG_DEFAULT_PROGRAMMER_NAME=NULL' -D'CONFIG_DEFAULT_PROGRAMMER_ARGS=""' -D'CONFIG_INTERNAL=1' -D'CONFIG_INTERNAL_DMI=1' -D'CONFIG_SERPROG=1' -D'CONFIG_PONY_SPI=1' -D'CONFIG_BITBANG_SPI=1' -D'CONFIG_GFXNVIDIA=1' -D'CONFIG_SATASII=1' -D'CONFIG_ATAVIA=1' -D'CONFIG_IT8212=1' -D'CONFIG_DUMMY=1' -D'CONFIG_DRKAISER=1' -D'CONFIG_NICINTEL=1' -D'CONFIG_NICINTEL_SPI=1' -D'CONFIG_NICINTEL_EEPROM=1' -D'CONFIG_OGP_SPI=1' -D'CONFIG_BUSPIRATE_SPI=1' -D'CONFIG_LINUX_MTD=1' -D'CONFIG_LINUX_SPI=1' -D'NEED_PCI=1' -D'HAVE_UTSNAME=1' -D'HAVE_CLOCK_GETTIME=1' -D'FLASHROM_VERSION="v1.2-642-g4bee256"' -o cli_classic.o -c cli_classic.c
    cli_classic.c: In function 'main':
    cli_classic.c:718:13: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} [-Werror=format=]
      718 |   printf("%ld\n", flashrom_flash_getsize(fill_flash));
          |           ~~^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |             |     |
          |             |     size_t {aka unsigned int}
          |             long int
          |           %d
    cc1: all warnings being treated as errors
    make: *** [Makefile:968: cli_classic.o] Fehler 1
    
    opened by kevin-olbrich 2
  • Simplify disabling incompatible programmers on Windows

    Simplify disabling incompatible programmers on Windows

    Background

    As it stands, there are four categories of programmer that are unsupported by Flashrom on Windows. They are:

    • Linux-specific programmers: linux_mtd and linux_spi
    • PCI programmers: atahpt, atapromise, atavia, drkaiser, gfxnvidia, internal, it8212, nic3com, nicintel, nicintel_eeprom, nicintel_spi, nicnatsemi, nicrealtek, ogp_spi, satamv, and satasii
    • Programmers that need x86 MSR or port IO: internal, atahpt, atapromise, nic3com, nicnatsemi, nicrealtek, rayer_spi, and satamv
    • I²C programmers: lspcon_i2c_spi, mediatek_i2c_spi, and realtek_mst_i2c_spi

    Perhaps some of these should be supported in the future! However, at the moment, they're incompatible with Windows.

    The problem

    In the latest stable version of Flashrom, v1.2, it sufficed to specify -Dpciutils=false, -Dconfig_linux_mtd=false, and -Dconfig_linux_spi=false. Disabling pciutils automatically disabled PCI programmers. However, when building the latest commit (b9e8b89), it requires you to manually disable each programmer – otherwise it'll error out, either saying “one or more enabled programmer requires PCI access”, or producing a mysterious compiler or linker error. Thus, the command currently required to build at all on Windows is the unwieldy:

    meson \
        -Dpciutils=false \
        -Dconfig_atahpt=false \
        -Dconfig_atapromise=false \
        -Dconfig_atavia=false \
        -Dconfig_drkaiser=false \
        -Dconfig_gfxnvidia=false \
        -Dconfig_internal=false \
        -Dconfig_it8212=false \
        -Dconfig_linux_mtd=false \
        -Dconfig_linux_spi=false \
        -Dconfig_lspcon_i2c_spi=false \
        -Dconfig_mediatek_i2c_spi=false \
        -Dconfig_nic3com=false \
        -Dconfig_nicintel=false \
        -Dconfig_nicintel_eeprom=false \
        -Dconfig_nicintel_spi=false \
        -Dconfig_nicnatsemi=false \
        -Dconfig_nicrealtek=false \
        -Dconfig_ogp_spi=false \
        -Dconfig_rayer_spi=false \
        -Dconfig_realtek_mst_i2c_spi=false \
        -Dconfig_satamv=false \
        -Dconfig_satasii=false \
        --prefix="${MINGW_PREFIX}" \
        --wrap-mode=nodownload \
        --auto-features=enabled \
        --buildtype=plain \
        build
    
    meson compile
    

    I personally wrestled with this for days before I managed to find a combination of options that worked (creating #243 and #244, now closed, in the process). It's clear that it's not the most user-friendly build flow!

    The fix

    I suggest doing one of the following:

    • Automatically disable incompatible programmers when the system is detected to be Windows.
    • Provide override options to disable whole categories at once (say, -Dconfig_no_libpci=true, etc., or even -Dconfig_windows_programmers_only=true).

    Which would you rather be implemented?

    Build instructions

    To build on Windows to test this, go through the following steps:

    1. Install MSYS2 on Windows.
    2. Open the “MSYS2 MinGW x64” shell.
    3. Run pacman -S git base-devel pactoys.
    4. Run pacboy -S meson cc pkg-config libftdi libusb.
    5. Clone the repo and cd into it: git clone https://github.com/flashrom/flashrom.git && cd flashrom.
    6. Run the following command to attempt to build:
      meson \
          -Dpciutils=false \
          -Dconfig_atahpt=false \
          -Dconfig_atapromise=false \
          -Dconfig_atavia=false \
          -Dconfig_drkaiser=false \
          -Dconfig_gfxnvidia=false \
          -Dconfig_internal=false \
          -Dconfig_it8212=false \
          -Dconfig_linux_mtd=false \
          -Dconfig_linux_spi=false \
          -Dconfig_lspcon_i2c_spi=false \
          -Dconfig_mediatek_i2c_spi=false \
          -Dconfig_nic3com=false \
          -Dconfig_nicintel=false \
          -Dconfig_nicintel_eeprom=false \
          -Dconfig_nicintel_spi=false \
          -Dconfig_nicnatsemi=false \
          -Dconfig_nicrealtek=false \
          -Dconfig_ogp_spi=false \
          -Dconfig_rayer_spi=false \
          -Dconfig_realtek_mst_i2c_spi=false \
          -Dconfig_satamv=false \
          -Dconfig_satasii=false \
          --prefix="${MINGW_PREFIX}" \
          --wrap-mode=nodownload \
          --auto-features=enabled \
          --buildtype=plain \
          ./build
      
      cd build && meson compile
      
    opened by obskyr 1
  • New Windows build instructions?

    New Windows build instructions?

    I recently spent about a full day trying to build Flashrom on Windows! I initially attempted to follow the instructions on the wiki, but they work neither for the latest stable release (1.2) nor the latest commit (ff4c624) – instead yielding errors like Checking for libpci headers... not found. and Checking for libusb-1.0 headers... not found.. The instructions allude to using MSYS2 rather than the ancient version of MinGW recommended, but doesn't specify instructions on how.

    Eventually, I managed to build Flashrom 1.2 via MSYS2 by doing the following:

    1. Install MSYS2.
    2. Run the “MSYS2 MinGW x64” shell.
    3. Run pacman -Syu to update packages.
    4. Run pacman -S binutils.
    5. MSYS2 has a Flashrom package now, so run wget https://raw.githubusercontent.com/msys2/MINGW-packages/master/mingw-w64-flashrom/PKGBUILD.
    6. Run makepkg-mingw -sCLf.
    7. Manually copy libusb-1.0.dll, libftdi1.dll, and libwinpthread-1.dll from /mingw64/bin into the build directory pkg/mingw-w64-x86_64-flashrom/mingw64/bin/flashrom.exe and delete libflashrom-1.dll.
    8. The build directory pkg/mingw-w64-x86_64-flashrom/mingw64/bin/ now contains flashrom.exe and everything needed to run it on Windows.

    This was a bit of an involved process, and I'm not sure manually copying DLLs is the best way to do things, so I wouldn't be comfortable saying these are the build instructions to recommend, but… either way, I think Flashrom needs new build instructions for Windows!

    opened by obskyr 5
  • "Intel Apollo Lake"

    Warning: unexpected second chipset match: "Intel Apollo Lake" ignoring, please report lspci and board URL to [email protected] with 'CHIPSET: your board name' in the subject line. Found Winbond flash chip "W25Q128.JW.DTR" (16384 kB, Programmer-specific) mapped at physical address 0x0000000000000000. Block protection could not be disabled! Reading flash... done. SUCCESS FMAP REGION: RW_LEGACY Name Offset Type Size Comp payload 0x0 simple elf 53662 none seavgabios.rom 0xd200 optionrom 28672 none links 0x14240 raw 796 none bootorder 0x145c0 raw 465 none etc/boot-menu-key 0x14800 raw 8 none etc/boot-menu-message 0x14880 raw 28 none etc/boot-menu-wait 0x14900 raw 8 none (empty) 0x14980 null 2012696 none

    opened by SWUS337 4
Owner
writing flash chips for more than a decade
null
Flashrom/serprog compatible firmware for the Raspberry Pi Pico

pico-serprog This is a very basic flashrom/serprog compatible SPI flash reader/writer for the Raspberry Pi Pico. It does not require a custom version

stacksmashing 37 Dec 24, 2022
A tool for detecting manual/direct syscalls in x86 and x64 processes using Nirvana Hooks.

manual-syscall-detect A tool for detecting manual/direct syscalls in x86 and x64 processes using Nirvana Hooks. Description A full write-up of this to

Conor Richard 72 Dec 26, 2022
PoC capable of detecting manual syscalls from usermode.

syscall-detect PoC capable of detecting manual syscalls from usermode. More information available at: https://winternl.com/detecting-manual-syscalls-f

null 125 Dec 26, 2022
Gesture-Detecting-Macro-Keyboard - Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32.

Gesture detection tldr; Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32. Main feat

Jakob Krantz 68 Dec 1, 2022
Tool for detecting violations of ordering axioms in STL comparators

SortChecker++ is an extension of SortChecker tool to C++ sorting APIs like std::sort or std::binary_search. It verifies that comparators satisfy the S

Yury Gribov 10 Dec 21, 2022
Arduino-controlled bed that helps in reducing rate of disease infection by detecting whether a person accessed the safe space of a subject who is infected

Infection Control Bed BACKGROUND Spread of COVID-19 occurs via airborne parricels and droplets. People who are infected with COVID an release particle

Amir Hesham Ibrahim 3 Mar 17, 2022
bl_mcu_sdk is MCU software development kit provided by Bouffalo Lab Team for BL602/BL604, BL702/BL704/BL706 and other series of RISC-V based chips in the future.

bl mcu sdk is an MCU software development kit provided by the Bouffalo Lab Team for BL602/BL604, BL702/BL704/BL706 and other series of chips in the future

Bouffalo Lab 165 Dec 23, 2022
Get the current average CPU frequency on Apple M1 chips.

M1 CPU Frequency Get the current average CPU frequency on Apple M1 chips. Usage Download the precompiled binary from the releases and run it in the te

BitesPotatoBacks 20 Jan 3, 2023
Experiments with Mozzi, mostly on SAMD21 chips

mozzi_experiments Experiments with Mozzi, mostly on SAMD21 chips Sketches eighties_dystopia - A swirling ominous wub that evolves over time Demos "eig

Tod Kurt 53 Dec 27, 2022
This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32

ESP32 nRF52 SWD flasher This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32 using t

null 140 Dec 31, 2022
pre-built coreboot images and documentation on how to flash them for Thinkpad Laptops

Skulls - not quite Heads pre-built coreboot images with an easy installation process Skulls makes it easy to install an unlocked, up-to-date and easy

Martin Kepplinger 514 Jan 3, 2023
NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

Plummer's Software LLC 631 Dec 28, 2022
Open Source STC8G/STC8H ISP flash tool

stc8prog - STC MCU ISP flash tool stc8prog is a command line flash programming tool for STC 8051 series microcontrollers, Currently, only STC8H/STC8G/

IOsetting 32 Nov 25, 2022
Flash-DBSim Simulation System

Flash-DBSim Simulation System Flash-DBSim is a simulation tool for evaluating Flash-based database algorithms used for flash-based researches, we'd li

Baroquer 1 Jan 18, 2022
Everdrive application for backup/restore XBAND SRAM & (Flash) ROM

XBAND Swiss Army knife (xband_sak) xband_sak is an Everdrive MD (including clones) RAM application for the Sega Mega Drive/Genesis with the following

null 4 Dec 13, 2022
Command line C++ and Python VSTi Host library with MFCC, FFT, RMS and audio extraction and .wav writing.

______ _ ___ ___ | ___ \ | | | \/ | | |_/ /___ _ __ __| | ___ _ __| . . | __ _ _ __

Leon Fedden 297 Dec 30, 2022
Reading ADC of NodeMCU and sending data to QT Application over UDP

QT-NodeMCU-Application Reading ADC of NodeMCU and sending data to QT Application over UDP The following program should be used to run Lua Script: http

Akif Aydogmus 1 Nov 18, 2021
Proof of concept userspace filesystem that executes filenames as shell commands and makes the result accessible though reading the file.

ExecFS Proof of concept userspace filesystem that executes filenames as shell commands and makes the result accessible though reading the file. $ ./ex

Camel Coder 42 Jan 7, 2023
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Peter Griffin 11 Jul 21, 2022