6pack 協議¶
這是 6pack-mini-HOWTO,由以下人員編寫:
Andreas Könsgen DG3KQ
- 網際網路:
- AMPR-net:
- AX.25:
上次更新:1998 年 4 月 7 日
1. 什麼是 6pack,與 KISS 相比有什麼優勢?¶
6pack 是一種透過序列線路在 PC 和 TNC 之間進行資料交換的傳輸協議。它可以作為 KISS 的替代方案使用。
6pack 有兩個主要優點
PC 可以完全控制無線通道。PC 和 TNC 之間交換特殊的控制資料,以便 PC 隨時知道 TNC 是否正在接收資料、是否發生了 TNC 緩衝區欠載或溢位、PTT 是否已設定等等。此控制資料以比普通資料更高的優先順序進行處理,因此可以隨時中斷資料流以發出重要事件。這有助於改進通道訪問和定時演算法,因為所有內容都在 PC 中計算。甚至可以嘗試與已知的 CSMA 和 DAMA 通道訪問方法完全不同的方法。這種即時控制對於連線在 PC 之間並透過菊花鏈連線的多個 TNC 尤其重要(但是,Linux 6pack 驅動程式尚不支援此功能)。
透過序列線路傳輸的每個資料包都提供校驗和,因此可以輕鬆檢測到由於序列線路問題而導致的錯誤。損壞的接收資料包不會傳遞到 AX.25 層。TNC 從 PC 接收的損壞資料包不會被傳輸。
有關 6pack 的更多詳細資訊,請參見 AX.25 實用程式包的 doc 目錄中的檔案 6pack.ps。
2. 誰開發了 6pack 協議?¶
6pack 協議由 Ekki Plicht DF4OR、Henning Rech DF9IC 和 Gunter Jost DK7WJ 開發。Gunter Jost 和 Matthias Welwarsky DG2FEF 編寫的 6pack 驅動程式隨 PC 版本的 FlexNet 一起提供。他們還為 TNC 編寫了韌體來執行 6pack 協議(請參見下面的第 4 節)。
3. 在哪裡可以獲得適用於 Linux 的最新版本 6pack?¶
目前,可以透過匿名 ftp 從 db0bm.automation.fh-aachen.de 獲取 6pack 相關內容。在目錄 /incoming/dg3kq 中,有一個名為 6pack.tgz 的檔案。
4. 準備 TNC 以進行 6pack 操作¶
要使用 6pack,需要 TNC 的特殊韌體。新購買的 TNC 的 EPROM 不包含 6pack,因此您必須自己程式設計 EPROM。用於 6pack EPROM 的映像檔案應可在任何可以找到 PC/FlexNet 的資料包無線電盒上找到。該檔案的名稱是 6pack.bin。此檔案受版權保護並由 FlexNet 團隊維護。它可以根據 PC/FlexNet 附帶的許可條款使用。請不要詢問我有關此檔案的內部結構,因為我對此一無所知。我使用 6pack 協議的文字描述來程式設計 Linux 驅動程式。
TNC 包含一個 64kByte 的 EPROM,其下半部分用於韌體/KISS。上半部分為空,或者有時使用名為 TAPR 的軟體進行程式設計。在後一種情況下,TNC 配備了一個 DIP 開關,因此您可以輕鬆地在兩個系統之間切換。程式設計新的 EPROM 時,其中一個系統被 6pack 替換。替換 TAPR 很有用,因為現在很少使用此軟體。如果您的 TNC 沒有配備上述開關,則您可以自己安裝一個開關,該開關可以在 EPROM 的最高地址引腳的 HIGH 和 LOW 電平之間切換。插入新的 EPROM 並切換到 6pack 後,對 TNC 施加電源進行首次測試。如果韌體正確初始化 TNC,則連線和狀態 LED 將亮起約一秒鐘。
5. 構建和安裝 6pack 驅動程式¶
該驅動程式已使用核心版本 2.1.90 進行了測試。與舊核心一起使用可能會導致編譯錯誤,因為核心函式的介面已在 2.1.8x 核心中更改。
如何啟用 6pack 支援:¶
在 Linux 核心配置程式中,選擇程式碼成熟度級別選項選單並啟用對開發驅動程式的提示。
選擇業餘無線電支援選單並啟用序列埠 6pack 驅動程式。
編譯並安裝核心和模組。
要使用該驅動程式,必須修改 AX.25 實用程式提供的 kissattach 程式。
cd 到包含 kissattach 原始檔的目錄。編輯 kissattach.c 檔案。在頂部,插入以下行
#ifndef N_6PACK #define N_6PACK (N_AX25+1) #endif
然後找到該行
int disc = N_AX25;
並將 N_AX25 替換為 N_6PACK。
重新編譯 kissattach。將其重新命名為 spattach 以避免混淆。
安裝驅動程式:¶
執行 insmod 6pack。檢視您的 /var/log/messages 檔案,以檢查該模組是否已列印其初始化訊息。
像啟動 KISS 埠時啟動 kissattach 一樣執行 spattach。檢查核心是否列印訊息“6pack:找到 TNC”。
從這裡開始,一切都應該像設定 KISS 埠一樣工作。唯一的區別是,代表 6pack 埠的網路裝置稱為 sp 而不是 sl 或 ax。因此,sp0 將是第一個 6pack 埠。
儘管該驅動程式已在各種平臺上進行了測試,但我仍將其宣告為 ALPHA。小心!在 insmod 6pack 模組和 spattach 之前,請同步您的磁碟。注意您的計算機是否表現異常。閱讀本檔案的第 6 節,瞭解已知問題。
請注意,TNC 的連線和狀態 LED 的控制方式與 TNC 與 PC/FlexNet 一起使用時的控制方式不同。使用 FlexNet 時,如果有連線,則連線 LED 亮起;如果 PC 的 AX.25 引擎的緩衝區中有必須傳輸的資料,則狀態 LED 亮起。在 Linux 下,6pack 層位於 AX.25 層之外,因此 6pack 驅動程式不知道任何尚未傳輸的連線或資料。因此,LED 的控制方式與 KISS 模式相同:如果透過序列線路將資料從 PC 傳輸到 TNC,則連線 LED 亮起;如果將資料傳送到 PC,則狀態 LED 亮起。
6. 已知問題¶
當使用 2.0.3x 核心測試驅動程式並在無線通道上以 9600 Baud 或更高的資料速率執行時,驅動程式有時可能會在某些系統上列印訊息“6pack:錯誤校驗和”,這是由於如果其他站點發送兩個或多個後續資料包,則會發生資料丟失。有人告訴我這是由於 2.0.3x 核心的序列驅動程式存在問題。我尚不清楚 2.1.x 核心是否仍然存在該問題,因為我聽說序列驅動程式程式碼已在 2.1.x 中更改。
當使用 ifconfig 關閉 sp 介面時,如果仍然存在 AX.25 連線,並且該連線正在執行 IP 連線,即使該 IP 連線已關閉,核心也會崩潰。當仍有裸 AX.25 連線執行時,不會發生該問題。我不知道這是 6pack 驅動程式的問題還是核心中的其他問題。
該驅動程式已作為模組進行了測試,尚未作為核心內建驅動程式進行測試。
6pack 協議支援在令牌環中菊花連結 TNC,該令牌環連線到 PC 的一個序列埠。此功能尚未實現,並且至少目前我無法做到這一點,因為我沒有機會構建 TNC 菊花鏈並進行測試。
原始碼中的某些註釋不準確。它們是從 SLIP/KISS 驅動程式中留下的,6pack 驅動程式是從 SLIP/KISS 驅動程式派生的。我尚未修改或刪除它們 - 抱歉!程式碼本身需要一些清理和最佳化。這將在以後的版本中完成。
如果您遇到錯誤,或者您對該驅動程式有任何問題或建議,請隨時透過本檔案開頭提供的地址給我傳送郵件。
玩得開心!
Andreas