概述
本文介绍基于UC8088芯片下GPRS的软件架构及使用方式,以帮助用户快速进行二次开发。
代码目录结构
关于代码树中各个目录存放的源代码的相关内容简介如下:
一级目录 | 二级目录 | 三级目录 | 描述 |
---|---|---|---|
arch | asic | link | 链接文件 |
start_up | 启动文件 | ||
driver | inc | _ | 驱动头文件 |
src | _ | 驱动源文件 | |
OS | freertos | config | freertos配置文件 |
freertos_iot | IOT相关代码 | ||
freertos_tcp | TCP协议栈相关代码 | ||
src | freertos内核源码 | ||
platform | include | _ | 平台相关头文件 |
src | _ | 平台相关源文件 | |
PS | app | eat | eat头文件 |
gps | GPS应用头文件 | ||
trx | GPRS/GPS切换应用头文件 | ||
cce | _ | 公共部分cce头文件 | |
gprs | commen | 静态数据应用头文件 | |
sndcp | SNDCP应用头文件 | ||
lib | lib_gprs | GPRS静态库 | |
lib_gps | GPS静态库 | ||
solution | asic | Debug | 编译后中间文件生成目录(包含bin、elf文件) |
src | 应用代码 | ||
worksapce | _ | 工作空间文件 | |
test_demo | _ | EAT二次开发参考demo |
代码入口
gprs_customer 入口在工程对应的 /solution/asic/main.c 中,基本流程如下:
__reset1 int main(void)
{
lpm_flag_check();//LPM标识检测
static_inform_init();//静态数据的初始化
prvSystemHeapInit(get_current_mode());//根据指定模式进行heap初始化
#ifdef _ON_WATCH_
__SET_WD_FEED_TIME_MS__(WATCHDOG_TIME);//设置硬件看门狗的喂狗时间
__ENABLE_WD__();//启动硬件看门狗
#endif
#ifdef _SOFTDOG_
__ENABLE_SD__();//启动软件看门狗
#endif
if(0 == get_first_start_flag())//设备是否为第一次启动(GPRS/GNSS切换时会采取软复位)
rtc_init(UC_RTC); //RTC初始化
#ifdef EAT_TEST
app_startup(gps_pvt_callback); //初始化GPRS协议栈或启动GPS,gps_pvt_callback为GPS回调函数,它用为GPS二次开发使用
eat_test_app();//EAT例程DEMO,二次开发可作参考
#else
app_startup(NULL);//初始化GPRS协议栈或启动GPS
#endif
#ifdef _ON_WATCH_
__FEED_WD__(); //硬件看门狗喂狗
#endif
#ifdef _SOFTDOG_
__FEED_SD__(); //软件看门狗喂狗
#endif
vTaskStartScheduler();//FreeRTOS任务调度开启
}
二次开发说明
在完成环境搭建之后,可直接在UCCHIP IDE中打开workspace工作空间文件(文件位置:/solution/workspace/uc8088_freeRTOS.workspace),打开后即可看到GPRS整个工程代码。gprs_customer 入口在工程对应的 /solution/asic/main.c 中。若您想编译GPRS模组版本,则无需添加任何东西,直接编译即可,生成的bin文件位于:solution/asic/Debug/main.bin。若您想在GPRS工程中做其它应用级的开发,您可参照main函数中的eat_test_app()接口函数,里面包含了关于TCP、HTTP、MQTT、GPRS/GNSS切换、短信发送等应用的相关例程,可通过打开相关的宏进行控制。