cp source target count cp.b source target count cp.w source target count cp.l source target count cp.q source target count
The cp command is used to copy count chunks of memory from the source address to the target address. If the target address points to NOR flash, the flash is programmed.
The number bytes in one chunk is defined by the suffix defaulting to 4 bytes:
suffix | chunk size |
---|---|
.b | 1 byte |
.w | 2 bytes |
.l | 4 bytes |
.q | 8 bytes |
<none> | 4 bytes |
- source
- source address, hexadecimal
- target
- target address, hexadecimal
- count
- number of words to be copied, hexadecimal
The example device has a NOR flash where the lower part of the flash is protected. We first copy to RAM, then to unprotected flash. Last we try to write to protectd flash.
=> mtd list List of MTD devices: * nor0 - device: flash@0 - parent: root_driver - driver: cfi_flash - path: /flash@0 - type: NOR flash - block size: 0x20000 bytes - min I/O: 0x1 bytes - 0x000000000000-0x000002000000 : "nor0" => cp.b 4020000 5000000 200000 => cp.b 4020000 1e00000 20000 Copy to Flash... done => cp.b 4020000 0 20000 Copy to Flash... Can't write to protected Flash sectors =>
The cp command is available if CONFIG_CMD_MEMORY=y. Support for 64 bit words (cp.q) depends on CONFIG_MEM_SUPPORT_64BIT_DATA=y. Copying to flash depends on CONFIG_MTD_NOR_FLASH=y.
The return value $? is set to 0 (true) if the command was successfully, 1 (false) otherwise.