發布日期:2022-05-25 點擊率:52
net/iotisan/
這個目錄包含了編譯一個多通道基站庫所需的源碼。編譯之后就會生成固定鏈接的libloragw.a。
lora_gatewaylibloragw st
目錄下還有不同子模塊的測試程序。
這部分也就是LoRa集中器的HAL層(LoRa concentrator Hardware Abstraction Layer),它是個C庫,讓大家使用少量的C函數就可以對LoRa集中器芯片進行配置硬件,以及收發數據包。
LoRa集中器是數字化的多信道多數據包標準的射頻芯片,使用LoRa或者FSK模式進行收發數據。
這個庫是由6(8)個模塊組成:
loragw_hal
主模塊,包含高等級函數來配置和使用集中器
loragw_reg
這個模塊用來操作集中器的寄存器
loragw_spi
通過SPI接口來操作集中器的寄存器
loragw_aux
包含一個主機需要的wait_ms函數,用于指定ms的延時
loragw_gps
通過基準時基來同步集中器內部計數,例如例程中的GPS授時。
loragw_radio
配置 SX125x 和 SX127x。
loragw_fpga (only for SX1301AP2 ref design)
SX1301AP2參考設計才需要,用于操作FPGA的寄存器,以及配置FPGA功能。
loragw_lbt (only for SX1301AP2 ref design)
SX1301AP2參考設計才需要,用于配置和使用LBT功能。
這個庫按照ANSI C99進行編寫。loragw_aux模塊中的ms精確延時含有POSIX格式函數,嵌入式平臺可以用硬件定時器進行重寫。
library.cfg 中 DEBUG_xxx 如果置為1,則會用 fprintf 輸出對應的調試信息。
對于交叉編譯,需要設置 Makefile 中的 ARCH 和 CROSS_COMPILE 變量,或者在 shell 環境中,使用正確的工具鏈名字和路徑。例如:
export PATH=/home/foo/rpi-toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-
libloragw目錄下的Makefile會解析 library.cfg 文件,產生一個config.h的C頭文件,包含 #define 選項。那些選項會使能或禁用loragw_xxx.h 文件和 *.c 原文件中的代碼。
library.cfg 也用來直接選擇動態鏈接庫。
如果想在其他系統使用編譯后的庫,你需要導出這些文件:
libloragw/library.cfg -> 根配置文件
libloragw/libloragw.a -> 靜態庫
libloragw/readme.md -> license要求
libloragw/inc/config.h -> 從 library.cfg 衍生出的C配置標志
libloragw/inc/loragw_*.h -> 你需要用到的頭文件 (例如. _hal and _gps)
在這個庫鏈接到你的應用之后,只有 license 文件要求在程序文件中拷貝和保留。
loragw_reg 和 loragw_hal 是針對Semtech硬件編寫的特殊版本:
Semtech SX1301 芯片
Semtech SX1257 or SX1255 收發器
如果硬件版本和庫版本不匹配的話,這個庫將無法使用。你可以用 test_loragw_reg 來測試軟硬件是否匹配。
loragw_spi 的SPI函數適合平臺相關的,如果你用別的SPI接口可能需要重寫這個函數:
SPI master matched to the Linux SPI device driver (provided)
SPI over USB using FTDI components (not provided)
native SPI using a microcontroller peripheral (not provided)
你可以用 test_loragw_spi 來測試SPI通信。
為了使用庫中的GPS模塊,主機必須要通過串口連接GPS接收器,串口連接必須以“tty”設備出現在 /dev/ 目錄,啟用這個程序的用戶必須用讀寫這個設備的權限。使用 chmod a+rw 來允許所有用戶能操作指定的tty設備,或者使用sudo來運行你的程序(例如. sudo ./test_loragw_gps)。
當前版本,庫只從串口讀取數據,在GPS接收器上電后會收到他們發出NMEA幀 以及 u-blox 模塊私有的 UBX 消息。
GPS接收器必須在發出PPS脈沖后發出UBX消息,讓內部集中器的時間戳可以用GPS時基校準。如果GPS接收器發出了GGA NMEA語句,gateway則可以進行3D定位。
對一個典型應用,你需要這么做:
源碼中包含 loragw_hal.h
編譯時鏈接 libloragw.a 靜態庫文件
由于 loragw_aux 的依賴關系,需要鏈接 librt 庫
如果應用需要直接訪問集中器配置寄存器的話(例如做些高級配置),你還需要這樣做:
源碼中包含 loragw_reg.h
要在你的應用中使用 HAL,需要遵守如下規則:
在射頻啟動之前需要配置好 radios path 和 IF+modem path
只有在調用了 start 函數之后,配置才會傳送給硬件
只有在 radio 使能,同時IF+modem 使能,以及集中器啟動后,才能接收數據包。
只有在 radio 使能,以及集中器啟動后,才能發送數據包。
改變配置之前,必須停止集中器。
一個對HAL的典型應用流程圖如下:
loop {}
/! 注意,lgw_send 在LoRa集中器仍然發包時,或者即使在準備開始發包時,是非阻塞立即返回。當有數據包在發送時,將無法收到任何數據。
你的應用需要考慮發包的時長,或者在嘗試發包前檢查下狀態(使用 lgw_status)。
當前一包未完成時立即發一包,會導致前一包無法發送,或者發送部分(會導致接收端出現CRC錯誤)。
為了調試程序,可以激活調試信息后( 在 library.cfg 中設置 DEBUG_HAL=1 ),編譯 loragw_hal 函數。這樣就會輸出很多細節信息,包括stderr的錯誤細節信息。
工程中的這些程序提供了一些示例,應該如何使用HAL庫。幫助系統構建者單獨測試不同部分。
This software is used to set up a LoRa concentrator using a JSON configuration file and then record all the packets received in a log file, indefinitely, until the user stops the application.
這個軟件用來讓LoRa集中器使用JSON配置文件,以及記錄所有的包于一個log文件,除非用戶停止這個應用。
This software is used to check the reliability of the link between the host platform (on which the program is run) and the LoRa concentrator register file that is the interface through which all interaction with the LoRa concentrator happens.
這個軟件用來檢測主CPU與LoRa協調器寄存器文件的連接的穩定性。
This software is used to send test packets with a LoRa concentrator. The packets contain little information, on no protocol (ie. MAC address) information but can be used to assess the functionality of a gateway downlink using other gateways as receivers.
這個軟件用來做發包測試。包里沒有協議信息,但可以用來檢測基站下行功能,使用另一臺基站來做接收。
This software is used to set LoRa concentrator in Tx continuous mode, for spectral measurement.
這個軟件用來設置LoRa集中器為持續TX模式,用于頻譜測試。
This software is used to scan the spectral band in background, where the LoRa
這個軟件用來掃描基站工作環境的頻段。
This software is used to test "Listen-Before-Talk" channels timestamps.
這個軟件用來測試“Listen-Before-Talk”的信道時間戳。
This script must be launched on IoT Start Kit platform to reset concentrator chip through GPIO, before starting any application using the concentrator.
這個腳本僅在 IoT Start Kit 平臺上運行,用于在啟動任何應用前,通過GPIO復位集中器芯片。
下一篇: PLC、DCS、FCS三大控
上一篇: 物聯網技術標準學習之