Quectel QuecOpen Development Guide

Quectel QuecOpen Development Guide

QuecOpen Introduction

QuecOpen is originally meant for OpenLinux modules of Quectel: EC2x, AG35 modules where end-user can program their own application run along with the Quectel processes. I would like to share my thought and development guide with QuecOpen SDK.

Qualcomm MDM 9x07 Block Diagram

There are some thing you need to know about this QuecOpen approach:

  • Linux kernel is 3.18 which is very old LTS kernel. If your application requests to intergrate a new brand new peripheral then there could be troublesome to let the kernel device driver can be backward compatible with kernel 3.18
  • Free flash memory is about 20MB for rootfs and 100MB for userdata partition. So those devices are not for application which require large file system or replace completely your external MPU
  • Total RAM 100MB for everything, so pls take this into your consideration
  • Limited application notes from manufacture: due to complexity and Qualcomm agreement and lack of Linux RD resource, available application notes are limited and does not really describe

QuecOpen SDK

QuecOpen SDK is not published, there are some internal processes to approve QuecOpen SDK for specific customers who have RD resource to build their own application based on QuecOpen modules. Thus, you need to talk to your local FAE or sales to discuss about this.

  • Root filesystem is generated one, so you do not need to create the filesystem again, however it will limit your project flexibility if you want to intergrate more packages, ... and also want to maintain
  • Linux kernel 3.18 is provided with sources and closed libs

How SDK is looked like:

$ tree -L 2
.
|-- Makefile
|-- ql-ol-crosstool
|   |-- autogen-env.sh
|   |-- ql-ol-crosstool-env-init
|   |-- relocate_sdk.py
|   |-- scripts
|   |-- site-config-armv7a-vfp-neon-oe-linux-gnueabi
|   |-- sysroots
|   `-- version-armv7a-vfp-neon-oe-linux-gnueabi
|-- ql-ol-extsdk
|   |-- LICENSE.md
|   |-- example
|   |-- include
|   |-- lib
|   `-- tools
|-- ql-ol-kernel
|   |-- AndroidKernel.mk
|   |-- COPYING
|   |-- CREDITS
|   |-- Documentation
|   |-- Kbuild
|   |-- Kconfig
|   |-- MAINTAINERS
|   |-- Makefile
|   |-- README
|   |-- REPORTING-BUGS
|   |-- android
|   |-- arch
|   |-- block
|   |-- crypto
|   |-- drivers
|   |-- firmware
|   |-- fs
|   |-- include
|   |-- init
|   |-- ipc
|   |-- kernel
|   |-- lib
|   |-- linaro
|   |-- mm
|   |-- net
|   |-- qconfig
|   |-- samples
|   |-- scripts
|   |-- security
|   |-- sound
|   |-- tools
|   |-- usr
|   `-- virt
|-- ql-ol-rootfs
|   |-- WEBSERVER
|   |-- bin
|   |-- boot
|   |-- build.prop
|   |-- cache
|   |-- data
|   |-- dev
|   |-- etc
|   |-- firmware
|   |-- home
|   |-- lib
|   |-- linuxrc -> /bin/busybox
|   |-- media
|   |-- mnt
|   |-- persist
|   |-- proc
|   |-- run
|   |-- sbin
|   |-- sdcard -> /media/card
|   |-- share
|   |-- sys
|   |-- system
|   |-- target
|   |-- tmp
|   |-- usr
|   |-- usrdata
|   |-- var
|   `-- www
|-- ql-ol-rootfs.tar.gz
`-- ql-ol-usrdata
    `-- Readme

59 directories, 22 files
EC21EFAR06A01M4G_OCPU_01.001.01 SDK

Supported Modules

  • EC2x Series (EC21, EC25) variants: -E, -A, -J, -AU, -AUT, -KL, -EU
  • Automotive module: AG35

QuecOpen Development with Docker

Prepare

  1. Install docker for your machine
  2. For MacOS, pls config NFS share for nfsd with macos_setup_nfs.sh script, so you could take advantage of read/write access compare to Mac FS driver.

Usage for Linux users

  1. Pull the docker image
docker pull bacnh85/quectel-quecopen
  1. Create docker container that point to your working directory
docker run -d --name quectel-quecopen \
 -e PUID=`id -u` -e PGID=`id -g` -v 
 "$(pwd)":/opt bacnh85/quectel-quecopen
  1. Start the container shell to start build your application, the rootfs, kernel, ...
docker exec -it -u `id -u` quectel-quecopen /bin/bash

Docker Compose

Sample docker-compose.yml is provided for more convenience.

version: '3.4'
services:
  quectel-quecopen-dev:
    image: bacnh85/quectel-quecopen
    container_name: quectel-quecopen
    environment:
      - PUID=501
      - PGID=20
    volumes:
      - "./:/opt"
    tty: true

Then, power up the container:

docker-compose up -d

Login to the contailer shell:

docker exec -it -u `id -u` quectel-quecopen /bin/bash

Usage for macOS users

Due to OSX driver performance is not that good, a good approach is using NFS share. Thus, docker-compose file is more convience to start with.

Before doing it, you need to config nfsd to share your current working directory to docker container, pls refer to macos_setup_nfs.sh

docker-compose -f docker-compose_macos.yml up -d

Then, login to the container to start:

docker exec -it -u `id -u` quectel-quecopen /bin/bash

QuecOpen Example

There are more example at QuecOpen Example repo.

Good luck!