# SECBOOT
***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.***
---
# 功能概述
SECBOOT(Secure Boot,安全启动)是一种基于可信根(Root of Trust)的安全启动机制,用于确保设备在启动过程中仅加载和执行经过授权的固件镜像,从而防止恶意代码、篡改固件或未授权软件运行。
在设备上电启动时,系统首先从芯片内部固化的启动程序(Boot ROM)开始运行,并对后续启动阶段的固件进行数字签名校验。只有当固件签名验证通过后,系统才会继续执行下一阶段的启动流程;如果校验失败,则拒绝加载相关固件,从而保障系统启动链路的安全性。
SECBOOT通过建立从Boot ROM到Bootloader、Kernel以及应用程序的信任链(Chain of Trust),确保整个启动过程中的软件均来源可信且未被篡改。
主要提供以下安全能力:
- 防止未授权固件被加载执行
- 防止固件文件被恶意篡改
- 保护设备系统完整性与可信性
- 提升产品对恶意攻击和非法破解的防护能力
- 满足工业、车载、物联网等安全场景的部署要求
# SECBOOT API
## 头文件
*qosa_secboot.h*
## 函数概览
| **函数** | **说明** |
| --- | --- |
| *qosa_secboot_enable()* | 启用SECBOOT |
| *qosa_secboot_get_enable_state()* | 获取SECBOOT的启用状态 |
## 函数详解
### qosa_secboot_enable
- **功能描述**
启用SECBOOT。
- **函数原型**
```c
qosa_secboot_error_e qosa_secboot_enable(void)
```
- **参数说明**
无
- **返回值说明**
*QOSA_SECBOOT_OK*:函数执行成功
其他错误码:函数执行失败
### qosa_secboot_get_enable_state
- **功能描述**
获取SECBOOT的启用状态 **。**
- **函数原型**
```c
qosa_secboot_error_e qosa_secboot_get_enable_state(qosa_uint8_t *enable_state)
```
- **参数说明**
| **参数名** | **输入/输出** | **类型** | **说明** |
| --- | --- | --- | --- |
| *enable_state* | 输出 | qosa_uint8_t * | 输出参数
*0*:禁用
*1*:启用 |
- **返回值说明**
*QOSA_SECBOOT_OK*:函数执行成功
其他错误码:函数执行失败
## 枚举定义
### qosa_secboot_error_e
结果码枚举定义如下:
```c
QOSA_COMPONENT_SECBOOT = 0x811B
#define QOSA_ERRCODE_SECBOOT_BASE (QOSA_COMPONENT_SECBOOT << 16)
typedef enum
{
QOSA_SECBOOT_OK = QOSA_OK,
QOSA_SECBOOT_EXECUTE_ERR = QOSA_ERRCODE_SECBOOT_BASE | 1,
QOSA_SECBOOT_INVALID_PARAM_ERR ,
QOSA_SECBOOT_UNKNOW_ROM_VECTOR ,
QOSA_SECBOOT_ERROR_MAX
} qosa_secboot_error_e;
```
| **成员** | **说明** |
| --- | --- |
| *QOSA_SECBOOT_OK* | 函数执行成功 |
| *QOSA_SECBOOT_EXECUTE_ERR* | 函数执行失败 |
| *QOSA_SECBOOT_INVALID_PARAM_ERR* | 参数无效 |
| *QOSA_SECBOOT_UNKNOW_ROM_VECTOR* | 未知的变量 |
| *QOSA_SECBOOT_ERROR_MAX* | 其他错误 |
# 示例代码
完整示例代码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/system/secboot/secboot.c