查看: 1057|回复: 4
打印 上一主题 下一主题

11添加自己的SPIflash EN25T80到flashrom

[复制链接] qrcode

30

主题

31

帖子

94

积分

注册会员

Rank: 2

积分
94
楼主
跳转到指定楼层
发表于 2016-7-20 10:30 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 独行客 于 2016-7-20 22:51 编辑

11添加自己的SPIflash EN25T80到flashrom




  •     接上篇,【banana pi BPI-M3】10把香蕉板当SPI flash编程器


           有一个SPIflash 型号为 T80-75HCP  实际为EON_EN25T80的spi flash不支持,有点遗憾,现在解决这个遗憾


  • 源码下载和编译

       上篇已经成功编译了flashrom程序,参考10把香蕉板当SPI flash编程器  里面的
    【7.        源码编译flashrom 成功!】http://bbs.ickey.cn/community/fo ... 4371&extra=page%3D1

    flashrom 的官方编译参考
https://www.flashrom.org/Downloads#Installation_from_source
  • 添加自己的spi flash到程序
       官方参考:https://www.flashrom.org/Development_Guidelines#Adding.2Freviewing_a_new_flash_chip
打开源码【flashrom\flashchips.c】,因为【flashrom\flashchips.h】头文件已经有【EON_EN25T80】的ID定义



  1. const struct flashchip flashchips[] =
复制代码

找到EN25S80,复制然后在这段下面,依葫芦画瓢,改改
  1. {
  2.         .vendor     = "Eon",
  3.         .name       = "EN25S80",
  4.         .bustype    = BUS_SPI,
  5.         .manufacture_id = EON_ID_NOPREFIX,
  6.         .model_id   = EON_EN25S80,
  7.         .total_size = 1024,
  8.         .page_size  = 256,
  9.         .feature_bits   = FEATURE_WRSR_WREN | FEATURE_OTP,
  10.         .tested     = TEST_UNTESTED,
  11.         .probe      = probe_spi_rdid,
  12.         .probe_timing   = TIMING_ZERO,
  13.         .block_erasers  = {
  14.             {
  15.                 .eraseblocks = { {4 * 1024, 256} },
  16.                 .block_erase = spi_block_erase_20,
  17.             }, {
  18.                 .eraseblocks = { {64 * 1024, 16} },
  19.                 .block_erase = spi_block_erase_d8,
  20.             }, {
  21.                 .eraseblocks = { {1024 * 1024, 1} },
  22.                 .block_erase = spi_block_erase_60,
  23.             }, {
  24.                 .eraseblocks = { {1024 * 1024, 1} },
  25.                 .block_erase = spi_block_erase_c7,
  26.             }
  27.         },
  28.         .printlock  = spi_prettyprint_status_register_bp2_srwd,
  29.         .unlock     = spi_disable_blockprotect,
  30.         .write      = spi_chip_write_256,
  31.         .read       = spi_chip_read,
  32.         .voltage    = {1650, 1950},
  33.     },
复制代码




依葫芦画瓢,改改,添加一个芯片操作



  1. #if 1  //ADD EON_EN25T80  BY CHOW
  2.     {
  3.         .vendor     = "Eon",
  4.         .name       = "EN25T80",
  5.         .bustype    = BUS_SPI,
  6.         .manufacture_id = EON_ID_NOPREFIX,
  7.         .model_id   = EON_EN25T80,
  8.         .total_size = 1024,
  9.         .page_size  = 256,
  10.         .feature_bits   = FEATURE_WRSR_WREN | FEATURE_OTP,
  11.         .tested     = TEST_OK_PREW,
  12.         .probe      = probe_spi_rdid,
  13.         .probe_timing   = TIMING_ZERO,
  14.         .block_erasers  = {
  15.             {
  16.                 .eraseblocks = { {4 * 1024, 256} },
  17.                 .block_erase = spi_block_erase_20,
  18.             }, {
  19.                 .eraseblocks = { {64 * 1024, 16} },
  20.                 .block_erase = spi_block_erase_d8,
  21.             }, {
  22.                 .eraseblocks = { {64 * 1024, 16} },
  23.                 .block_erase = spi_block_erase_52,
  24.             }, {
  25.                 .eraseblocks = { {1024 * 1024, 1} },
  26.                 .block_erase = spi_block_erase_60,
  27.             }, {
  28.                 .eraseblocks = { {1024 * 1024, 1} },
  29.                 .block_erase = spi_block_erase_c7,
  30.             }
  31.         },
  32.         .printlock  = spi_prettyprint_status_register_bp2_srwd,
  33.         .unlock     = spi_disable_blockprotect,
  34.         .write      = spi_chip_write_256,
  35.         .read       = spi_chip_read,
  36.         .voltage    =  {3000, 3600},
  37.     },
  38. #endif
复制代码


参数详解就不发了,自己找找flashrom官方说明官方说明和源码

然后编译
  1. $make
复制代码





  • 验证读写   

   
     1、读设备型号
      
  1. ./flashrom -p serprog:dev=/dev/ttyACM0:1152000
复制代码
  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000
  2. flashrom v0.9.9-r1954 on Linux 3.4.39-BPI-M3-Kernel (armv7l)
  3. flashrom is free software, get the source code at https://flashrom.org

  4. Calibrating delay loop... OK.
  5. serprog: Programmer name is "serprog-STM32/GD"
  6. serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0xfef80000.
  7. Found Eon flash chip "EN25T80" (1024 kB, SPI) on serprog.
  8. No operations were specified.
  9. bpi@bananapi:~/flashrom$
复制代码
2、读设备型号和详细调试信息
  1. ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -V
复制代码
  1. Command line (3 args): ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -V
复制代码

4、读操作
  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -r readEN25T80.bin
复制代码
  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -r readEN25T80.bin
  2. flashrom v0.9.9-r1954 on Linux 3.4.39-BPI-M3-Kernel (armv7l)
  3. flashrom is free software, get the source code at https://flashrom.org

  4. Calibrating delay loop... OK.
  5. serprog: Programmer name is "serprog-STM32/GD"
  6. serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0xfef80000.
  7. Found Eon flash chip "EN25T80" (1024 kB, SPI) on serprog.
  8. Reading flash... done.
  9. bpi@bananapi:~/flashrom$
复制代码


3、擦除操作(写操作之前一定要先擦除操作)
  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -E
复制代码

  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -E
  2. flashrom v0.9.9-r1954 on Linux 3.4.39-BPI-M3-Kernel (armv7l)
  3. flashrom is free software, get the source code at https://flashrom.org

  4. Calibrating delay loop... OK.
  5. serprog: Programmer name is "serprog-STM32/GD"
  6. serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0xfef80000.
  7. Found Eon flash chip "EN25T80" (1024 kB, SPI) on serprog.
  8. Erasing and writing flash chip... Erase/write done.
  9. bpi@bananapi:~/flashrom$
复制代码


4、写操作
  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -w writeEN25T80.bin
复制代码

  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -w writeEN25T80.bin
  2. flashrom v0.9.9-r1954 on Linux 3.4.39-BPI-M3-Kernel (armv7l)
  3. flashrom is free software, get the source code at https://flashrom.org

  4. Calibrating delay loop... OK.
  5. serprog: Programmer name is "serprog-STM32/GD"
  6. serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0xfef80000.
  7. Found Eon flash chip "EN25T80" (1024 kB, SPI) on serprog.
  8. Reading old flash chip contents... done.
  9. Erasing and writing flash chip... Erase/write done.
  10. Verifying flash... VERIFIED.
  11. bpi@bananapi:~/flashrom$
复制代码






4、验证烧写是否成功
     重新读出来,然后比较下


  1. bpi@bananapi:~/flashrom$ ./flashrom -p serprog:dev=/dev/ttyACM0:1152000 -r rereadEN25T80.bin
  2. flashrom v0.9.9-r1954 on Linux 3.4.39-BPI-M3-Kernel (armv7l)
  3. flashrom is free software, get the source code at https://flashrom.org

  4. Calibrating delay loop... OK.
  5. serprog: Programmer name is "serprog-STM32/GD"
  6. serprog: requested mapping AT45CS1282 is incompatible: 0x1080000 bytes at 0xfef80000.
  7. Found Eon flash chip "EN25T80" (1024 kB, SPI) on serprog.
  8. Reading flash... done.
  9. bpi@bananapi:~/flashrom$
复制代码
比较下


  1. bpi@bananapi:~/flashrom$ cmp rereadEN25T80.bin writeEN25T80.bin
复制代码
没有返回信息表示 写进去的和重新读出来的都一样,表示添加spi flash  【EN25T80】成功!!!



规格书 EN25T80 25T80-en-规格书技术资料.pdf

改好的源码 flashrom_add_EN25T80_OK_20160720.zip














回复

使用道具 举报

0

主题

111

帖子

76

积分

注册会员

Rank: 2

积分
76
沙发
发表于 2016-7-20 10:36 PM | 只看该作者
本帖最后由 独行客 于 2016-7-20 22:55 编辑


万恶的非法字符 555~~~~~~~~~~~~~~,最后发了无数遍,才发现这一行是非法字符,删掉就可以发表了,坑爹






删掉这行就行,不知道怎么回事????
你说非法字符,也要告诉我非法字符在那个位置啊,呀不然怎么发帖啊!!!
测试 :
  /* OTP: 256B total; enter 0x3A
可以发表


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

78

帖子

10

积分

新手上路

Rank: 1

积分
10
板凳
发表于 2016-7-20 10:55 PM | 只看该作者
本帖最后由 独行客 于 2016-7-20 22:57 编辑

测试 /* OTP: 256B total; enter 0x3A *
测试:
  /* OTP: 256B total; enter 0x3A * /*和/之间有一个空格也可发表,去掉空格就提示非法字符,

太坑了,严重打击我的发帖积极性!!!!






回复 支持 反对

使用道具 举报

0

主题

88

帖子

24

积分

新手上路

Rank: 1

积分
24
地板
发表于 2016-7-21 09:27 PM | 只看该作者
感谢 LiuYang 的精
回复 支持 反对

使用道具 举报

0

主题

71

帖子

18

积分

新手上路

Rank: 1

积分
18
5#
发表于 2016-7-22 01:33 PM | 只看该作者
/ *    * /  非法字符  请留意
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表