2017-09-25 190 views
0

在Linux 2.6.25我有輸出:無法識別的JEDEC ID

physmap platform flash device: 00800000 at ff800000 
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank 
Amd/Fujitsu Extended Query Table at 0x0040 
physmap-flash.0: CFI does not contain boot bank location. Assuming top. 
number of CFI chips: 1 
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. 
RedBoot partition parsing not available 
Using physmap partition information 
Creating 6 MTD partitions on "physmap-flash.0": 
0x00000000-0x00040000 : "U-Boot image" 
0x00040000-0x00050000 : "U-Boot params" 
0x00050000-0x00250000 : "Linux kernel" 
0x00250000-0x00750000 : "RFS" 
0x00750000-0x007f0000 : "JFFS" 
0x007f0000-0x00800000 : "unused" 
m25p80 spi1.0: s70fl256p (16384 Kbytes) 
Creating 2 MTD partitions on "tpts1691.spi.flash": 
0x00000000-0x00400000 : "spi_flash_part0" 
0x00400000-0x01000000 : "spi_flash_part1" 
DSPI: Coldfire master initialized 

我嘗試端口SPI閃存驅動器新的內核4.12.5。 我加入spi_nor_ids在SPI-NOR/SPI-nor.c我jedecid

{ "s70fl256p", INFO(0x012018,  0, 256 * 1024, 64, 0) }, 

,但我有錯誤:

spi_coldfire spi_coldfire:主人是未排隊的,不贊成這種方式 M25P80 spi1.0:無法識別的JEDEC ID字節:00,00,00

在輸出

physmap platform flash device: 00800000 at ff800000 
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank. Manufacturer ID 0x000001 Chip ID 0x000201 
Amd/Fujitsu Extended Query Table at 0x0040 
    Amd/Fujitsu Extended Query version 1.3. 
physmap-flash.0: CFI contains unrecognised boot bank location (1). Assuming bottom. 
number of CFI chips: 1 
Creating 6 MTD partitions on "physmap-flash.0": 
0x000000000000-0x000000040000 : "U-Boot image" 
0x000000040000-0x000000050000 : "U-Boot params" 
0x000000050000-0x000000250000 : "Linux kernel" 
0x000000250000-0x000000750000 : "RFS" 
0x000000750000-0x0000007f0000 : "JFFS" 
0x0000007f0000-0x000000800000 : "unused" 
uclinux[mtd]: probe address=0x3549d0 size=0x10804000 
Creating 1 MTD partitions on "ram": 
0x000000000000-0x000010804000 : "ROMfs" 
spi_coldfire spi_coldfire: master is unqueued, this is deprecated 
m25p80 spi1.0: unrecognized JEDEC id bytes: 00, 00, 00 
DSPI: Coldfire master initialized 

也許有人已經解決了這個錯誤? 謝謝。

+0

等等,你確定主線上已經沒有驅動了嗎? – 0andriy

+0

是的,它是特定的驅動程序。 – user3826752

+0

你確定**嗎?從輸出結果來看,只有很久以前的標準驅動程序才上游。 – 0andriy

回答

2

第1條消息spi_coldfire: master is unqueued, this is deprecated不是錯誤。 這只是一個警告,註冊的SPI控制器有自己的消息傳輸回調master->transfer。已棄用,但仍由kernel 4.12.5支持。 看看drivers/spi/spi.c:1993

第二條消息:我懷疑你的Flash根本沒有JEDEC ID(讀取0,0,0),但是你的flash_info有。因此,爲了避免調用spi_nor_read_id(),請讓info->id_len0id_len計算爲.id_len = (!(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))),所以可能的解決方案是簡單地讓jedec_id0。 Like:

{ "s70fl256p", INFO(0,  0, 256 * 1024, 64, 0) }, 
+0

謝謝。我今天會解決它。但是你寫了第二條消息:我懷疑你的閃存根本沒有JEDEC ID(讀取0,0,0)。在Linux 2.6.25中,我有正確的輸出m25p80 spi1.0:s70fl256p(16384千字節)。 – user3826752

+0

想回家的路上,我意識到可能會有另一種情況。 spi_nor_match_id()成功。但是,因爲你的jedec id是!= 0,所以你的info-> id_len> 0,並且spi_nor_read_id()在spi-nor.c的1567行調用。避免調用此函數的方法是使(name && info-> id_len)子句爲false,然後僅讓jedec id = 0,如 {「s70fl256p」,INFO(0,0,256 * 1024,64,0) }, – MrCryo

+1

我修正了它:1.我需要將我的jedec id設置爲零,並添加到我的flash_platform_data結構中,以鍵入我的設備芯片,因爲在m25p80中。c在m25_probe中,您可以閱讀: 對於某些(歷史?)原因,許多平臺在flash_platform_data中提供了兩個不同的 名稱:「name」和「type」。通常命名爲「m25p80」,然後「類型」提供真正的芯片名稱。 *如果是這種情況,請尊重「類型」並忽略「名稱」。 – user3826752