protect *
Включить или отключить защиту от записи FLASH (enable or disable FLASH write protection)
Help:
=> help protect
protect - enable or disable FLASH write protection
Usage:
protect on start end
- protect FLASH from addr 'start' to addr 'end'
protect on start +len
- protect FLASH from addr 'start' to end of sect w/addr 'start'+'len'-1
protect on N:SF[-SL]
- protect sectors SF-SL in FLASH bank # N
protect on bank N
- protect FLASH bank # N
protect on all
- protect all FLASH banks
protect off start end
- make FLASH from addr 'start' to addr 'end' writable
protect off start +len
- make FLASH from addr 'start' to end of sect w/addr 'start'+'len'-1 wrtable
protect off N:SF[-SL]
- make sectors SF-SL writable in FLASH bank # N
protect off bank N
- make FLASH bank # N writable
protect off all
- make all FLASH banks writable
=>
protect on start end - защитить FLASH от адреса 'start' до адреса 'end'
protect on start+len - защитить FLASH от адреса 'start' до конца с адресом 'start'+'len'-1
protect on N:SF[-SL] - защитить сектора SF-SL в банке FLASH # N
protect on bank N - защитить банк FLASH # N
protect on all - защитить все банки FLASH
protect off start end - сделать FLASH доступным для записи от addr 'start' до addr 'end'
protect off start+len - сделать FLASH доступным для записи от addr 'start' до конца сектора w/addr 'start'+'len'-1 wrtable
protect off N:SF[-SL] - сделать сектора SF-SL доступными для записи в банк FLASH # N
protect off bank N - сделать банк FLASH # N доступным для записи
protect off all - сделать все банки FLASH доступными для записи
Команда protect
- еще одна сложная. Он используется для установки определенных частей флэш-памяти в режим только для чтения или для того, чтобы сделать их снова доступными для записи.
«Защищенная» (только для чтения) флэш-память не может быть записана с помощью команды cp
или стерта с помощью команды
erase
.
Защищенные области помечаются как (RO)
(только для чтения) в выводе команды flinfo
:
=> fli
Bank # 1: CFI conformant FLASH (16 x 16) Size: 64 MB in 512 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
Erase timeout: 16384 ms, write timeout: 2 ms
Buffer write timeout: 5 ms, buffer size: 32 bytes
Sector Start Addresses:
FC000000 E FC020000 E FC040000 E FC060000 E FC080000 E
FC0A0000 E FC0C0000 E FC0E0000 E FC100000 E FC120000 E
FC140000 E FC160000 E FC180000 E FC1A0000 E FC1C0000 E
FC1E0000 E FC200000 E FC220000 E FC240000 E FC260000 E
FC280000 E FC2A0000 E FC2C0000 E FC2E0000 E FC300000 E
FC320000 E FC340000 E FC360000 E FC380000 E FC3A0000 E
FC3C0000 E FC3E0000 E FC400000 E FC420000 E FC440000 E
FC460000 E FC480000 E FC4A0000 E FC4C0000 E FC4E0000 E
FC500000 E FC520000 E FC540000 E FC560000 E FC580000 E
FC5A0000 E FC5C0000 E FC5E0000 E FC600000 E FC620000 E
FC640000 E FC660000 E FC680000 E FC6A0000 E FC6C0000 E
FC6E0000 E FC700000 E FC720000 E FC740000 E FC760000 E
FC780000 E FC7A0000 E FC7C0000 E FC7E0000 E FC800000 E
....................
FFCC0000 E FFCE0000 E FFD00000 E FFD20000 E
FFD40000 E FFD60000 E FFD80000 E FFDA0000 E FFDC0000 E
FFDE0000 E FFE00000 E FFE20000 E FFE40000 E FFE60000 E
FFE80000 E FFEA0000 E FFEC0000 E FFEE0000 E FFF00000 E
FFF20000 E FFF40000 E FFF60000 RO FFF80000 RO FFFA0000 RO
FFFC0000 RO FFFE0000 RO
=> prot on 0xFF900000 0xFF97FFFF
Protected 4 sectors
=> fli
Bank # 1: CFI conformant FLASH (16 x 16) Size: 64 MB in 512 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
Erase timeout: 16384 ms, write timeout: 2 ms
Buffer write timeout: 5 ms, buffer size: 32 bytes
Sector Start Addresses:
FC000000 E FC020000 E FC040000 E FC060000 E FC080000 E
FC0A0000 E FC0C0000 E FC0E0000 E FC100000 E FC120000 E
FC140000 E FC160000 E FC180000 E FC1A0000 E FC1C0000 E
FC1E0000 E FC200000 E FC220000 E FC240000 E FC260000 E
FC280000 E FC2A0000 E FC2C0000 E FC2E0000 E FC300000 E
FC320000 E FC340000 E FC360000 E FC380000 E FC3A0000 E
FC3C0000 E FC3E0000 E FC400000 E FC420000 E FC440000 E
FC460000 E FC480000 E FC4A0000
....................
FF620000 E FF640000 E
FF660000 E FF680000 E FF6A0000 E FF6C0000 E FF6E0000 E
FF700000 E FF720000 E FF740000 E FF760000 E FF780000 E
FF7A0000 E FF7C0000 E FF7E0000 E FF800000 E FF820000 E
FF840000 E FF860000 E FF880000 E FF8A0000 E FF8C0000 E
FF8E0000 E FF900000 E RO FF920000 E RO FF940000 E RO FF960000 E RO
FF980000 E FF9A0000 E FF9C0000 E FF9E0000 E FFA00000 E
FFA20000 E FFA40000 E FFA60000 E FFA80000 E FFAA0000 E
FFAC0000 E FFAE0000 E FFB00000 E FFB20000 E FFB40000 E
FFB60000 E FFB80000 E FFBA0000 E FFBC0000 E FFBE0000 E
FFC00000 E FFC20000 E FFC40000 E FFC60000 E FFC80000 E
FFCA0000 E FFCC0000 E FFCE0000 E FFD00000 E FFD20000 E
FFD40000 E FFD60000 E FFD80000 E FFDA0000 E FFDC0000 E
FFDE0000 E FFE00000 E FFE20000 E FFE40000 E FFE60000 E
FFE80000 E FFEA0000 E FFEC0000 E FFEE0000 E FFF00000 E
FFF20000 E FFF40000 E FFF60000 RO FFF80000 RO FFFA0000 RO
FFFC0000 RO FFFE0000 RO
=> era 0xFF900000 0xFF97FFFF
- Warning: 4 protected sectors will not be erased!
done
Erased 4 sectors
=> prot off 1:455
Un-Protect Flash Sectors 455-455 in Bank # 1
=> fli
Bank # 1: CFI conformant FLASH (16 x 16) Size: 64 MB in 512 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
Erase timeout: 16384 ms, write timeout: 2 ms
Buffer write timeout: 5 ms, buffer size: 32 bytes
Sector Start Addresses:
FC000000 E FC020000 E FC040000 E FC060000 E FC080000 E
FC0A0000 E FC0C0000 E FC0E0000 E FC100000 E FC120000 E
FC140000 E FC160000 E FC180000 E FC1A0000 E FC1C0000 E
FC1E0000 E FC200000 E FC220000 E FC240000 E FC260000 E
FC280000 E FC2A0000 E FC2C0000 E FC2E0000 E FC300000 E
FC320000 E FC340000 E FC360000 E FC380000 E FC3A0000 E
FC3C0000 E FC3E0000 E FC400000 E FC420000 E FC440000 E
FC460000 E FC480000 E FC4A0000 E FC4C0000 E FC4E0000 E
FC500000 E FC520000 E FC540000
....................
FFD00000 E FFD20000 E
FFD40000 E FFD60000 E FFD80000 E FFDA0000 E FFDC0000 E
FFDE0000 E FFE00000 E FFE20000 E FFE40000 E FFE60000 E
FFE80000 E FFEA0000 E FFEC0000 E FFEE0000 E FFF00000 E
FFF20000 E FFF40000 E FFF60000 RO FFF80000 RO FFFA0000 RO
FFFC0000 RO FFFE0000 RO
=> era 1:455
Erase Flash Sectors 455-455 in Bank # 1
. done
=>
! Внимание ! Фактический уровень защиты зависит от микросхем флэш-памяти, используемых на вашем оборудовании, и от реализации драйвера флэш-памяти для этой платы.
В большинстве случаев U-Boot обеспечивает простую программную защиту, то есть предотвращает случайное стирание или перезапись важных вещей (например, сам код U-Boot или переменные среды U-Boot), но не может помешать вам обойти эти ограничения.
Нехороший пользователь, который загружает и запускает свой собственный код флеш-драйвера, не может и не будет остановлен этим механизмом.
Кроме того, в большинстве случаев эта защита эффективна только при запуске U-Boot, т.е. любая операционная система не будет знать о «защищенных» областях флэш-памяти и с радостью сотрет их, если потребуется.