2016年9月25日 星期日

AM335x Ethernet

AM335x 內建有 3 埠 Ethernet Switch,連接兩個 GMII 埠及 SoC Host,驅動程式使用 cpsw (CONFIG_CPSW,device tree 是 ti,cpsw)。

網路界面可使用單一 eth0,或者 eth0 加上 eth1。後者是 dual_emac 模式,可透過 device tree 設定。dual_emac 會有兩份 net_device 及 priv,有各自的 MAC address,但有許多東西是相同或共用的。

接收封包 (使用 NAPI)
  • 原本就有 sk_buff,open 時就準備好給驅動程式 DMA 使用。
  • 如果是 dual_emac 模式,會去看來自哪個 GMII port,取得精確的 net_device 及 priv
  • 取新 sk_buff 給之後封包 DMA 用。如果取不到,拋棄此封包,原本的 sk_buff 給之後封包 DMA 用。
  • 設 time stamp、protocol,netif_receive_skb() 及統計
註:
  • AM335x 不是 ARCH_DAVINCI,但用 DaVinci 的 MDIO 及 CPDMA。ti 有下列網路界面
    • CPSW (ARCH_DAVINCI or SOC_AM33XX): +DaVinci MDIO +DaVinci CPDMA +CPSW Phy sel
      • CPTS (CPSW): +PTP_1588_CLOCK
    • DaVinci EMAC (ARCH_DAVINCI or ARCH_OMAP3): +DaVinci MDIO +DaVinci CPDMA
    • TLAN (PCI or EISA)
    • CPMAC (AR7)
  • kernel source code 在 git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
參考來源
  1. http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User%27s_Guide

2016年9月12日 星期一

GPS

衛星導航 (satellite navigation 或 satnav) 系統
Global Navigation Satellite System (GNSS) 涵蓋全球的導航衛星系統

全球定位系統 (Global Positioning System,GPS) 原為美軍用來定位及導航,後來擴大給民間使用。因為 GPS 是最普遍的衛星定位系統,而變成通稱,還有其它系統,支援越多系統也就可以看到越多衛星。

衛星定位原理

GPS 衛星不斷往地面傳送衛星位置及時間等資訊,GPS 接收器收到後依據位置變化及訊號接收的時間差推算出跟衛星的距離。當只有一顆衛星時,只知道接收器位置是在一個球面。當有兩顆衛星時,接收器位置縮小為兩個球面相交的地方,也就是一個圓。當有三顆衛星時再縮小為兩點,其中只有一點是在地球表面,可決定出位置。實際上需要第四或更多的衛星來增進準確度,特別是高度。高樓、峽谷、密林、高壓電塔等也會干擾 GPS 信號,能看到越多的衛星也就越能增進可靠度。

衛星定位系統
  • GPS (美):21 顆運作衛星及 3 顆備份衛星在互成 30 度的 6 個軌道,在任何時間任何地點皆可同時觀測到 4 至 7 顆衛星,精確度 5M。
  • GLONASS (GLObal NAvigation Satellite System,俄):跟 GPS 類似,但每顆衛星信號頻率不同 (可防止整個系統同時被敵方干擾)、使用前蘇聯的地心座標系、莫斯科標準時間
  • BDS (中國北斗系統,發展中,計畫 2020 完成)
  • Galilen (歐,完成時間未定):24 顆運行衛星及 6 顆備份衛星組成,精確度 1M (public) 1cm (加密)
  • QZSS (Quasi-Zenith Satellite System,日本準天頂):3 顆只覆蓋東亞的輔助 GPS 衛星,增進信號的可用性、準確度和可靠度。
單靠衛星就可以完成定位,但加上其它輔助可加快定位時間、增加定位精準度。
  • A-GPS (Assisted GPS)
    • 透過網路 (線上或離線) 取得衛星位置 => 大幅減少首次定位時間
    • 由基地台計算位置 => 減低行動裝置所需計算能力
    • Wi-Fi ESSID 或基地台 Cell ID 透過網路查詢大約位置 => 加速定位時間
  • 全球衛星導航增強系統 (GNSS Augmentation System) 或 WADGPS (Wide Area Differential GPS):在地面增設固定位置的地面站,提供更精確的定位資料,讓計算出來的位置更精準。
  • 慣性導航:藉由陀螺儀、加速計、電子羅盤、氣壓計、計步器、單車轉速等資訊推算,尤其在收不到衛星或其它無線訊號時。
應用
  • 定位 (經緯度及海拔)
  • 移動軌跡:位置移動的連續定位結果。可即時或事後對應到地圖上使用。或者按照之前的儲存的路徑去行進,不需要地圖。
  • 測速:移動軌跡上每個定位點加上時間可算出速度
  • 導航:定位搭配地圖資料行進
參考來源
  1. 手機GPS登山推廣計畫
  2. 關於衛星導航系統的兩三事
  3. OpenStreetMap wiki:Accuracy of GPS data
  4. http://tech.shaolin.tw/posts/2013/07/13/wi-fi-positioning-system-spoofing-1/

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...