移远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 目录下

image

 

image

image

d4b34e24fe06b8abd23a2188024b96b4

 开启adb(AT指令设置成功后 ,重启模块

AT+QCFG="usbcfg",0x2c7c,0x6005,1,1,1,1,1,1

image

image

推送文件到开发板

adb push data_call /data/

image

 

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

image

telnet

image

 ssh

image

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

image

 

/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

image

编译

#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 

image

#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

image

image

 

 

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

 

deepseek_mermaid_20250904_024e3f

网络连接阶段:
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卡模块资源

image

image

image

 

外置nand flash

Linux对NAND 闪存挂载

"原始闪存空间"(MTD)格式化为"有管理功能的存储空间"(UBI)

然后在这个管理空间上创建"文件系统"(UBIFS)

最后将这个文件系统"连接到"系统的目录树上(挂载)

 

 

模组的USB接到PC端,可以使用AT串口进行通信

image

image

 

image

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)这类芯片设计公司采购芯片,然后基于这些芯片进行模组的设计、集成和封装,并辅以自家的软件、算法和服务,最终形成面向各类物联网应用的通信模组或解决方案

posted @ 2025-09-04 09:38  CHHC  阅读(128)  评论(0)    收藏  举报