我想在AMD Ryzen嵌入式平台上与嵌入式linux的bios进行一些交互。
我认为主要的工具是flashrom,它可以读写闪存芯片。
如果内存中芯片的地址已知,也应该可以使用像dd这样的东西将数据写入闪存rom?
这是查找系统bios的正确方法吗:
root@device:~/bios# grep ROM /proc/iomem
000c0000-000cd3ff : Video ROM
000f0000-000fffff : System ROM如果我使用flashrom工具查找rom,就会得到以下内容:
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
哪一个是正确的,还是更好,为什么这些是不相同的?
发布于 2023-03-01 12:02:57
哪一个是正确的,还是更好,为什么这些是不相同的?
它们是不同的,因为它们是不同的东西。两者都不是“正确的”。
flashrom输出的是物理闪存IC的地址。
iomem报告内存的某些部分映射到内存空间;这可能是闪存IC上的某个内存(甚至是您通过flashrom -p internal查询的内存,但更有可能是在早期硬件初始化时被复制或映射到RAM的某个部分的内存。
你必须意识到"BIOS",“视频ROM",…IBM PC概念在本质上根本不适用于当今硬件的工作方式。因此,如果存在,它们就是完全模拟。
所以,当你说“在AMD Ryzen上与嵌入式linux的bios交互”时,你实际上是在说“我想要和一个38年前的API对话,这个API可以被运行在我使用的处理器上的固件以某种方式模拟出来”;很难确定在这种情况下是谁在模仿什么,表面上很简单的事情,比如“有一个ROM,它是一个芯片,包含一个字体和程序的视频BIOS,”,这是很简单的不是图形硬件的工作方式。同样,BIOS -初始化板和CPU的不是一些IBM派生的软件,而是您的板和CPU的固件,包括UEFI程序和Linux。BIOS接口实际上只是固件提供的一些附加API。
https://unix.stackexchange.com/questions/737318
复制相似问题