20170104_jeffrey - silenceuncrio/diary GitHub Wiki
Index
- 0920 - firmware uprade 的 progress bar - bootatrap 有現成的可以用
- 0950 - firmware.js
- 1055 - 大概估了一下 firmware upgrade 所需的時間 - 96 秒
- 1610 - firmware upgrade 的 progress bar 做完囉
0920
來看一下 firmware uprade 的 progress bar 怎麼作
http://www.w3schools.com/bootstrap/bootstrap_progressbars.asp
bootatrap 有現成的可以用
我只要給它適當的百分比就可以畫出 progress bar 了
0950
目前 firmware.js
相關 function 如下
...
vm.upgrade = function(_file) {
if (_file) {
...
vm.progress = "Firmware Upload...";
...
Upload.upload({ url: 'api/firmwareUpload', data: data })
.then(function(resp) {
...
return icos.firmware.upgrade();
})
.then(function(resp) {
vm.progress = "Firmware Upgrade Progress Start...";
vm.timeout_3sec();
});
}
}
vm.timeout_3sec = function () {
timer_3sec.then(function () {
icos.firmware.progress()
.then(function(response) {
vm.progress = response.data.progress.content;
if (vm.progress.indexOf('finished') != -1) {
vm.upgrade_ing = false;
if (vm.progress.indexOf('failed') == -1) {
vm.upgrade_done = true;
}
} else {
vm.timeout_3sec();
}
});
});
}
...
vm.upgrade
被觸發後
先利用 vm.progress = "Firmware Upload...";
顯示出 Firmware Upload...
然後先呼叫 Upload.upload({ url: 'api/firmwareUpload', data: data })
作 upload 的動作
這邊需要估一下時間
一旦 iweb server 完成 upload 之後會有 response 給 firmware.js
firmware.js
馬上會呼叫 icos.firmware.upgrade()
進行 firmware upgrade 的動作
iweb
會把 firmware.cgi
叫起來在背景作事(&) 並馬上回應給 firmware.js
firmware.cgi
會去叫 FirmwareUpgrade.sh
這支 shell script
firmware.js
在收到 iweb
的回應後先利用 vm.progress = "Firmware Upgrade Progress Start...";
顯示訊息
然後呼叫 vm.timeout_3sec();
觸發後續每三秒去呼叫 icos.firmware.progress()
icos.firmware.progress()
會讓 firmware.cgi
把 /tmp/FirmwareUpgrade.log
的內容讀回來
/tmp/FirmwareUpgrade.log
的內容由 FirmwareUpgrade.sh
這支 shell script 維護
完整的 /tmp/FirmwareUpgrade.log
內容如下
firmware upgrade shell script start...
Extract all files from /tmp/firmware.upload
tar -C /tmp -xf /tmp/firmware.upload succeeded
Burn the kernel to NAND...
Erasing kernel_b partition - MTD device 7 (/dev/mtd7)
Flashing Kernel
Burn the dtb to NAND...
Erasing dtb_b partition - MTD device 8 (/dev/mtd8)
Flashing dtb
Burn the rootfs to NAND...
Attach rootfs_b patition to UBI - MTD device 9
ubiattach /dev/ubi_ctrl -m 9 succeeded
Create derectory /mnt/rootfs_b
Mount /mnt/rootfs_b with node ubi2:rootfs_b
mount -t ubifs ubi2:rootfs_b /mnt/rootfs_b succeeded
Writting rootfs... please wait
Unmount /mnt/rootfs_b
Change uboot env...
The active firmware is a, switch to b
Modify uboot env 'bootargs'
Modify uboot env 'bootcmd'
firmware upgrade shell script succeeded
finished
1055
大概估了一下 firmware upgrade 所需的時間
可以分成下面幾個階段 順便列出所需要的秒數
- Firmware Upload - 12
- Firmware Upgrade Progress Start - 3
- Burn the kernel to NAND - 3
- Burn the rootfs to NAND - 3
- Writting rootfs - 63
- Unmount - 12
- finished - 0
總花費 96 秒
大概就把每個階段的秒數當作百分比就可以了
1610
firmware upgrade 的 progress bar 做完囉
commit...