登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
Gitee AI
NEW
我知道了
查看详情
登录
注册
1月18日,北京,聊聊2025如何加入技术开发?
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
6
Fork
3
珠海杰理科技
/
fw-AW31N_BLE_SDK
代码
Issues
24
Pull Requests
0
Wiki
统计
流水线
服务
Gitee Pages
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
我知道了,不再自动展开
更新失败,请稍后重试!
Issues
/
详情
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
[分享内容]: AW31N烧录快速启动及升级程序方法
待办的
#IAMX7W
JL-Ruda
创建于
2024-08-27 21:03
# 一、简介 AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。暂**不支持**使用单脚晶振的芯片方案,如AW312A、AW318C封装。 **快速唤醒:** 快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。 <br> **快速启动:** 快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。 芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序: 1. 测试盒BLE-OTA升级。 2. 测试盒串口OTA升级。 3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。 区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。 烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。 --- # 二、快速唤醒介绍 以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。 **测试数据:** 芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。 --- # 三、快速启动介绍 ### 1. 烧录快速启动配置 <br> **程序上:** 在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项: ![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图") 此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系: 配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。 配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。 **烧录器配置上:** 配置后生成fw导入到烧录器后,配置界面会多出两个配置: ![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图") 注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。 **测试数据:** 配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。使用单脚晶振芯片的时间为6.5~20ms范围内抖动。 只优化其中一项则需要增加上面介绍单项优化相应的时间。 <br> ### 2. 烧录快速启动后调试或更新程序 由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。 **注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!** <br> ##### 方法一:外部加一个IO用来触发跳转升级 增加跳转接口及相关代码: + power_api.h(文件末添加): ![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图") + power_api.c(完整代码参考demo): ![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图") 另外找地方添加外部触发代码,触发方式自己根据需求写: 例子:PA1拉低一定时间触发,可参考demo ``` extern void nvram_set_boot_state(u32 state); extern void ram_protect_close(void); void user_check_update(void) { static u32 update_cnt = 0; if(!gpio_read(IO_PORTA_01)){ if(update_cnt < 4) { user_delay_2ms(1); putchar('+'); update_cnt++; } else { update_cnt = 0; y_printf("enter latch_reset"); /*-----------------------------------------------*/ /*在调用跳转复位接口latch_reset前作ram保护和配置处理*/ local_irq_disable(); ram_protect_close(); nvram_set_boot_state(2); /*-----------------------------------------------*/ latch_reset(); } } } ``` ![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图") 外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。 ![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图") <br> ##### 方法二:测试盒BLE-OTA升级 + 参考方法一,添加latch_reset()函数及其相关代码。 + 文件:testbox_update.c testbox_ble_update_before_jump_handle函数更改如下: ![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图") + 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip) <br> ##### 方法三:测试盒串口OTA升级 + 参考方法一,添加latch_reset()函数及其相关代码。 + 文件:board_aw31n_demo_global_build_cfg.h 关于测试盒串口升级的宏打开: ``` #define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级 ``` + 文件:testbox_uart_update.c testbox_uart_update_before_jump_handle函数更改如下: ![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图") + 文件:isd_config_ini.c ![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图") + 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip) <br> --- # 四、Demo及补丁文件获取 demo: 【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo https://kdocs.cn/l/cdV5HokYsT5D PATCH_FILE(cpu_lib.a + ota.bin): 【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827 https://kdocs.cn/l/cb5S7Z4Pv6O3
# 一、简介 AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。暂**不支持**使用单脚晶振的芯片方案,如AW312A、AW318C封装。 **快速唤醒:** 快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。 <br> **快速启动:** 快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。 芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序: 1. 测试盒BLE-OTA升级。 2. 测试盒串口OTA升级。 3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。 区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。 烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。 --- # 二、快速唤醒介绍 以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。 **测试数据:** 芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。 --- # 三、快速启动介绍 ### 1. 烧录快速启动配置 <br> **程序上:** 在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项: ![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图") 此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系: 配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。 配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。 **烧录器配置上:** 配置后生成fw导入到烧录器后,配置界面会多出两个配置: ![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图") 注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。 **测试数据:** 配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。使用单脚晶振芯片的时间为6.5~20ms范围内抖动。 只优化其中一项则需要增加上面介绍单项优化相应的时间。 <br> ### 2. 烧录快速启动后调试或更新程序 由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。 **注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!** <br> ##### 方法一:外部加一个IO用来触发跳转升级 增加跳转接口及相关代码: + power_api.h(文件末添加): ![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图") + power_api.c(完整代码参考demo): ![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图") 另外找地方添加外部触发代码,触发方式自己根据需求写: 例子:PA1拉低一定时间触发,可参考demo ``` extern void nvram_set_boot_state(u32 state); extern void ram_protect_close(void); void user_check_update(void) { static u32 update_cnt = 0; if(!gpio_read(IO_PORTA_01)){ if(update_cnt < 4) { user_delay_2ms(1); putchar('+'); update_cnt++; } else { update_cnt = 0; y_printf("enter latch_reset"); /*-----------------------------------------------*/ /*在调用跳转复位接口latch_reset前作ram保护和配置处理*/ local_irq_disable(); ram_protect_close(); nvram_set_boot_state(2); /*-----------------------------------------------*/ latch_reset(); } } } ``` ![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图") 外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。 ![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图") <br> ##### 方法二:测试盒BLE-OTA升级 + 参考方法一,添加latch_reset()函数及其相关代码。 + 文件:testbox_update.c testbox_ble_update_before_jump_handle函数更改如下: ![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图") + 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip) <br> ##### 方法三:测试盒串口OTA升级 + 参考方法一,添加latch_reset()函数及其相关代码。 + 文件:board_aw31n_demo_global_build_cfg.h 关于测试盒串口升级的宏打开: ``` #define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级 ``` + 文件:testbox_uart_update.c testbox_uart_update_before_jump_handle函数更改如下: ![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图") + 文件:isd_config_ini.c ![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图") + 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip) <br> --- # 四、Demo及补丁文件获取 demo: 【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo https://kdocs.cn/l/cdV5HokYsT5D PATCH_FILE(cpu_lib.a + ota.bin): 【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827 https://kdocs.cn/l/cb5S7Z4Pv6O3
评论 (
0
)
JL-Ruda
创建了
任务
JL-Ruda
添加了
enhancement
标签
JL-Ruda
修改了
描述
原值
### 你的分享内容标题?
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
```
static void __mask_io
_
cfg()
{
struct app_soft_flag_t app_soft_flag = {0};
app_soft_flag.sfc_fast_boot = 1;
mask_softflag_config(&app_soft_flag);
}
```
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
```
[MASTER_CONFIG_OPTIONS]
FAST_PU_DIS = FALSE;
MASKROM_SOFTWARE_USE = FALSE;
```
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**
烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+
power_api.h(文件末添加):
```
void
latch_re
se
t();
enum
PWR_LAT {
DVDDLS_LAT,
PVDDLS_LAT,
};
void
LS_ENTER_PDOWN();
void
LS_EXIT_PDOWN();
void
LS_ENTER_SOFF_POFF(enum PWR_LAT pwr_lat);
void
LS_EXIT_ROM();
void
LS_EXIT_SOFF_POFF(enum PWR_LAT pwr_lat);
void
Power_clock_soff_enter();
```
+ power_api.c(文件末添加):
```
//maskrom 使用到的io
static void __mask_io_cfg()
{
struct app_soft_flag_t app_soft_flag = {0};
mask_sof
t
flag_config(&app_soft_flag);
}
#define CONFIG_MULTI_CORE 0
#define CONFIG_P11_ENABLE 0
#define p_irq_disable() OS_ENTER_CRITICAL()
#define MSYS_TO_P33_RST_MASK(en) p3
3
_fast_access(P3_RST_CON0, BIT(0), en)
#define MSYS_SOFT_RESET() (JL_CLOCK->PWR_CON |= BIT(4))
extern const bool control_power_latch_reset;
void latch_reset()
{
if (control
_
pow
e
r_latch_reset == 0) {
r
eturn;
}
#
if CONFIG_MULTI_CORE
os_suspend_other_core();
cpu_suspend_other_core(CPU_SUSPEND_TYPE_SOFF);
#
e
ndif
p_irq_disable();
__mask_i
o
_cfg();
power_set_mode(PWR_LDO15);
#
if
CONFIG_P11_ENABLE
P11_TO_P33_RST_MASK(1);
#else
MSYS_TO_P33_RST_MASK(1);
#endif
Power_clock_soff_enter();
// putchar('$');
LS_ENTER_SOFF_POFF(DVDDLS_LAT);
#if CONFIG_P11_ENABLE
LS_ENTER_SOFF_POFF(PVDDLS_LAT);
#endif
#if CONFIG_P11_ENABLE
P11_SOFT_RESET();
#else
MSYS_SOFT_RESET();
#endif
while (1) {
asm volatile("nop");
}
```
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发
```
// 需要在芯片初始化完成后把IO口状态根据触发方式配置好IO状态
gpio_set_mode(IO_PORT_SPILT(IO_PORTA_01), PORT_INPUT_PULLUP_10K);
```
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
user_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
以app_trans.c为例子,在le_trans_app_start()的while(1)里面调用user_check_update()检测外部触发。
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
两个关于测试盒BLE-OTA升级的宏检查是否打开:
```
#define UPDATE_V2_EN 1 // 升级功能使能
#define TESTBOX_BT_UPDATE_EN 1 // 测试盒升级
```
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
```
static void testbox_ble_update_before_jump_handle(int type)
{
//TODO 默认复位,蓝牙不做destory,减少stack消耗
/* ll_hci_destory(); */
sleep_overlay_check_reload(); // 重新加载sleep部分overlay段
// system_reset(UPDATE_FLAG);
latch_reset();
}
```
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
完成上述步骤后,根据测试盒相关文档操作即可实现测试盒BLE-OTA测试:
https://doc.zh-jieli.com/Tools/zh-cn/mass_prod_tools/testbox_1tuo2/tb_wireless_upgrade.html#id2
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
两个关于测试盒BLE串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
#define TCFG_UART_UPDATE_PORT IO_PORTA_00 // 测试盒串口IO口
```
+ 文件:testbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
```
static void testbox_uart_update_before_jump_handle(int up_type)
{
testbox_uart_update_jump_flag_fill();
#if 1//CONFIG_UPDATE_JUMP_TO_MASK
log_info(">>>[test]:latch reset update ---- latch_reset\n");
latch_reset();
#else
log_info(">>>[test]:latch reset update ---- system_reset\n");
system_reset(UPDATE_FLAG);
#endif
}
```
+ 文件:isd_config_ini.c
在[SYS_CFG_PARAM]段中添加:
```
LATCH_IO = PA00&0;//格式为PB01&0_PB02&1 &0/1表示输出低或者高
```
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
完成上述步骤后,根据测试盒相关文档操作即可实现测试盒BLE-OTA测试:
https://doc.zh-jieli.com/Tools/zh-cn/mass_prod_tools/testbox_1tuo2/tb_wired_upgrade.html#id2
<br>
---
### 3. Demo及补丁文件获取
若遇上不清楚的可以打开demo参考修改:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
新值
### 你的分享内容标题?
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。
但使用单脚晶振的不支持此功能,如AW312A封装。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power
_
early_flowing()后一行)的时间为6.5ms左右。
---
#
三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**
注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
u
se
r_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+
参考方法一,添加la
t
ch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW
3
1N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+
参考方法一,添加latch
_
res
e
t()函数及其相关代码。
+
文件:boa
r
d_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#
define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+
文件:testbox_uart_update.c
t
e
stbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+
文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+
替换ota.bin(
o
ta.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
#
##
3. Demo及补丁文件获取
若遇上不清楚的可以打开demo参考修改:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
JL-Ruda
修改了
描述
原值
#
## 你的分享内容标题?
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。但使用单脚晶振的不支持此功能,如AW312A封装。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1
.
测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录
程序
**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
#
三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两
项
配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,
配置
界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.
h
(
文件末添加):
![输入图片说明](https://foruda.gitee.com/images/17248090
96059
3
43897
/
1ec66a8a
_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_se
t
_bo
o
t_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
stat
i
c
u
32 update_cnt = 0;
if(!gpio_r
e
ad(IO_PORTA_01)){
if(u
p
date_cnt < 4) {
u
ser_delay_2ms(1);
putchar('+');
update_cnt
++;
}
else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
loc
a
l
_
irq
_
disable();
ram_protect_close();
nvram
_
s
e
t_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+
参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/17248
0
9411048249891/a32b8
7
de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#defin
e
TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:testbox_uart_update
.
c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809
5661
1
67
8
1826
/
7e0d0fb4
_11285002.png "屏幕截图")
+
文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
### 3. Demo及补丁文件获取
若遇上不清楚的可以打开demo参考修改:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdo
c
s.cn/l/cdV5HokYsT5D
PATCH_FILE(
c
pu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
新值
#
一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。但使用单脚晶振的不支持此功能,如AW312A封装。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3
.
外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版
程序
的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
#
## 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置
项
MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个
配置
项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.
c
(
完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/17248090
74587
3
99915
/
e1053492
_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_upda
t
e(v
o
id)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
i
f(
u
pdate_cnt < 4) {
us
e
r_delay_2ms(1);
p
utchar('+');
u
pdate_cnt++;
}
else {
update_cnt
= 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvr
a
m
_
set
_
boot_state(2);
/*-----------------------------------------------*/
latch
_
r
e
set();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+
文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.
0
_快速启动_patch_2024082
7
.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:t
e
stbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda
.
gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+ 文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809
6032
1
59
8
0537
/
e57cede5
_11285002.png "屏幕截图")
+
替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
# 四、Demo及补丁文件获取
demo:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(
c
pu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdo
c
s.cn/l/cb5S7Z4Pv6O3
JL-Ruda
修改了
描述
原值
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。但使用单脚晶振
的不支持此功能,如AW312A封装。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
user_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:testbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+ 文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
# 四、Demo及补丁文件获取
demo:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
新值
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。但使用单脚晶振
,如AW312A封装,配置完快速启动后,启动时间加快效果不稳定。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。
使用单脚晶振芯片的时间为6.5~20ms范围内抖动。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
user_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:testbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+ 文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
# 四、Demo及补丁文件获取
demo:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
JL-Ruda
修改了
描述
原值
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。
但使用单脚晶振,如AW312A封装,配置完快速启动后,启动时间加快效果不稳定。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。使用单脚晶振芯片的时间为6.5~20ms范围内抖动。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
user_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:testbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+ 文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
# 四、Demo及补丁文件获取
demo:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
新值
# 一、简介
AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。
暂**不支持**使用单脚晶振的芯片方案,如AW312A、AW318C封装。
**快速唤醒:**
快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。
<br>
**快速启动:**
快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是**不可逆的**,所以必须**慎重烧录**。
芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:
1. 测试盒BLE-OTA升级。
2. 测试盒串口OTA升级。
3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。
区分**升级程序**和**烧录程序**:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。
烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。
---
# 二、快速唤醒介绍
以AW31N_sdk_release_v1.1.0为例子,公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。
**测试数据:**
芯片从软关机唤醒到初始化IO后(power_early_flowing()后一行)的时间为6.5ms左右。
---
# 三、快速启动介绍
### 1. 烧录快速启动配置
<br>
**程序上:**
在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:
![输入图片说明](https://foruda.gitee.com/images/1724808562649195179/e6ef079b_11285002.png "屏幕截图")
此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系:
配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。
配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。
**烧录器配置上:**
配置后生成fw导入到烧录器后,配置界面会多出两个配置:
![输入图片说明](https://foruda.gitee.com/images/1724138642583030308/d84364f5_11285002.png "屏幕截图")
注意:在烧录器界面配置中,两个配置项**不勾选**才是**使能**此选项的快速启动优化。
**测试数据:**
配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。使用单脚晶振芯片的时间为6.5~20ms范围内抖动。
只优化其中一项则需要增加上面介绍单项优化相应的时间。
<br>
### 2. 烧录快速启动后调试或更新程序
由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。
**注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!**
<br>
##### 方法一:外部加一个IO用来触发跳转升级
增加跳转接口及相关代码:
+ power_api.h(文件末添加):
![输入图片说明](https://foruda.gitee.com/images/1724809096059343897/1ec66a8a_11285002.png "屏幕截图")
+ power_api.c(完整代码参考demo):
![输入图片说明](https://foruda.gitee.com/images/1724809074587399915/e1053492_11285002.png "屏幕截图")
另外找地方添加外部触发代码,触发方式自己根据需求写:
例子:PA1拉低一定时间触发,可参考demo
```
extern void nvram_set_boot_state(u32 state);
extern void ram_protect_close(void);
void user_check_update(void)
{
static u32 update_cnt = 0;
if(!gpio_read(IO_PORTA_01)){
if(update_cnt < 4) {
user_delay_2ms(1);
putchar('+');
update_cnt++;
} else {
update_cnt = 0;
y_printf("enter latch_reset");
/*-----------------------------------------------*/
/*在调用跳转复位接口latch_reset前作ram保护和配置处理*/
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
/*-----------------------------------------------*/
latch_reset();
}
}
}
```
![输入图片说明](https://foruda.gitee.com/images/1724808833106303908/d586555e_11285002.png "屏幕截图")
外部成功触发调用latch_reset()后,芯片会复位后跳转到升级流程并while住,等待上位机启动程序更新,此时可打开设备管理器的磁盘驱动器查看电脑是否能正常读盘,成功读盘后可以直接使用codeblocks编译下载程序或者使用固件升级工具下载程序。
![输入图片说明](https://foruda.gitee.com/images/1724138774658315726/20560119_11285002.png "屏幕截图")
<br>
##### 方法二:测试盒BLE-OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:testbox_update.c
testbox_ble_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809411048249891/a32b87de_11285002.png "屏幕截图")
+ 替换cpu_lib.a并rebuild(cpu_lib.a见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
##### 方法三:测试盒串口OTA升级
+ 参考方法一,添加latch_reset()函数及其相关代码。
+ 文件:board_aw31n_demo_global_build_cfg.h
关于测试盒串口升级的宏打开:
```
#define TESTBOX_UART_UPDATE_EN 1 // 测试盒串口升级
```
+ 文件:testbox_uart_update.c
testbox_uart_update_before_jump_handle函数更改如下:
![输入图片说明](https://foruda.gitee.com/images/1724809566116781826/7e0d0fb4_11285002.png "屏幕截图")
+ 文件:isd_config_ini.c
![输入图片说明](https://foruda.gitee.com/images/1724809603215980537/e57cede5_11285002.png "屏幕截图")
+ 替换ota.bin(ota.bin见文章结尾AW31N_v1.1.0_快速启动_patch_20240827.zip)
<br>
---
# 四、Demo及补丁文件获取
demo:
【金山文档 | WPS云文档】 AW31N_sdk_release_v1.1.0_快速启动demo
https://kdocs.cn/l/cdV5HokYsT5D
PATCH_FILE(cpu_lib.a + ota.bin):
【金山文档 | WPS云文档】 AW31N_v1.1.0_快速启动_patch_20240827
https://kdocs.cn/l/cb5S7Z4Pv6O3
展开全部操作日志
折叠全部操作日志
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
enhancement
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (1)
标签 (3)
master
aw31n_sdk_release_v1.2.0
aw31n_sdk_release_v1.1.0
aw31n_sdk_release_v1.0.0
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
C
1
https://gitee.com/Jieli-Tech/fw-AW31N_BLE_SDK.git
git@gitee.com:Jieli-Tech/fw-AW31N_BLE_SDK.git
Jieli-Tech
fw-AW31N_BLE_SDK
fw-AW31N_BLE_SDK
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册