강좌 & 팁
보통 Nand에 kernel 등을 업데이트 할 때는
부트로더의 부트커맨드 모드에서 tftp 나 usb등을 통해
RAM의 특정 영역에 이미지를 다운로드 받아 부트로더의(u-boot)
nand 유틸을 통해 nand erase & nand write 를 하게 되는데요.
피치 못할 사정으로, 커널 부팅 후 커널을 업데이트 해야 되는 경우도
있을 것 같아서, 커널 부팅 후 이미지 업데이트를 하는 방법을 올립니다.
준비물은 타겟 보드에 업데이트 할 Kernel Image 파일
mtdinfo, flash_erase, nandwrite 유틸리티 입니다.
일단 부팅 후 커널영역으로 잡힌 mtd 파티션을 확인합니다.
(보통은 커널 영역을 이미 알고 있겠지만 확인해봅니다)
# mtdinfo
Count of MTD devices: 6
Present MTD devices: mtd0, mtd1, mtd2, mtd3, mtd4, mtd5
Sysfs interface supported: yes
(예제에서의 커널 영역은 mtd1 로 잡혀있습니다.)
# mtdinfo /dev/mtd1
mtd1
Name: kernel
Type: nand
Eraseblock size: 131072 bytes, 128.0 KiB
Amount of eraseblocks: 64 (8388608 bytes, 8.0 MiB)
Minimum input/output unit size: 2048 bytes
Sub-page size: 512 bytes
OOB size: 64 bytes
Character device major/minor: 90:2
Bad blocks are allowed: true
Device is writable: true
mtd1 파티션을 초기화 합니다.
# flash_erase /dev/mtd1 0 1
Erasing 128 Kibyte @ 0 -- 100 % complete
mtd1 파티션에 kernel 이미지를 write 합니다.
# nandwrite -n -p /dev/mtd1 /mnt/nfs/uImage
Writing data to block 0 at offset 0x0
:
:
Writing data to block 26 at offset 0x340000