# yuge_cat1_opencpu
**Repository Path**: yuge-info/yugecat1opencpu
## Basic Information
- **Project Name**: yuge_cat1_opencpu
- **Description**: 域格CAT1模块通用opencpu
- **Primary Language**: C
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 4
- **Created**: 2024-05-28
- **Last Updated**: 2025-10-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**
当前SDK版本:V5.6.0
**
### 结构
1. core: OpenCPU code library,header
2. doc: document for SDK
3. sample: API sample
4. tools: download tool, makefile tool, compiler tool
5. build.bat: build command
6. readme.md: sdk说明
7. ReleaseNotes.txt
### 备注
1. 参照《Gitee仓库订阅指南.pdf》通过邮箱或者微信订阅仓库,SDK如有重大更新需要通过到客户,会通过邮件或者微信及时通知。
2. 关注下《开发注意事项.pdf》中的注意事项。
3. 关注下《ReleaseNotes.txt》中的更新记录。
### 编译
1. 编译链:gcc-arm-none-eabi
a). 下载地址: https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-win32.zip
b). 解压到tools目录下,并修改文件夹名为"gcc-arm-none-eabi"
c). gcc-arm-none-eabi 里面的 "gcc-arm-none-eabi\arm-none-eabi\include\sys\select.h" 需要被 disable 掉,关于 select 相关的 api 见"core\inc\lwip\sockets.h"
文件第11行改成 "#if 0"
//# if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS))
#if 0
2. 根目录下使用以下脚本编译 1.1-os_Task_Management:
a). 编译
> build.bat -c 1605c -t socket -autopkg A09 sample\1.1-os_Task_Management
b). 清空编译
> build.bat -c 1605c -t socket -autopkg A09 sample\1.1-os_Task_Management clean
备注1:"-c",用于指定芯片型号,:1602c、1602s、1605c、1605s、1606l、1606c、1606s
备注2:"-t",用于指定软件功能,:socket、socket_gps、usbnet、usbnet_gps、audio、audio_gps、sms、sms_gps、tiny、tiny_gps、normal
a). socket/socket_gps: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(仅支持http) ;
--该配置是为1602c或1605c使用,socket不支持usbnet,可用空间更多。
b). usbnet/usbnet_gps: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(仅支持http), rndis/ecm ;
--该配置是为1602c或1605c使用,相比较socket多支持usbnet(rndis/ecm)。
c). audio/audio_gps: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), tts, mp3, ppp, rndis/ecm;
--该配置是为1602s或1605s使用,支持aduio相关功能。
d). sms/sms_gps: socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), sms(ims短信也支持), ppp, rndis/ecm;
--该配置是为1602s或1605s使用,支持sms相关功能。
e). tiny/tiny_gps: socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), ppp, rndis/ecm;
--该配置是为1602s或1605s使用,精简固件,释放更多空间供客户使用。
f). normal: socket, gpio, uart, i2c, spi, adc, powerkey, fota, ppp, rndis/ecm, ;
--该配置是为1606l, 1606c(支持volte、sms) 或 1606s(支持volte、sms、tts)使用。
mqtt 和 mbedtls以源码形式开放,存放在core目录下,使用可以参照mqtt对应demo。
备注3:"-autopkg",用于指定自动打包的模块型号:CV9、HV9、HV9G、HV9V2、HE9EA、HE9EU、HE9NA、A09、A19EU、A19EV、A19NA、A19NE、MV9、LV9
备注4:"-xxx_gps" 配置只支持HV9G 和 A09(带GPS的型号),其他模块不支持GPS功能,使用"-xxx_gps"自动打包时会把GPS固件添加到软件包中,每次启动GPS的时候会先加载GPS固件。
备注5:A09(带GPS的型号)量产时会使用较新的ROM1的GPS芯片,出现Flash空间不足时,可以使用不带 "_gps" 的配置,GPS启动时会直接使用GPS芯片内部的ROM1固件。
备注6:HV9G已经量产很久了,继续使用ROM0的GPS芯片,GPS固件比较老旧,建议使用 "_gps" 参数,启动GPS时会先加载最新的固件再启动定位。
### 调试日志打印
1. 调试日志输出到 调试串口
修改makefile,定义`__LOG_UART__`,详见各个demo目录下的makefile
2. 调试日志输出到 CATStudio
修改makefile,定义`__LOG_ACAT__`,详见各个demo目录下的makefile
CATStudio 加载固件对应的 "MDB.txt", 文件路径:tools\aboot\images\prebuilt\160x\cp_160xx
### 固件打包
1. __手动打包__ -- (V5.0.0以后的SDK不建议使用手动打包,自动打包更方便)
--如果编译不带 "-autopkg" 参数的话,需要手动打包
a). 打开tools\aboot\aboot.exe,切换到 Release 界面;
b). 使用编译生成的 "out\app.bin", 替换目录 "tools\aboot\images" 下的app.bin;
c). 根据使用模块选择对应项目后点击Release,即会再aboot根目录下生成对应的固件包。
2. __自动打包__
--如果编译带 "-autopkg" 参数的话,会自动打包
编译时使用 "-autopkg" 指定模块型号,编译结束后会自动打包固件,并生成在out目录下。
### 固件下载
1. 软件下载
a). 打开tools\aboot\aboot.exe,切换到 Download 界面;
b). Download界面选择固件包,点击start,等待烧录下载;
c). 重启模块或者使用指令"AT$MYDOWNLOAD=1"使模块自动进入下载模式,即可通过USB进行下载。
2. 注意事项
a). Download界面不要勾选“Production mode”,勾选后烧录会擦除模块内IMEI、SN、以及射频校准参数。
### 注意事项
1. 详见《开发注意事项.pdf》。
### 用户指南
1. App available memory
a).1602c_socket (4MB RAM + 2MB Flash), usable space: normal(RAM:256KB,ROM:168KB),gps(RAM:256KB,ROM:80KB)
b).1602c_usbnet (4MB RAM + 2MB Flash), usable space: normal(RAM:160KB, ROM:156KB),gps(RAM:160KB, ROM:40KB)
c).1602s_audio (4MB RAM + 4MB Flash), usable space: normal(RAM:512KB,ROM:256KB),gps(RAM:512KB,ROM:180KB)
d).1602s_sms (4MB RAM + 4MB Flash), usable space: normal(RAM:512KB,ROM:400KB),gps(RAM:512KB,ROM:400KB)
e).1602s_tiny (4MB RAM + 4MB Flash), usable space: normal(RAM:1024KB,ROM:600KB),gps(RAM:1024KB,ROM:600KB)
f).1605c_socket (4MB RAM + 2MB Flash), usable space: normal(RAM:256KB,ROM:168KB),gps(RAM:256KB,ROM:132KB)
g).1605c_usbnet (4MB RAM + 2MB Flash), usable space: normal(RAM:160KB, ROM:156KB),gps(RAM:160KB, ROM:80KB)
h).1605s_audio (4MB RAM + 4MB Flash), usable space: normal(RAM:512KB,ROM:260KB),gps(RAM:512KB,ROM:160KB)
i).1605s_sms (4MB RAM + 4MB Flash), usable space: normal(RAM:512KB,ROM:400KB),gps(RAM:512KB,ROM:400KB)
j).1605s_tiny (4MB RAM + 4MB Flash), usable space: normal(RAM:1024KB,ROM:600KB),gps(RAM:1024KB,ROM:600KB)
k).1606l (4MB RAM + 2MB Flash), usable space: normal(RAM:128KB,ROM:120KB)
l).1606c (4MB RAM + 4MB Flash), usable space: normal(RAM:96KB,ROM:220KB)
m).1606s (8MB RAM + 8MB Flash), usable space: normal(RAM:2048KB,ROM:1500KB)
备注1:关于1602、1605、1606各项目软件支持的功能、tts、mp3、rndis/ecm网卡等,详见 tools/aboot/images/prebuilt/readme.txt。
备注2:如果遇到RAM或者FALASH空间稍有不足的情况,可以联系FAE根据具体需求做适当的调整。
2. C LIB
By enable USE_LIBC=yes in Makefile, app can call C standard LIB API except memory management API, malloc()/free() is always available and called from system side.
If enable LIBC, the final binary is bigger.
note: if USE_LIBC=yes is enabled, USE_NANO=yes should enabled together.
3. Startup
main() is the entry of app, it is called at system boot in a separate task, the task name is "sdkapp", priority is 150, stack is 16KB.
After main() return, the "sdkapp" task will exit.
Usually, app should create it's own task.
### API introduce
1. OS API
API define: os_api.h
API sample: sample\1.1-os_Task_Management
API sample: sample\1.2-os_Event_Flags
API sample: sample\1.3-os_Semaphores
API sample: sample\1.4-os_Mutexes
API sample: sample\1.5-os_Message_Queues
API sample: sample\1.6-os_Timers
API sample: sample\1.7-os_sleep_delay
2. File API
API define: file_api.h
API sample: sample\5.7-app_File
3. ATCmd API
API define: atclient.h
API sample: sample\3.1-at_Cmds
4. HW API, include GPIO,UART,i2c,spi,pwm
API define: hal\gpio.h hal\uart.h
API sample: sample\4.x=hal_xxx
5. BSD style socket API
API define: lwip\sockets.h
API sample: sample\5.1-app_Socket