完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/******************************************************************************
* * ota-rle_x3.lib 使用须知 * * 1.ota-rle_x3.lib(以下称该库)支持在内存受限系统的差分文件的解压还原算法, * 主要应用于单片机(不限于)的差分升级领域,版权属于开发者所有; * 2.该库免费提供给开发者交流、学习、研究使用,请勿私自应用于商业领域,如若违 * 反使用条款,版权所有者有权进行法律追溯; * 3.禁止对该库的反编译、解密等破坏原程序设计的违法操作; * 4.允许以交流、学习、研究使用为目的的复制与传播,但在转载时不可更改该文件内 * 容,包含该库的使用须知; * 5.该库所有权属于@QQ172569891所有人。 26/11/2020 上海 * *******************************************************************************/ /******************************************************************************* * ota-rle_x3.lib 使用说明 * 1.使用该库需要调用2个函数,unpack_init(),注册5个回调函数,分别是old * app的flash_read,patch包 flash_read,new包的 flash_read,new包的flash_write, * 事件回调函数(如 接收到 E_SUCCESS表示文件还原成功,并通过param告知用户新固件 * 的长度,方便用户做后续的flash搬运操作);unpack_start();启动差分包还原算法, * 执行结果通过回调告知 * 2.flash_read&flash_write 回调函数原型见是 buffer_in_cb&buffer_out_cb,其中offset * 代表相应flash存储位置的便宜地址(非绝对地址,用户需要在回调中增加相应偏移,以指向 * 实际的物理地址,如 old_flash 的绝对起始地址在0x8001000,用户在进行flash操作的时候要 * 加上这个偏移) * 3.主要的内存消耗:= MAX_CHUNK_BUFFER_SIZE*3 + MAX_FLASH_RW_SECTOR_SIZE*2 * * 4.文件压缩工具请进QQ群 47954837索要 ********************************************************************************/ #ifndef __HEADFILE_RLE_X3_UNPACK__ #define __HEADFILE_RLE_X3_UNPACK__ #include #ifndef NULL #define NULL 0 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define ALGORITHM_VER "122001" #define PID_VID 0x052C0001 //厂家&产品 ID #define MAX_APP_FLASH_SIZE 100*1024UL //应用程序的最大flash分配空间 #define ENABLE_DEBUG_MSG TRUE //调试信息打印功能开关 #define MAX_CHUNK_BUFFER_SIZE 128 //文件解压缓存大小,不小于128 #define MAX_FLASH_RW_SECTOR_SIZE 256 //flash 读写操作大小,不小于128 typedef enum { E_SUCCESS, E_FILE_HEAD_ERR, E_PID_VID_ERR, E_FLASH_NOT_ENOUGH_ERR, E_DIFF_ALGORITHM_ERR, E_FILE_CRC32_ERR, E_FILE_CHECK_ERR, E_PARAMS_ERR, E_FILE_ERROR, E_FILE_CRC_ERR, E_PATCH_CTRL_ERR, E_PATCH_OFFSET_ERR, E_PATCH_RW_LEN_ERR, E_PATCH_NOUTRANGE_ERR, E_PATCH_CRC_ERR, }state_en; typedef int (*buffer_in_cb)(int offset,char *in,int len); typedef int (*buffer_out_cb)(int offset,char *out,int len); typedef void (*ota_event_cb)(int event_id,int param); state_en unpack_init(buffer_in_cb old_f,buffer_in_cb patch_f, buffer_in_cb r_new_f,buffer_out_cb new_f, ota_event_cb event_cb); void unpack_start(); #endif |
|
|
|
只有小组成员才能发言,加入小组>>
3301 浏览 9 评论
2975 浏览 16 评论
3477 浏览 1 评论
9037 浏览 16 评论
4070 浏览 18 评论
1152浏览 3评论
595浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
582浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2320浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1881浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 13:31 , Processed in 1.392677 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号