0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

El Capitanでflashrom 1.0

Last updated at Posted at 2018-10-07

flashromの1.0をEl Capitanでビルドしてみました。

1.0でMacではdirecthwというコードを使うようになったのでこれをcloneします。

directhwはframeworkとしてビルドするようなのですが、framework のビルドにはxcodeが必要なのですが、Command Line Toolsしか入れてないのでccでdylibでビルドしてみます。

$ cd directhw/macosx/DirectHW/
$ cc -c -fPIC DirectHW.c
$ cc -shared -framework IOKit -install_name @executable_path/libDirectHW.dylib -o libDirectHW.dylib DirectHW.o

出来あがったlibDirectHW.dylibとDirectHW.hをflashromのソースディレクトリにコピーします。

libusb.hのpathを指定してlibFTDIもビルドします。cmakeは入れてないのでハンドパワーでビルドします。

$ cd src
$ sed 's/@MAJOR_VERSION@/1/;s/@MINOR_VERSION@/4/;s/@.*@//' ftdi_version_i.h.in > ftdi_version_i.h
$ cc -I../../ -c *.c
$ ar r libftdi.a *o

これもlibftdi.aとftdi.hをflashromのソースディレクトリにコピーします。

libusbは普通にconfigureしてmakeすればlibusb/.libs/にdylibができあがります。libusb.hとlibusb-1.0.dylibをコピーしてlibusb.dylibからシンボリックリンク張っておきます。

libusb-1.0.dylibもpathを同じディレクトリに書き換えておきます。

$ install_name_tool -id @executable_path/libusb-1.0.dylib libusb-1.0.dylib

あとはflashromのMakefileとhwaccess.hをちょっとだけいじります。

$ git diff
diff --git a/Makefile b/Makefile
index b13cf7e..4b198bb 100644
--- a/Makefile
+++ b/Makefile
@@ -1007,7 +1007,8 @@ PCILIBS += -l$(shell uname -m)
 else
 ifeq ($(TARGET_OS), Darwin)
 # DirectHW framework can be found in the DirectHW library.
-PCILIBS += -framework IOKit -framework DirectHW
+#PCILIBS += -framework IOKit -framework DirectHW
+PCILIBS += -framework IOKit -l DirectHW
 endif
 endif
 endif
diff --git a/hwaccess.h b/hwaccess.h
index af7054b..25eb7c6 100644
--- a/hwaccess.h
+++ b/hwaccess.h
@@ -179,7 +179,8 @@ cpu_to_be(64)
 
 #if defined(__MACH__) && defined(__APPLE__)
     /* Header is part of the DirectHW library. */
-    #include <DirectHW/DirectHW.h>
+//    #include <DirectHW/DirectHW.h>
+    #include "DirectHW.h"
 #endif
 
   /* This is the usual glibc interface. */

これでビルドできます。

$ make CONFIG_ENABLE_LIBPCI_PROGRAMMERS=no CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no CFLAGS=-I. LDFLAGS=-L.

Appleのドライバを外してから試さないと動きません。

$ sudo kextunload /System/Library/Extensions/AppleUSBFTDI.kext

ちゃんと動きました。

$ ./flashrom -p ft2232_spi:type=232H 
flashrom p1.0-125-g3432349-dirty on Darwin 15.6.0 (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on ft2232_spi.
Found Macronix flash chip "MX25L1605A/MX25L1606E/MX25L1608E" (2048 kB, SPI) on ft2232_spi.
Found Macronix flash chip "MX25L1605D/MX25L1608D/MX25L1673E" (2048 kB, SPI) on ft2232_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L1605", "MX25L1605A/MX25L1606E/MX25L1608E", "MX25L1605D/MX25L1608D/MX25L1673E"
Please specify which chip definition to use with the -c <chipname> option.

あまり細かく調べてませんが1.0のftdiはとても早くなっています。2Mの読み込みが0.9.7(MacBook Air Original/10.6)が18秒に対して、1.0(Mac mini 2010/10.11)が3秒になっていました。MacやOSが違うので、一概には比べられないのですが。

以前使っていたバージョンには無かったch341aサポートをライターを手に入れ試してみました。

写真(2018-10-22 18.43).jpg

ZIFソケットの右側の8ピンがI2C EEPROM用で左側の8ピンがSPI Flash用です。flashromはSPI Flashのみ対応してます。ZIFソケットはTFXTOOLです。^ ^;

$ ./flashrom -p ch341a_spi -c MX25L6405 -r test.bin

こちらは8Mの読み込みに68秒なので、ちょっと遅いです。

パラレルflashも問題なく使えました。

$ ./flashrom  -p serprog:dev=/dev/cu.usbserial-A7004BTR:57600
flashrom p1.0-125-g3432349-dirty on Darwin 15.6.0 (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Some requested serial options did not stick, continuing anyway.
serprog: Programmer name is "ATMegaXX8 SFR"
Found Eon flash chip "EN29F002(A)(N)T" (256 kB, Parallel) on serprog.
No operations were specified.

flashromはconfigureを使わずmakeだけでやるってポリシーのようです。昔はconfigureが良いとおもってましたが、最近は結構問題が多いので、一つの方法としてはありだと思います。

使い方はこちら

1.2も同じ手順でビルドできました。

SOP16のソケット(Aitendoの[K-ADP12716(28)D04])も手に入れました。ピン間が広いので、幅のあるブレッドボードを使う必要があります。

写真(2022-09-02 14.44) #2.jpg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?