初始化

配置开启 SAL 选项之后,需要在启动时对它进行初始化,开启 SAL 功能,如果程序中已经使用了组件自动初始化,则不再需要额外进行单独的初始化,否则需要在初始化任务中调用如下函数:

  1. int sal_init(void);

该初始化函数主要是对 SAL 组件进行初始,支持组件重复初始化判断,完成对组件中使用的互斥锁等资源的初始化。 SAL 组件中没有创建新的线程,这也意味着 SAL 组件资源占用极小,目前 SAL 组件资源占用为 ROM 2.8K 和 RAM 0.6K。

除了 SAL 组件的初始化,我们在使用 SAL 组件之前还需要对其支持的协议栈或网络实现完成注册过程。对于 SAL 组件中协议栈或网络实现的注册,主要是完成以下初始化及协议簇注册过程,确保 socket 创建时能找到对应的协议簇类型。

lwIP 协议栈注册

如果开启 lwIP 支持,需要在 SAL 组件中对 lwIP 协议栈的进行注册初始化,主要是在 sal_socket/proto/lwip/af_inet_lwip.c 文件中完成,如果文件中已经完成自动初始化则可忽略,如果没有则需要调用如下初始化函数:

  1. int lwip_inet_init(void);

AT Socket网络功能注册

如果开启 AT Socket 支持,需要在 SAL 组件中对于 AT Socket 协议栈的进行注册初始化,主要是在 sal_socket/proto/at/src/af_inet_at.c 文件中完成,如果文件中已经完成自动初始化则可忽略,如果没有则需要调用如下初始化函数:

  1. int at_inet_init(void);

初始化完成之后就可以正常使用 SAL 组件,使用抽象的标准 BSD Socket API 编程。