2019年9月15日 星期日

AMBA Bus System

ARM 的 Advanced Microcontroller Bus Architecture (AMBA) 是一個 SoC 內各種功能區塊互連的規範,開放且免費的。

1996 AMBA 1
  • Advanced System Bus (ASB):32 位元 synchronous pipelined bus,放置 CPU 和記憶體。
  • Advanced Peripheral Bus (APB):適合低速控制存取,設計簡單,適合其它週邊。APB 透過 bridge 作 buffering 接到 ASB,可減少 ASB 負載。
1999 AMBA 2
  • Advanced High-performance Bus (AHB):single clock-edge protocol,廣泛用在 ARM7、ARM9 和 Cortex-M。
  • Advanced System Bus (ASB)
  • Advanced Peripheral Bus (APB2 or APB)
2003 AMBA 3
  • Advanced eXtensible Interface (AXI3 or AXI v1.0):互連達到更高效能,廣泛用在 Cortex-A9 處理器。
  • Advanced High-performance Bus Lite (AHB-Lite v1.0)
  • Advanced Peripheral Bus (APB3 v1.0)
  • Advanced Trace Bus (ATB v1.0):CoreSight on-chip debug and trace solution 的一部分。
2010 & 2011 AMBA 4
  • AXI Coherency Extensions (ACE):廣泛用在 Cortex-A7 和 Cortex-A15。
  • AXI Coherency Extensions Lite (ACE-Lite)
  • Advanced Extensible Interface 4 (AXI4)
  • Advanced Extensible Interface 4 Lite (AXI4-Lite)
  • Advanced Extensible Interface 4 Stream (AXI4-Stream v1.0)
  • Advanced Trace Bus (ATB v1.1)
  • Advanced Peripheral Bus (APB4 v2.0)
2013 AMBA 5
  • AXI5, AXI5-Lite and ACE5 Protocol Specification
  • Advanced High-performance Bus (AHB5, AHB-Lite)
  • Coherent Hub Interface (CHI):重新設計 high-speed transport layer and features designed 來減少 congestion。
  • Distributed Translation Interface (DTI)
  • Generic Flash Bus (GFB)

AHB (Advanced High-performance Bus)

AHB 在 AMBA 2 首次介紹,後續加大匯流排寬度到 64/128/256/512/1024 bit)。AHB 的 transaction 包含 address phase 和 data phase,不含 wait states 只有兩個 bus-cycles。

AHB-Lite 簡化 AHB 的設計給單一 master 使用。

APB (Advanced Peripheral Bus)

APB 為低速控制存取設計,如週邊的暫存器。APB 類似 AHB 有 address 和 data 階段,但大大減少需要的訊號數目,沒有 bursts 等。APB 透過 bridge 作 buffering 接到 AHB,減少 AHB 負載。

AXI (Advanced eXtensible Interface)

ATB (Advanced Trace Bus)

CHI (Coherent Hub Interface)

DTI (Distributed Translation Interface)

GFB (Generic Flash Bus)

參考

https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture
http://twins.ee.nctu.edu.tw/courses/embedlab_11/lecture/AMBA.pdf

2019年9月7日 星期六

處理器記憶體空間

實體記憶體 (Physical Memory) 是處理器的系統定址空間。如果處理器有 24 條位址線,可定指到 16MB 空間。硬體設計時,通常把 RAM 放在底部,快閃記憶體放在頂端,中間的範圍分配給各種週邊。
Flash

週邊

RAM

高階處理器有記憶體管理單元 (Memory Management Unit, MMU),創造出虛擬記憶體空間 (Virtual Memory Space),對應轉換到實體記憶體,讓作業系統可對記憶體空間進行存取控制。

2019年9月6日 星期五

CPU alignment restriction

記憶體對齊限制

處理器大多都可以定址到每個  bye,但通常設計成存取以 word 為倍數的邊界上的 word 最有效率。例如 word 是 32-bit,存取位址 4 的倍數為開始的 32-bit 最有效率。

如果直接存取位址不為 4 的倍數開始的 32-bit,結果可能不是你想要的,或產生 alignment fault。結果要對的話需要分兩次存取,再位移合併成需要的 word。

參考
Computer Organization and Design, The hardware/software interface by David A. Patterson and Jonh L. Hennessy
http://opass.logdown.com/posts/743054-about-memory-alignment

2019年8月26日 星期一

SMDS

有人尋問支援的 SNMP MIB 檔案,應該是依照 RFC 1213 的網路界面 MIB,看到裡面界面類型有 sip,註解 SMDS....

          ifType OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),          -- none of the following
                          regular1822(2),
                          hdh1822(3),
                          ddn-x25(4),
                          rfc877-x25(5),
                          ethernet-csmacd(6),
                          iso88023-csmacd(7),
                          iso88024-tokenBus(8),
                          iso88025-tokenRing(9),
                          iso88026-man(10),
                          starLan(11),
                          proteon-10Mbit(12),
                          proteon-80Mbit(13),
                          hyperchannel(14),
                          fddi(15),
                          lapb(16),
                          sdlc(17),
                          ds1(18),           -- T-1
                          e1(19),            -- european equiv. of T-1
                          basicISDN(20),
                          primaryISDN(21),   -- proprietary serial
                          propPointToPointSerial(22),
                          ppp(23),
                          softwareLoopback(24),
                          eon(25),            -- CLNP over IP
                          ethernet-3Mbit(26),
                          nsip(27),           -- XNS over IP
                          slip(28),           -- generic SLIP
                          ultra(29),          -- ULTRA technologies
                          ds3(30),            -- T-3
                          sip(31),            -- SMDS
                          frame-relay(32)
                      }

原來這裡的 sip 是 SMDS (Switched Multimegabit Data Service) Interface Protocol。SMDS 是一種分封交換的資料服務,大多用在 DS-1 或 DS-3。SMDS 有一系列 Bellcore 的規範,其中 SIP 是 SMDS 網路設備和 CPE 間的協定,基於 IEEE metropolitan-area networks (MANs),也就是 IEEE 802.6 Distributed Queue Dual Bus (DQDB),橫跨 OSI 網路層以下 3 層。SIP Level 3 屬於網路層,最多可傳送 9188 位元組上層資料,加上信頭和信尾。SIP Level 2 屬於資料連接層,將 Level 3 封包切成多個 44 位元組片段,加上信頭和信尾組合成固定 53 位元組的封包 (跟 B-ISDN ATM Cell 長度一樣,格式不同)。SIP Level 1 屬於實體層,包含子層 PLCP 和 physical transmission medium,實際傳送 Level 2 封包。
參考:
  1. https://pdfs.semanticscholar.org/7f14/7740144de2b4db212707411d72b6eac33b6a.pdf
  2. http://92.61.226.39/pbook/smds.htm

2019年8月24日 星期六

OSI Reference Model

OSI (Open-data System Interface Reference Model) 把網路通訊的各種功能分為七個層級,由上而下分別為:
LayerOSIInternet Protocol Suit
7Application應用層ApplicationHTTP, FTP, ...
6Presentation表現層 (表達層)
5Session會談層 (會議層)
4Transport傳輸層 (傳送層)TransportTCP, UDP
3Network網路層NetworkIP, ICMP
2Data Link資料連結層LinkEthernet, ARP, Serial, ATM
1Physical實體層
作用:
  • 將網路功能模組化,便於說明以及元件開發。
  • 其它
Physical Layer:
Data Link Layer:
Network Layer:
Transport Layer:
Session Layer:
Presentation Layer:
Application Layer:
參考
  1. http://www.wunan.com.tw/www2/download/2S63_2版1刷_試閱_100.11.8.PDF 
  2. https://www.pcnet.idv.tw/pcnet/network/network_ip_model.htm 
  3. http://linux.vbird.org/linux_server/0110network_basic.php
  4. TCP/IP 分層協定參考 RFC-791 和 RFC-817  
  5. List of IP protocol numbers

2019年7月20日 星期六

SIP Timers

Timer適用說明
T1預設 0.5s 17.1.1.1預估的來回時間 (RTT)
T24snon-INVITE 請求
INVITE 回應
最大重送間隔
T45snon-INVITE Client Transaction訊息停留在網路的最大時間
AT1, 2*T1, ...
INV 請求UDP 請求重送間隔
ET1, 2*T1, ... (最大 T2)
non-INV 請求
G17.2.1INVITE 回應的重送間隔
B64*T1Client Transaction等候回應逾時
F
H64*T117.2.1等候 ACK
DUDP: > 32s
TCP/SCTP:0
INVITE Client Transaction等候重送的回應
KUDP: T4
TCP/SCTP:0
Non-INVITE Client Transaction等候重送的回應
IUDP: T4
TCP/SCTP:0
17.2.1等候重送的 ACK
JUDP: 64*T1
TCP/SCTP:0
17.2.2等候重送的非 INVITE 請求
C> 3min16.6 bullet 11Proxy INVITE transaction 逾時

參考:RFC3261 Table of Timer Values

2019年7月19日 星期五

SIP Option Tags

option-tag 是 SIP擴充選項,例如 100rel 等,本身是不超過 20 字元的 alphanum 字串 (在 SIP ABNF 定義 option-tag = token),用在信頭欄位 RequireProxy-RequireSupportedUnsupported 來表示是否支援及採用。

擴充選項的支援及採用

UAC 在 Supported 放可支援的 option-tag、或在 Require 放 UAS 必須支援的 option-tag、或在 Proxy-Require 放 Proxy 必須支援的 option-tag。Proxy 如果不支援 Proxy-Require 的 option-tag,回 420。UAS 如果不支援 Require 的 option-tag,回 420。UAS 需要的 option-tag 沒列在 Supported,回 421。UAS 採用的 option-tag,列在回應的 Require。

UAC
  • 發請求表示可支援的或必須支援的 option-tag。
  • CANCEL 和失敗 INVITE 的 ACK 不用 Require 和 Proxy-Require。
  • 成功 INVITE 的 ACK 只能包含 INVITE Require 和 Proxy-Require 有的 option-tag。
  • UAC 如果收到 420 Bad Extension,應該嘗試再次請求,但這次略過列在回應 Unsupported 的 option-tag。
Proxy UAS
  • 檢查 Require,如有不支援回 420 Bad Extension
  • 需要某 option-tag 才能進行,但 Supported 沒列,回 421 Extension Required
  • 忽略 CANCEL 和失敗 INVITE 的 ACK 的 Require。
  • 成功 INVITE 的 ACK 只能包含 INVITE Require 有的 option-tag。
  • 採用時,回應含 Require 列啟用的 option-tag。
Client 和 Server 間的 negotiation option-tag 的機制不會因都支援而有所延遲。

相關信頭欄位

Proxy-Require

告訴 Proxy 必須支援哪些 option-tag 才能處理請求。proxy 可新增、不能加密。

Proxy-Require  =  "Proxy-Require" HCOLON option-tag *(COMMA option-tag)

範例:
Proxy-Require: foo

Require

必須支援的 option-tag,用在請求、421 Extension Required、或在其它回應表示採用。Proxy 可新增、不能加密。

Require       =  "Require" HCOLON option-tag *(COMMA option-tag)
範例:
Require: 100rel

Supported (k)

在請求是 UAC 告訴 UAS 支援哪些 option-tag。在 SIP OPTIONS 回應是 UAS 告訴 UAC 支援哪些 option-tag。空白表示所有都不支援。在 RFC2543 沒有。INVITE 及其 2xx 回應應該要有。

Supported  =  ( "Supported" / "k" ) HCOLON [option-tag *(COMMA option-tag)]
範例:
Supported: 100rel

Unsupported

用在 420 Bad Extension,告訴 UAC 不支援的 option-tag。

Unsupported  =  "Unsupported" HCOLON option-tag *(COMMA option-tag)
範例:
Unsupported: foo

相關回應碼

420 Bad Extension

不當擴充。

Proxy 不認得 Proxy-Require 或 UAS 不認得 Require 列的某些 option-tag。回應必須含有 Unsupported 表示不支援的 option-tag 有哪些。UAC 應該再次嘗試請求,但這次略過列在回應 Unsupported 的 option-tag。

例如:
      UAC->UAS:   INVITE sip:watson@bell-telephone.com SIP/2.0
                  Require: 100rel

      UAS->UAC:   SIP/2.0 420 Bad Extension
                  Unsupported: 100rel

421 Extension Required

需要擴充。

UAS 需要特定 option-tag 處理請求,但沒列在請求的 Supported。421 回應含 Require 表示需要的 option-tag。罕用。

擴充選項

全部註冊的擴充選項及相關 RFC 參見 IANA

參考

RFC 3261

SIP header Via

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