CH347应用 USB转SPI功能之:开源项目flashrom实现flash烧写

flashrom

flashrom作为一款强大的flash编程工具,集检测、读取、写入、验证和擦除功能为一体,通常用于擦写主板中闪存BIOS/EFI/coreboot/固件,同时也支持网卡(NIC)、SATA控制器卡和其他可以编程闪存芯片。
项目地址:https://github.com/flashrom/flashrom

CH347简介

CH347是一款高速USB总线转接芯片,通过USB总线提供异步串口、I2C同步串行接口、SPI同步串行接口和JTAG接口等。芯片资源如下:

  1. 2个高速串口,最高波特率达9Mbps
  2. 1个2线I2C接口,最高速率1MHz
  3. 1个4线SPI接口,最高速率60MHz
  4. 1个JTAG接口,最高速率60MHz
  5. 1个SWD接口

作为CH341的升级款,CH347的功能更加强大,特别是CH347F,无需进行模式切换,即可使用所有功能。
具体可参考:

CH347-高速USB转串口、JTAG/SWD、SPI、I2C芯片介绍

软件编译

代码的编译在项目中有所介绍这里不多赘述:
flashrom编译方式
而这里为了Windows系统下使用方便,特别将Windows下驱动改为官方驱动,并编译好版本,上传至GitHub仓库。
Windows版本:
Windows release_x64

软件使用

flashrom除基本的读写功能外,还可以解除芯片的读写保护,设置写保护区域以及读取芯片的Layout,具体可使用-h指令查看详情。

.\flashrom.exe -h
flashrom 1.4.0-devel (git:) on Windows 10.0 (x86_64) Dreg's mod https://www.rootkit.es v3.3
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 100ns).
Usage: flashrom.exe [-h|-R|-L|
        -p <programmername>[:<parameters>] [-c <chipname>]
                (--flash-name|--flash-size|
                 [-E|-x|(-r|-w|-v) <file>]
                 [(-l <layoutfile>|--ifd| --fmap|--fmap-file <file>) [-i <region>[:<file>]]...]
                 [-n] [-N] [-f])]
        [-V[V[V]]] [-o <logfile>]

 -h | --help                        print this help text
 -R | --version                     print version (release)
 -r | --read <file>                 read flash and save to <file>
 -w | --write (<file>|-)            write <file> or the content provided
                                    on the standard input to flash
 -v | --verify (<file>|-)           verify flash against <file>
                                    or the content provided on the standard input
 -E | --erase                       erase flash memory
 -V | --verbose                     more verbose output
 -c | --chip <chipname>             probe only for specified flash chip
 -f | --force                       force specific operations (see man page)
 -n | --noverify                    don't auto-verify
 -N | --noverify-all                verify included regions only (cf. -i)
 -x | --extract                     extract regions to files
 -l | --layout <layoutfile>         read ROM layout from <layoutfile>
      --wp-disable                  disable write protection
      --wp-enable                   enable write protection
      --wp-list                     list supported write protection ranges
      --wp-status                   show write protection status
      --wp-range=<start>,<len>      set write protection range (use --wp-range=0,0
                                    to unprotect the entire flash)
      --wp-region <region>          set write protection region
      --flash-name                  read out the detected flash name
      --flash-size                  read out the detected flash size
      --fmap                        read ROM layout from fmap embedded in ROM
      --fmap-file <fmapfile>        read ROM layout from fmap in <fmapfile>
      --ifd                         read layout from an Intel Firmware Descriptor
 -i | --include <region>[:<file>]   only read/write image <region> from layout
                                    (optionally with data from <file>)
      --image <region>[:<file>]     deprecated, please use --include
 -o | --output <logfile>            log output to <logfile>
      --flash-contents <ref-file>   assume flash contents to be <ref-file>
 -L | --list-supported              print supported devices
      --progress                    show progress percentage on the standard output
 -p | --programmer <name>[:<param>] specify the programmer device. One of
    dummy, raiden_debug_spi, ft2232_spi, serprog, buspirate_spi, dediprog,
    developerbox, pony_spi, usbblaster_spi, pickit2_spi, ch341a_spi, ch347_spi,
    digilent_spi, stlinkv3_spi, dirtyjtag_spi.

You can specify one of -h, -R, -L, -E, -r, -w, -v or no operation.
If no operation is specified, flashrom will only probe for flash chips.

Detect当前的flash
如当前连接flash为W25Q16.V

# -p指定当前adapter为CH347
.\flashrom.exe -p ch347_spi
flashrom 1.4.0-devel (git:) on Windows 10.0 (x86_64) Dreg's mod https://www.rootkit.es v3.3
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 100ns).
Open CH347 device success.
Invalid SPI speed, using defaul(60M clock spi).
Found Winbond flash chip "W25Q16.V" (2048 kB, SPI) on ch347_spi.
No operations were specified.

读取flash内容

# 指定spi速度为15M
.\flashrom.exe -p ch347_spi:spispeed=15M -r data.bin

写入flash

# 默认SPI速度为60M
.\flashrom.exe -p ch347_spi -w data.bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值