展锐的udx710平台,是64位的arm,跑的linux,所以是可以进行二次开发的,采用模组厂提供的toolchain,可以编译自己的程序。
以第三方开源程序n2n为例(因为客户需要这个,所以就拿这个做例子了)
Toolchain的配置:
toolchain文件为:unisoc-initgc-glibc-x86_64-unisoc-console-image-aarch64-toolchain-udx710-module+unisoc-initgc-1.0+20201024+userdebug+native.sh
这个是原厂提供的,直接执行就好,安装到/opt下面
/opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots
编译器路径为:/opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/x86_64-unisocsdk-linux/usr/bin/aarch64-unisoc-linux
头文件路径:/opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/aarch64-unisoc-linux/usr/include
link库路径为:/opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/aarch64-unisoc-linux/usr/lib
这几个路径后面在配置的时候需要用到。
另外,需要模组打开adb权限,能够adb push程序。
下载n2n的源码,GitHub - ntop/n2n: Peer-to-peer VPN
n2n是采用CMake进行编译的,需要修改CMakeList.txt
配置相关toolchain部分的参数
mkdir build
cd build
cmake ..
make
编译成功后,生成n2n相关程序
这里看到,程序已经编译完成了。
接下来需要把程序push到模组里面,这需要打开adb功能
AT+QCFG="usbcfg",0x2c7c,0x0900,1,1,1,1,1,1,1
重启电脑后,就可以adb shell进去模组了。
模组的/mnt/下是可写的分区,可以直接push到这里进行调试,如果想放到/usr/bin,/usr/sbin下,那需要把文件系统重新mount为可读写。
mount -o remount,rw /
然后就可以随便push到任意路径了。
二次开发给模组带来了很多的可能,1.3G的双核CPU,性能远比像MTK7621这样的芯片性能强,转发性能可以跑满千兆,不像7621跑usb网卡只能到400Mbps左右,其实就是个软路由模组了。
其实其它厂家的展锐模组都是可以这么做的,只是看原厂是否给你开放权限,toolchain都是一样的,编译好一个,其它模组其实都能用,但大部分厂家的文件系统是不开放的,移远的也需要打开adb的权限后,才能够push文件,而且,展锐的flash和mempry都比较紧张,也不建议放太多程序,而且,一旦出现问题,原厂也不会对二次开发的程序进行支持,因此如果要在生产环境下用,还是需要有一定的研发能力。