# icoe_firmware_dynamic_loading
**Repository Path**: liphen/icoe_firmware_dynamic_loading
## Basic Information
- **Project Name**: icoe_firmware_dynamic_loading
- **Description**: icoe_firmware_dynamic_loading
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 3
- **Created**: 2024-06-27
- **Last Updated**: 2026-02-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# icoe_firmware_dynamic_loading
#### 介绍
应用适用于PC模拟主控与 CCxx EVK交互,实现动态加载或OTA,NMEA解释,离线星历提取等功能
#### 软件架构
软件架构说明
|--demo 动态加载程序
|--Resource 存放升级固件,星历文件
|--Source FreeRTOS 源码
|--tool mingw编译工具链
#### 安装教程
1. 把 tool下MinGW 放到C盘根目录 (如果已有,建议替换)
2. 设置环境变量:C:\MinGW\bin ;C:\MinGW\msys\1.0\bin
3. 验证环境,在CMD中输入gcc -v ,有版本输出即可
#### 使用说明
1. 在CMD中进入到代码目录
2. make
3. 编译完成后,生成build的文件夹
4. 在Resource 下放入相应的升级固件和星历文件,并修改配置文件
5. 运行.\build\RTOSDemo.exe
#### 适配说明
1. 配置文件:demo\adaptation\icoe_adap.h
2. 配置定义
```
//电脑端口号,在PC环境下可使用
#define ICOE_COM_PORT (118)
//正常运行的串口波特率
#define APP_RUNING_BAUDRATE (115200)
//下载的波特率
#define FW_DOWNLOAD_BAUDRATE (2000000)
//芯片Debug 的波特率
#define APP_DEBUG_BAUDRATE (460800)
//打印函数
#define ICOE_DEBUG_LOG printf
/*是否是ROM版本芯片 */
#define ICOE_ROM_ONLY
/*是否支持APFlash 功能,只支持ROM芯片*/
#ifdef ICOE_ROM_ONLY
#define _ICOE_APFLASH_
#endif
/*是否打开Debug调试Log*/
// #define ICOE_SUPPORT_DEBUG
/*保存Log到PC ,只有PC可用*/
// #define ICOE_SAVE_LOG
/*是否支持文件系统*/
// #define ICOE_SUPPORT_FILE_FS
/*是否支持离线星历功能 */
#define SUPPORT_RNX_PGLITE
#define ICOE_PGLITE_NDAY
#define ICOE_PGLITE_KEY
/*支持多系统单文件*/
#define RNX_EPH_FILE_ALLONE
//定义Bootloader的flash 地址或者路径
#define ICOE_UPGRADE_FILE_BOOTLOADER_ADDR (0)
#define ICOE_UPGRADE_FILE_BOOTLOADER_SIZE (0)
//定义firmware的flash 地址或者路径
#define ICOE_UPGRADE_FILE_FIREWARE_ADDR (0)
#define ICOE_UPGRADE_FILE_FIREWARE_SIZE (0)
//定义apFlash 的flash 地址或者路径
#define ICOE_PGL_FILE_APFLASH_PATH
//定义 单系统离线星历文件的路径
#define ICOE_PGL_FILE_GPS_PATH (0)
#define ICOE_PGL_FILE_GPS_SIZE (0)
/*bds eph*/
#define ICOE_PGL_FILE_BDS_PATH (0)
#define ICOE_PGL_FILE_BDS_SIZE (0)
/*gal eph*/
#define ICOE_PGL_FILE_GAL_PATH (0)
#define ICOE_PGL_FILE_GAL_SIZE (0)
/*glo eph*/
#define ICOE_PGL_FILE_GLO_PATH (0)
#define ICOE_PGL_FILE_GLO_SIZE (0)
/*qzs eph*/
#define ICOE_PGL_FILE_QZS_PATH (0)
#define ICOE_PGL_FILE_QZS_SIZE (0)
//定义多系统单文件的离线星历文件
#define ICOE_PGL_FILE_ALLONE_PATH (0)
#define ICOE_PGL_FILE_ALLONE_SIZE (0)
3.适配文件:demo\adaptation\icoe_adap.c
适配函数:
void icoe_adap_delay_ms(unsigned int ms);
void icoe_adap_set_reset_or_power_low(void);
void icoe_adap_set_reset_or_power_high(void);
int icoe_adap_uart_set_baudrate(unsigned int rate);
int icoe_adap_uart_send_muti(unsigned char *str,unsigned int len);
int icoe_adap_uart_get_string(unsigned char *str,unsigned int len);
char icoe_adap_uart_get_char(unsigned int ms);
int icoe_adap_uart_send_char(unsigned char chr);
char *icoe_adap_mem_malloc(unsigned int size);
void icoe_adap_mem_free(char *addr);
int icoe_adap_read_flash(unsigned char *addr ,unsigned int offset,unsigned char *buf, unsigned int size);
int ioce_adap_get_file_size(icoe_upgrede_flile_enum type);
unsigned char *ioce_adap_get_file_addr(icoe_upgrede_flile_enum type);
void ioce_adap_set_file_addr_size(icoe_upgrede_flile_enum type,unsigned char *addr, unsigned int size);
int ioce_adap_save_data_to_file(char *filename,char *data, unsigned int len);
unsigned int icoe_adap_get_utc_time(void);
```