AMD Ryzen Embedded PlatformでEmbedded LinuxのBIOSと対話したいと思います。
メインツールはflashrom
フラッシュメモリチップを読み書きできるツールのようです。
dd
メモリ内のチップのアドレスを知っている場合は、同様の方法を使用してフラッシュROMにデータを書き込むことも可能ですか?
システムBIOSを見つける正しい方法ですか?
root@device:~/bios# grep ROM /proc/iomem
000c0000-000cd3ff : Video ROM
000f0000-000fffff : System ROM
ツールを使用してROMを見つけると、flashrom
次の結果が表示されます。
root@device:~/bios# flashrom -p internal --flash-name
flashrom v1.2 on Linux 5.4.199 (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 "AMD FP4".
Enabling flash write... OK.
Found Winbond flash chip "W25Q64.W" (8192 kB, SPI) mapped at physical address 0x00000000ff800000.
vendor="Winbond" name="W25Q64.W"
それでiomem
チップが入ったとし、チップが入った000f0000-000fffff
と言います。flashrom
0x00000000ff800000
どちらが正しいのですか、それとも良いのはなぜ同じではありませんか?
答え1
どちらが正しいのですか、それとも良いのはなぜ同じではありませんか?
彼らは違うので違います。どちらも「正しい」ということではありません。
出力はflashrom
物理フラッシュICのアドレスです。
iomemは、メモリ空間内のメモリの一部がマッピングされている場所を報告します。これはフラッシュICの一部のメモリです。 (おそらくそれを介してクエリするメモリかもしれませんが、flashrom -p internal
初期ハードウェアの初期化中にコピーまたはマッピングされている可能性が高くなります)RAMメモリの一部。
「BIOS」、「ビデオROM」...はIBM PCの概念であり、本質的に今日のハードウェアの動作方法にはまったく適用されないことに気づく必要があります。したがって、もしあれば完全な模倣。
したがって、「AMD Ryzenの組み込みLinux BIOSと対話する」と言うと、実際に「プロセッサで実行されているファームウェアがエミュレートされる38年のAPIと話したい」と言うのです。誰が何をエミュレートしているのかを簡単に判断でき、「フォントを含むチップであるビデオROMとビデオBIOSプログラムがあります」のように簡単ですが、これは明らかにグラフィックハードウェアが機能する方法ではありません。 BIOSにも同様です。マザーボードとCPUの初期化は、一部のIBM PC-BIOS派生ソフトウェアではなく、UEFIプログラムとLinuxを含むマザーボードとCPUのファームウェアです。 BIOS インターフェイスは、実際にはファームウェアによってオプションで提供されるいくつかの追加の API です。