rk 3288のファームウェアブラシ書き込み


全体を参照http://wiki.t-firefly.com/index.php/Firefly-RK3288のlinux開発
ファームウェアブラシアップアップグレード_toolブラシでもrkflashkitでもrkflashtoolでも
http://dl.radxa.com/rock/tools/linux/
ブラシツールuboot kernelは
https://github.com/linux-rockchip (ここは全部ソースです)
ダウンロードします.
ubootの場合.瑞芯微はカスタムフォーマットを使用しています.u-boot.binやddrを初期化したbinなどを統合してupgrade_を生成する必要があります.toolが認識できるbinファイルを書くことができます.
他には要求がなさそうです.
ubootマージのコードはtools/boot_merger.c中.
sudo ./upgrade_tool
rk3288的固件刷写_第1张图片
適切なrockcusbデバイスを選択します.
ul rk3288uboot.bin
ダウンロード完了を実行します.
DIコマンドを使用することで、異なるパーティションファイルをEMMCにダウンロードできます.
サポート-s-k-b -r -p
-s(systemパーティション)、-k(kernelパーティション)、-b(bootパーティション)、-r(recoveryパーティション)-p(parameterファイル)、-m(misc??パーティション)デバイスがparameterを焼き付けた場合、単一パーティションミラーコマンド:di-s system.imgデバイスがparameterを焼き付けていない場合、単一パーティションミラーコマンド:di-p、-s system.img parameterデバイスがparameterを録画した場合、複数のパーティションミラーコマンドを書き込みます:di–s,-k system.img,kernel.img
コマンドラインでrootfsを指定すると、CMDLINEにroot=xxxxが追加されます.
root=/dev/block/mtd/by-name/linuxroot        #    "linuxroot"   nand   
root=/dev/mmcblk0p1          # TF        
root=/dev/sda1               # U    USB         
root=LABEL=linuxroot         #     "linuxroot"    ,         

これでliuxrootという名前のext 4ファイルを作成する必要があります.
自分でext 4ファイルを作成した場合.次の手順に従って
dd if=/dev/zero of=linuxroot.img bs=1M count=1024
#      ext4       ,    linuxroot
mkfs.ext4 -F -L linuxroot linuxroot.img
  ,    ,    :

mount -o loop linuxroot.img /opt
cp -a /mnt/ubuntu/ /opt/
umount /opt

すでに作成されたボリュームラベルの場合は、e 2 labelコマンドを使用して変更または表示する必要があります.
e 2 label deviceの表示
e 2 label device labelnameの変更
rk 3288 flashのファームウェアです.RK3288UbootLoader_V 2.19.01.bin焼きは0アドレスまで書きます.parameterも0アドレスまで焼いています.これは衝突したのではないでしょうか.
実際にRK 3288 UbootLoaderを焼きましたV 2.19.01は、焼がpbaに書いた0アドレスです.
parameterや他のファームウェアはStorageWriteLba焼がLBAの0アドレスに書いてある.
以下の理解は個人の理解に属し、間違いがあれば指摘してください.
emmcの場合.複数のパーティションがあり、bootパーティションが2つあります.他のユーザーパーティションUSRと.
例えばboot 1 boot 2 usrパーティションです.
boot 1を書く0アドレスとboot 2を書く0アドレスとusrの0アドレスは違います.emmcの制御レジスタのビット位置を変更して異なるパーティションを書くことにより、各パーティションのアドレスは独立している.
形式は以下の通り
WriteLba(offset,num,buf)
{
setCtrlReg(boot 1パーティション)
write(0,num,buf)
}
WritePba(offset,num,buf)
{
setCtrlReg(boot 2パーティション)
write(0,num,buf)
}
違う住所を書く
しかしrk 3288には別の形式がある.それはboot 1 boot 2パーティションを使用しないことです.USRパーティションをいくつかの領域に分けて操作します.異なる動作は、一定量のオフセットを増加させることによって実現される.
たとえば
WriteLba(offset,num,buf)
{
write(0+LBAOFFSET,num,buf)
}
WritePba(offset,num,buf)
{
write(0+PBAOFFSET,num,buf)
}
ソースコードで見ると.LBAを書いた時
iret = SDM_Write(ChipSel, LBA + gSdCardInfoTbl[ChipSel].FwPartOffset, nSec, pbuf);
gSdCardInfoTbl[ChipSel].FwPartOffsetの値は8192.
したがって、8192セクタ8192*512バイト=4 MBが保持されます.
PBAを書くとき
PBA = PBA + SD_CARD_BOOT_PART_OFFSET;
SD_CARD_BOOT_PART_OFFSET=64 .すなわち、64*512が32 kbのままである
      pba開始        LBA開始
  0-32KB-----------4MB-----------------------------
[[                       USRパーティション全体                    ]]