flashrom读写flash bin文件
时间:2021-09-01
本文章向大家介绍flashrom读写flash bin文件,主要包括flashrom读写flash bin文件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、设备树中添加spidev0.0
&spi0 {
/* Disable SPI NOR by default: it optional on Orange Pi Zero boards */
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
status = "okay";
spidev@0{
compatible = "Allwinner,sun8i-h2-spi0";
reg = <0>;
spi-max-frequency = <40000000>;
// 128M spi-nor flash layout
partition@00000000 {
label = "u-boot";
reg = <0x00000000 0x000C0000>;
};
partition@000C0000 {
label = "bootenv";
reg = <0x000C0000 0x00020000>;
};
partition@000E0000 {
label = "dtb";
reg = <0x000E0000 0x00020000>;
};
partition@00100000 {
label = "kernel";
reg = <0x00100000 0x00500000>;
};
partition@00600000 {
label = "rootfs";
reg = <0x00600000 0x00A00000>;
};
};
};
2、驱动中添加compatiable
3、uboot配置
u-boot/configs/nano_c1_defconfig:
CONFIG_SPI_SUNXI=y
CONFIG_SPL_SPI_FLASH_SUPPORT=y
4、make menuconfig -->utils-配置flashrom包
CONFIG_PACKAGE_flashrom=y
5、(查看读写的flash型号flashrom是否已经添加,没有添加自己需要添加)增加要读写的flash信息(以XMC为例)
//flashchips.c文件
{
.vendor = "XinXin",
.name = "XM25QH128C",
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_XM25QH128C,
.total_size = 16384,
.page_size = 256,
/* OTP: 1536B total; read 0x48; write 0x42, erase 0x44 */
/* QPI: enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PREW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 4096} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 512} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 256} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {16 * 1024 * 1024, 1} },
.block_erase = spi_block_erase_60,
}, {
.eraseblocks = { {16 * 1024 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}
},
/* TODO: 2nd status reg (read 0x35, write 0x31) and 3rd status reg (read 0x15, write 0x11) */
.printlock = spi_prettyprint_status_register_bp4_srwd,
.unlock = spi_disable_blockprotect_bp4_srwd,
.write = spi_chip_write_256,
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2700, 3600},
},
定义设备和厂商ID
//flashchips.h文件
#define ST_XM25QH128C 0x4018
6、系统编译成功后会在/usr/sbin下生成flashrom工具
根据一下命令读写:
read flash: flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash.bin
write flash: flashrom -p linux_spi:dev=/dev/spidev0.0 -w flash.bin
其他命令也可以flashrom -h去查看
root@OpenWrt:/# flashrom -h flashrom v1.2 on Linux 5.4.124 (armv7l) flashrom is free software, get the source code at https://flashrom.org Usage: flashrom [-h|-R|-L| -p <programmername>[:<parameters>] [-c <chipname>] (--flash-name|--flash-size| [-E|(-r|-w|-v) <file>] [(-l <layoutfile>|--ifd| --fmap|--fmap-file <file>) [-i <imagename>]...] [-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> to flash -v | --verify <file> verify flash against <file> -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) -l | --layout <layoutfile> read ROM layout from <layoutfile> --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 | --image <name> only flash image <name> from flash layout -o | --output <logfile> log output to <logfile> --flash-contents <ref-file> assume flash contents to be <ref-file> -L | --list-supported print supported devices -p | --programmer <name>[:<param>] specify the programmer device. One of internal, dummy, gfxnvidia, drkaiser, satasii, atavia, it8212, ft2232_spi, serprog, buspirate_spi, dediprog, developerbox, pony_spi, nicintel, nicintel_spi, nicintel_eeprom, ogp_spi, linux_mtd, linux_spi, usbblaster_spi, mstarddc_spi, pickit2_spi, ch341a_spi, digilent_spi, stlinkv3_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.
原文地址:https://www.cnblogs.com/yuanqiangfei/p/15215662.html
- socket.io搭配pm2(cluster)集群解决方案
- 用 Python 来刷微信「跳一跳」游戏的记录
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十二)数据层优化-explain关键字及慢sql优化
- 高吞吐koa日志中间件
- 关于SQLRecoverableException问题的排查和分析(r4笔记第13天)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化
- node中的Stream-Readable和Writeable解读
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(六)一定要RESTful吗?
- 深入node之Transform
- 巧用shell脚本统计磁盘使用情况(r4笔记第12天)
- 使用fasttext实现文本处理及文本预测
- 关于导入导出sequence(r4笔记第11天)
- Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)
- Nodejs cluster模块深入探究
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 做olap一定要要了解的Druid存储结构
- 【ST开发板评测】使用Python来开发STM32F411
- 一文详解 Ansible 自动化运维!
- 手把手教你搭建织女星开发板RISC-V开发环境
- R语言多臂试验 - 我们应该考虑多重性吗?
- Stata估算观测数据的风险比
- R语言利用基线协变量提高随机对照试验的效率
- R语言使用倾向评分提高RCT(随机对照试验)的效率
- R语言调整随机对照试验中的基线协变量
- R语言用多重插补法估算相对风险
- R语言分析协变量之间的非线性关系
- stata如何处理结构方程模型(SEM)中具有缺失值的协变量
- stata对包含协变量的模型进行缺失值多重插补分析
- 互联网直播点播平台go语言搭建重定向和反向代理的区别及使用
- UNIX时间戳和北京时间的相互转换