20170112_jeffrey - silenceuncrio/diary GitHub Wiki

Index

  • 0840 - ieee 802.1ag 加 itu-t y.1731
  • 1010 - 把 IEEE 802.1ag 和 ITU-T Y.1731 扛下來 - 12 周
  • 1050 - firmware upgrade 還有 issue 要考慮
  • 1715 - 搞定 dual image

0840

ariel 被我昨天估的 工時嚇到了

ieee 802.1ag 加上 itu-t y.1731 估了 28 周... 7個月

早上好好跟她聊一下

看怎麼樣分階段把菜端出去

ieee 802.1ag 目前已經併在 ieee 802.1q 裡面

最新的 ieee 802.1q 是 2014 年版

相關的章節有

    1. Principles of Connectivity Fault Management operation
    1. CFM entity operation
    1. CFM protocols
    1. Encoding of CFM PDUs
    1. CFM in systems
    1. DDCFM operations and protocols

29. DDCFM operations and protocols 我以前也沒看過

ITU-T G.8013/Y.31731

全名為

Operation, administration and maintenance (OAM) functions and mechanisms for Ethernet-based networks

1010

跟 ariel 和 john 聊完之後還是需要我把 IEEE 802.1ag 和 ITU-T Y.1731 扛下來

而且把時間縮成 12 周

不過我要列一下 我們針對 IEEE 802.1ag 和 ITU-T Y.1731 會實作的項目讓 ariel 下禮拜方便跟客戶討論

同時這也是一個具體的書面承諾... 才不會陷入無窮追加功能的局面

先來列一下 IEEE 802.1ag 我們要提供的功能

  • 4 management end point, each management point support the following functions
    • continuity check
    • loopback

ITU-T Y.1731 的部分, 每個 MEP 我們會提供

  • frame loss measurement
  • frame delay measurement

綜括一下 IEEE 802.1ag 和 ITU-T Y.1731 我們 M300 會提供的功能

  • 4 management end point, each management point support the following functions
    • continuity check
    • loopback
    • frame loss measurement
    • frame delay measurement

1050

firmware upgrade 還有 issue 要考慮

假設目前 primary firmware(版本1.1) 是在 A 區, secondary firmware(版本 1.0) 在 B 區

我們做 firmware upgrade 的動作把新的 firmware(版本 1.2) upgrade 到 m300 上

這時我們會把 firmware(版本 1.2) 放到 secondary firmware B 區去

在確定 firmware 燒錄的動作都完成之後

我們會修改 uboot env 來切換 primary 跟 secondary

primary firmware(版本1.2) 是在 B 區, secondary firmware(版本 1.1) 在 A 區

不幸的是我們某個 linux 上的 application 沒寫好讓系統開機發生異常

避免進入無限開機異常的循環

我們要有一個機制在這種尷尬的時候把 primary 和 secondary 作切換並讓使用者知道 firmware(版本1.2) 是個雷

1715

以下 uboot env 搞定 dual image

=> printenv
app_choose=if printenv no_good; then echo replace primary app; run app_replace; saveenv; else echo run primary app; fi
app_primary=b
app_replace=if test ${app_primary} = a; then echo a to b; setenv app_primary b; setenv app_secondary a; else echo b to a; setenv app_primary a; setenv app_secondary b; fi
app_secondary=a
baudrate=115200
bootargs=console=ttymxc0,115200 ubi.mtd=9 root=ubi0:rootfs_b rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootargs_a=echo bootargs for room a; setenv bootargs console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs_a rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootargs_b=echo bootargs for room b; setenv bootargs console=ttymxc0,115200 ubi.mtd=9 root=ubi0:rootfs_b rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootcmd=run app_choose; echo run bootargs_${app_primary}; run bootargs_${app_primary}; run nandread_${app_primary}; setenv no_good 1; saveenv; bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
console=ttymxc0
dtb_a_addr=0x00E00000
dtb_b_addr=0x08E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
initrd_addr=0x83800000
initrd_high=0xffffffff
kernel_a_addr=0x00400000
kernel_b_addr=0x08400000
loadaddr=0x80800000
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
nandread_a=nand read ${loadaddr} ${kernel_a_addr} 0x800000;nand read ${fdt_addr} ${dtb_a_addr} 0x100000;
nandread_b=nand read ${loadaddr} ${kernel_b_addr} 0x800000;nand read ${fdt_addr} ${dtb_b_addr} 0x100000;
no_good=1
panel=TFT43AB

Environment size: 2281/1048572 bytes
=>

application 開起來視為正常服務後要記得把 no_good EV 清掉

不然 u-boot 會把 primary application replace 掉