移远EC200A OpenCPU笔记 - Linux系统
模组搭载OpenWrt操作系统
1. 编译SDK,生成固件
2. 烧录固件
git clone -b master_r02 ssh://git@git-master.quectel.com:8407/ec200a/ec200a_linux.git
quectel_ec200a$ source package/quectel/compile/ql_build_config
quectel_ec200a$ buildconfig EC200A_CNAA EC200ACNAAR01A01M1G STD
quectel_ec200a$ build_fw
编译完成后生成的固件存放于 bin/target 目录下




开启adb(AT指令设置成功后 ,重启模块)
AT+QCFG="usbcfg",0x2c7c,0x6005,1,1,1,1,1,1


推送文件到开发板
adb push data_call /data/

1. DNS 配置指令
echo "" > /etc/resolv.conf
echo 'nameserver 127.0.0.1' > /etc/resolv.conf
echo 'nameserver ::1' >> /etc/resolv.conf
2. iptables 防火墙配置指令
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -P FORWARD ACCEPT
使用telent或ssh连接开发板
quectel_ec200a$ source package/quectel/compile/ql_build_config
quectel_ec200a$ buildconfig EC200A_CNAA EC200ACNAAR01A01M1G STD
quectel_ec200a$ make menuconfig
quectel_ec200a$ build_fw

telnet

ssh

/ # which telnetd /usr/sbin/telnetd / # cd /usr/sbin/ /usr/sbin # ./telnetd /usr/sbin # ps

/usr/bin # which dropbear /usr/sbin/dropbear /usr/bin # rm -f /etc/dropbear/dropbear_*_host_key /usr/bin # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 Generating 2048 bit rsa key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiwdaIazWnNasRlALJyDprNzHiWEsglM577vgIxMz1BsjPDxfArPUrACYtPxJH8HuCk94n1EzKySeA0+woOtXZae4fCBu+mTJJjHNTcF9YtPe+llApMPJtg4KogGdOVtiiyxYbtD4yI+Zhozc8XPVFcn/s+529rRsdiRJzpO6akxRVsiIwwsRyY69/0wVOhVUx+E7XeNAbG8HXwQUgXsYjq6bNJGeGXaE9qpf1CcH7pTkczc0zkP8G2ypEHiA2DdRka3KoQwj+jAigU7Hoargc3aUUNMG5c92wxU8hCWmAe9THrIoEuOTBA8J9RjNbbREuu07v5ZWefi6ICqcpfJ9N root@OpenWrt Fingerprint: sha1!! 56:d5:83:b5:36:6c:ae:27:96:36:00:39:3c:35:b4:40:c8:d5:bd:68 /usr/bin # dropbearkey -t ed25519 -f /etc/dropbear/dropbear_ed25519_host_key Generating 256 bit ed25519 key, this may take a while... Public key portion is: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDbq4n4e1UUcy+bm5mHYl0TaxcgqdzkbV1inv22M1c2A root@OpenWrt Fingerprint: sha1!! 35:e1:54:9b:5b:55:ff:b0:83:c8:ce:2d:c4:bf:71:5b:9c:f8:d0:8e /usr/bin # chmod 600 /etc/dropbear/dropbear_*_host_key /usr/bin # ls -l /etc/dropbear/ -rw------- 1 root root 83 Jan 1 08:22 dropbear_ed25519_host_key -rw------- 1 root root 805 Jan 1 08:22 dropbear_rsa_host_key /usr/bin # file /etc/dropbear/dropbear_*_host_key /bin/sh: file: not found /usr/bin # /usr/sbin/dropbear -V Dropbear v2020.81 /usr/bin # /usr/sbin/dropbear -F -p 22

编译
#include <stdio.h> int main() { printf("Hello, World!\n"); return 0; }
编译1 sudo apt-get install gcc-arm-linux-gnueabihf arm-linux-gnueabihf-gcc --version arm-linux-gnueabihf-gcc -static -o hello1 hello.c 编译2 export STAGING_DIR=$TOPDIR/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_musl_eabi /home/conquerw/projects/quectel_asr_linux/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-8.4.0_musl_eabi/bin/arm-openwrt-linux-gcc -o hello2 hello.c

#include <ql_sim.h> #include <stdio.h> int main() { int ret = ql_sim_init(); printf("ql_sim_init returned: %d\n", ret); return 0; }
buildsource.sh (直接编译) #!/bin/bash # 设置环境变量 export TOPDIR=/home/conquerw/projects/quectel_asr_linux && export STAGING_DIR=$TOPDIR/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_musl_eabi && CC=$TOPDIR/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-8.4.0_musl_eabi/bin/arm-openwrt-linux-gcc $CC -o hello test.c \ -I$TOPDIR/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ql-ol-extsdk/include \ -L$TOPDIR/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ql-ol-extsdk/lib \ -L$TOPDIR/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/lib \ -L$TOPDIR/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/lib \ -L$TOPDIR/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-mmp/lib \ \ -lql_common_api \ -lssl -lcrypto \ -lcurl \ -lnghttp2 -lwolfssl \ -lubus -lubox -lblobmsg_json -ljson-c \ -luci \ -lrt -lpthread -lm
# 设置环境变量 export TOPDIR=/home/conquerw/projects/quectel_asr_linux # 确认函数是否存在于库中 nm $TOPDIR/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ql-ol-extsdk/lib/libql_common_api.so | grep ql_sim_init
编译参考例子:
/home/conquerw/projects/quectel_asr_linux/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ql-ol-extsdk/ql-api-test
/home/conquerw/projects/quectel_asr_linux/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ql-ol-extsdk/helloworld


模组联网流程
1. 注网(模组内置的程序自动实现);
2. 数据拨号datacall(需要自己代码调用实现,有的卡有APN,拨号的时候需要apn、用户名、密码、鉴权;有的卡没有APN,会使用运营商默认的apn去拨号获取ip地址)

网络连接阶段: ql_nw_init() - 初始化网络服务 ql_nw_set_config() - 配置网络参数(网络模式和漫游偏好) ql_nw_get_reg_status() - 检查网络注册状态,等待注册成功 ql_wan_init() - 初始化WAN服务 ql_wan_set_autoconnect() - 设置自动连接参数 ql_wan_start_ex() - 启动WAN连接 ql_dev_init() - 初始化设备模块 监控与配置阶段: ql_nw_get_operator_name() - 获取运营商信息 ql_nw_get_selection() - 获取网络选择信息 ql_nw_get_signal_strength() - 获取信号强度信息 ql_nw_get_reg_status() - 检查网络注册状态 ql_get_data_call_info() - 获取数据呼叫信息 net_init() - 配置系统网络参数(包括clear_dns(), add_dns(), clear_iptables(), add_iptables(), clear_route(), add_route()) 异常处理: 当网络注册失败超过阈值时,调用ql_dev_set_modem_fun()重启调制解调器功能 资源释放(程序退出时): ql_dev_release() - 释放设备模块资源 ql_wan_release() - 释放WAN服务资源 ql_nw_release() - 释放网络服务资源 ql_sim_release() - 释放SIM卡模块资源



外置nand flash
Linux对NAND 闪存挂载
将"原始闪存空间"(MTD)格式化为"有管理功能的存储空间"(UBI) 然后在这个管理空间上创建"文件系统"(UBIFS) 最后将这个文件系统"连接到"系统的目录树上(挂载)
模组的USB接到PC端,可以使用AT串口进行通信



serial_quectel 进程是监听主串口,serial_quectel 进程打开socket接口和主串口设备,当监听到AT指令时,serial_quectel 进程把AT指令发送到socket接口,进而传递给atcmdsrv进程处理。atcmdsrv进程处理完AT指令,发出的response被serial_quectel 进程接收并输出到主串口设备
ASR 芯片平台
ASR 芯片平台通常指的是由翱捷科技(ASR Microelectronics) 设计和生产的芯片系列。根据搜索结果,移远通信在其模组产品中采用了翱捷科技(ASR)的芯片平台,例如 RG255AA 系列 5G RedCap 模组就基于 ASR1903 芯片
移远通信作为模组厂商,会向翱捷科技(ASR)这类芯片设计公司采购芯片,然后基于这些芯片进行模组的设计、集成和封装,并辅以自家的软件、算法和服务,最终形成面向各类物联网应用的通信模组或解决方案

浙公网安备 33010602011771号