Other Parts Discussed in Thread: CC3100
主题中讨论的其他器件:SEGGER、 CC3100
尝试使用 Segger SES 将 CC3100集成到 nrf52832环境时出现编译器错误。
在尝试设置 sl_full 之后、让它在一个点工作、这样所有与 simplelink 相关的关键区域都不会灰显、并且导致了未定义的错误。
我认为所有标志都是在 user.h 文件中设置的、我尝试了许多变体、从仅添加#define SL_FULL 或#define SL_FULL 1到在 SES 项目预处理指令中添加 SL_FULL。
我需要能够使用 SmartConfig、AP 配置、WLAN 连接和套接字。
当我工作时,我还添加了 FS 读/写,并能够通过 SPI 将固件更新发送到 CC3100。
我使用的是 CC3100 SDK 1.3。
现在、经过6个小时的尝试后、我无法构建它、因为需要包含在项目中的灰色区域。
user.h 键位于以下位置:
#include
#include "board.h"
#include "spi.h"
#include "wifi。h"
#include
//#include "USART.h"
#define SL_FULL
#define SL_FsOpen
#define SL_FsWrite
#define SL_FsClose
#define SL_Write
#define SL_Protocol_Types
#define SL_Socket
#define SL_Connect
#define NetApp
#ifndef sl_if_type_uart
#include "spi.h"
其他
#include "UART.h"
#endif
#define _u8 unsigned char
#define _i8有符号字符
#define _U16无符号短整型
#define _i16 signed short
define _u32 unsigned long
#define _i32 signed long
#define UINT32_t UINT32
#define Int32_t Int32
#define uint8_t uint8
#define INT8_t INT8
#define uint16_t uint16
#define Int16_t Int16
#define bool UINT8
//typedef void (* P_EVENT_handler)(void* pValue);
typedef P_EVENT_handler sl_P_EVENT_handler;
来自 simplelink.h
/********* /
/*主机驱动程序版本的宏声明*/
/********* /
#define SL_DRIVER_VERSION "1.0.1.11"
define SL_MAJOR VERSION_NUM 1L
define SL_MINOR VERSION_NUM 0L
define SL_VERSION_NUM 1L
define SL_SUB_VERSION_NUM 11L
/********* /
/*预定义配置的宏声明*/
/********* /
ifdef sl_Tiny
#undef sl_INC_ARG_CHECK
#undef sl_INC_EXT_API
#undef sl_INC_SOCK_SERVER_SEND_API
#undef sl_INC_WLAN_PKG
#UNDEF SL_INC_NET_CFG_PKG
#undef sl_INC_FS_PKG
#undef sl_INC_SET_UART_MODE
#UNDEF SL_INC_NVMEM_PKG
#define SL_INC_STD_BSD_API_naming
#define SL_INC_SOCK_CLIENT_SON_API
#define SL_INC_SOCK_RECV_API
#define SL_INC_SOCK_SEND_API
#define SL_INC_Socket_PKG
#define SL_INC_NET_APP_PKG
#endif
ifdef sl_small
#undef sl_INC_EXT_API
#undef sl_INC_NET_APP_PKG
#UNDEF SL_INC_NET_CFG_PKG
#undef sl_INC_FS_PKG
#define SL_INC_ARG_CHECK
#define SL_INC_WLAN_PKG
#define SL_INC_Socket_PKG
#define SL_INC_SOCK_CLIENT_SON_API
#define SL_INC_SOCK_SERVER_SOLE_API
#define SL_INC_SOCK_RECV_API
#define SL_INC_SOCK_SEND_API
#define SL_INC_SET_UART_MODE
#endif
ifdef sl_full
#define SL_INC_EXT_API
#define SL_INC_NET_APP_PKG
#define SL_INC_NET_CFG_PKG
#define SL_INC_FS_PKG
#define SL_INC_ARG_CHECK
#define SL_INC_WLAN_PKG
#define SL_INC_Socket_PKG
#define SL_INC_SOCK_CLIENT_SON_API
#define SL_INC_SOCK_SERVER_SOLE_API
#define SL_INC_SOCK_RECV_API
#define SL_INC_SOCK_SEND_API
#define SL_INC_SET_UART_MODE
#endif
#define SL_RET_CODE_OK (0)
#define SL_RET_CODE_INVALID_INPUT (-2)
#define SL_RET_CODE_SELF 错误(-3)
#define SL_RET_CODE_NWP_IF_ERROR (-4)
#define SL_RET_CODE_malloc_ERROR (-5)
#define SL_RET_CODE_ABORT (-6)
#define SL_RET_CODE_PROTOCOL_ERROR (-7)
/*#define sl_memcpy memcpy */
#define SL_Memset (addr、val、len) memset (addr、val、(size_t) len)
#define sl_memcpy (dest、src、len) memcpy (dest、src、(size_t) len)
#ifndef sl_Tiny_EXT
#define SL_MAX_Sockets (_u8)(8)
其他
#define SL_MAX_Sockets (_u8)(2)
#endif
/********* /
/*类型定义*/
/********* /
#ifndef NULL
#define NULL (0)
#endif
#ifndef false
#define false (0)
#endif
#ifndef true
#define true (!false)
#endif
#ifndef 正常
#define OK (0)
#endif
typedef _U16 _SlOpcode_t;
typedef _u8 _SlArgSize_t;
typedef _i16 _SlDataSize_t;
typedef _i16 _SlReturnVal_t;
/*
*此事件状态用于阻止或继续事件传播
*通过所有已注册的外部库/用户应用程序
*
*
typedef 枚举{
EVENT_INVACY_BLOCK = 0、
EVENT_INACY_CONTINUE
}_slEventPropogationStatus_e;
/********* /
/*包含文件*/
/********* /
/*
所有 API 头文件之前必须包含 objInclusion.h 和 user.h
objInclusion.h 必须是包含 API 头文件之前的最后一种安排
因为它基于其他配置来决定应包含哪个对象
*
#include "../source/objInclusion.h
#include "trace.h"
#include "fs.h"
#include "socket.h"
#include "netapp.h"
#include "wlan.h"
#include "device.h"
#include "netcfg.h"
#include "WLAN_Rx_FILTERs.h"
#define _SL_INCLUDE_FUNC (名称)(_SL_INC_##Name)
/*一般事件调度程序
*初始化为用户处理程序*/
#ifdef sl_GeneralEvtHdlr
#define _SlDrvHandleGeneralEvents sl_GeneralEvtHdlr
#endif
/* WLAN 事件调度程序
*初始化为用户处理程序*/
#ifdef sl_WlanEvtHdlr
#define _SlDrvHandleWlanEvents sl_WlanEvtHdlr
#endif
/* NetApp 事件调度员
*初始化为用户处理程序*/
#ifdef sl_NetAppEvtHdlr
#define _SlDrvHandleNetAppEvents sl_NetAppEvtHdlr
#endif
/* http 服务器事件发送程序,即
*已初始化为用户处理程序(如果存在)*/
#ifdef sl_HttpServerCallback
#define _SlDrvHandleHttpServerEvents sl_HttpServerCallback
#endif
/*套接字事件调度程序
*初始化为用户处理程序*/
#ifdef sl_sockEvtHdlr
#define _SlDrvHandleSockEvents sl_sockEvtHdlr
#endif
#ifndef __CONCAT
#define __CONCAT (x、y) x ## y
#endif
#define __CONCAT2 (x、y)__CONCAT (x、y)
/*
*下面的部分处理外部库事件注册
*根据它在其 API 头文件中指定的所需事件。
*外部库应首先由用户安装(请参阅 user.h)
*
ifdef sl_EXT_LIB_1
/*常规事件注册*/
#if __CONCAT2 (sl_EXT_LIB_1、_NOTIFY_General_EVENT)
extern _SlEventPropogationStatus_e __CONCAT2 (sl_EXT_LIB_1、_GeneralEventHdl)(SlDeviceEvent_t *);
#define SlExtLib1GeneralEventHandler __CONCAT2 (sl_EXT_LIB_1、_GeneralEventHdl)
#undef EXT_LIB_Registed_General_Events
#define EXT_LIB_REGAND_General_Events
#endif
/* WLAN 事件注册*/
#if __CONCAT2 (sl_EXT_LIB_1、_NOTIFY_WLAN_EVENT)
extern _SlEventPropogationStatus_e __CONCAT2 (sl_EXT_LIB_1、_WlanEventHdl)(SlWlanEvent_t *);
#define SlExtLib1WlanEventHandler __CONCAT2 (sl_EXT_LIB_1、_WlanEventHdl)
#undef EXT_LIB_REGAND_WLAN_Events
#define EXT_LIB_REGAL_WLAN_Events
#endif
然后是 fs.h 中的一个示例、其中显示了错误代码、然后显示了我需要的灰色区域。
/********* /
/*包含文件*/
/********* /
#include "simplelink.h"
#ifndef __FS_H__
#define __FS_H__
#ifdef __cplusplus
extern "C"{
#endif
/*!
\addtogroup 文件系统
@{
*
/********* /
/*宏声明*/
/********* /
/* FS 错误代码*/
#define SL_FS_OK (0)
#define SL_FS_ERR_EMPTY_SFLASH (-67)
#define SL_FS_ERR_FILE_NOT_SECURE_AND_SIGN (-66)
#define SL_FS_erasing_FLASH (-65)
#define SL_FS_file_has not _been _close_correctly (-64)
#define SL_FS_WRONG_signature (-63)
#define SL_FS_wrong_signature_or_Certificic_name_length (-62)
#define SL_FS_NOT_16_aligned (-61)
#define SL_FS_CERT_CHAIN_ERROR (-60)
#define SL_FS_FILE_NAME_存在(-59)
#define SL_FS_SECURITY_BUF_ALLOC (-58)
#define SL_FS_SECURE_FILE_MOUST_BE_COMMIT (-57)
#define SL_FS_ERR_INCORRECT_OFFSET_EN对 齐(-56)
#define SL_FS_ERR_FAILED_READ_NVMEM_HEADER (-55)
#define SL_FS_WRONG_FILE_NAME (-54)
#define SL_FS_FILE_SYSTEM_IS 已锁定(-53)
#define SL_FS_SECURITY_allert (-52)
#define SL_FS_FILE_UNVALID_FILE_SIZE (-51)
#define SL_FS_ERR_TOKEN_IS _NOT_VALID (-50)
#define SL_FS_NO_DEVICE_IS 加载(-49)
#define SL_FS_DATA_ADDRESS_SHOUD_BE_IN_DATA_RAM (-48)
#define SL_FS_DATA_IS 未对齐(-47)
#define SL_FS_ERR_overlap_detection_threshold (-46)
#define SL_FS_FILE_has RESERVE_NV_INDEX (-45)
#define SL_FS_ERR_MAX_FS_FILES IS _Larger (-44)
#define SL_FS_ERR_MAX_FS_FILES IS _SALES (-43)
#define SL_FS_FILE_MAX_SIZE 超过(-42)
#define SL_FS_INVALID_BUFFER_TO_READ (-41)
#define SL_FS_INVALID_BUFFER_TO_WRITE (-40)
#define SL_FS_ERR_FILE_IMAGE_IS 已损坏(-39)
#define SL_FS_ERR_SIZE =文件的大小_EXT_EXT_EXTRADED (-38)
#define SL_FS_WARNING_FILE_NAME_NOT_STEDEV (-37)
#define SL_FS_ERR_DEVICE_IS 未格式化(-36)
#define SL_FS_ERR_FAILED_WRITE_NVMEM_HEADER (-35)
#define SL_FS_ERR_NO_USE_NV_INDEX (-34)
#define SL_FS_ERR_FAILED_TO_ALLOCATE_MEM (-33)
#define SL_FS_ERR_FAILED_TO_READ_COMPLETE_2 (-32)
#define SL_FS_ERR_FAILED_TO_READ_COMPLETE_HEADER_1 (-31)
#define SL_FS_ERR_NO_USE_BLOCK_BLOCK_S (-30)
#define SL_FS_ERR_FILE_MAX_SIZE 比现有文件大(-29)
#define SL_FS_ERR_FILE_EXISE_ON_MODED_DEVICE_ID (-28)
#define SL_FS_ERR_INVALID_ACCESS_TYPE (-27)
#define SL_FS_ERR_FILE_END_EXISTS (-26)
#define SL_FS_ERR_PROGRAM (-25)
#define SL_FS_ERR_NO_ENTERINS_Available (-24)
#define SL_FS_ERR_FILE_ACCESS_ITH_FROM (-23)
#define SL_FS_ERR_BAD_FILE_MODE (-22)
#define SL_FS_ERR_FAILED_READ_NVFILE (-21)
#define SL_FS_ERR_FAILED_INIT_STORAGE (-20)
#define SL_FS_ERR_CONTINUE_WRITE_MOD_4 (-19)
#define SL_FS_ERR_FAILED_LOAD_FILE (-18)
#define SL_FS_ERR_INVALID_Handle (-17)
#define SL_FS_ERR_FAILED_TO_WRITE (-16)
#define SL_FS_ERR_OFFSET_OUT_of_range (-15)
#define SL_FS_ERR_ALLOC (-14)
#define SL_FS_ERR_READ_DATA_LENGTH (-13)
#define SL_FS_ERR_INVALID_FILE_ID (-12)
#define SL_FS_ERR_FILE_NOT_EXISTS (-11)
#define SL_FS_ERR_EMPTY_ERROR (-10)
#define SL_FS_ERR_INVALID_args (-9)
#define SL_FS_ERR_FAILED_TO_CREATE _FILE (-8)
#define SL_FS_ERR_FS_END_LOADED (-7)
#define SL_FS_ERR_UNKNOWN (-6)
#define SL_FS_ERR_FAILED_TO_CREE_LOCK_OBJ (-5)
#define SL_FS_ERR_DEVICE_NOT_LOADED (-4)
#define SL_FS_ERR_INVALID_魔术_NUM (-3)
#define SL_FS_ERR_FAILED_TO_READ (-2)
#define SL_FS_ERR_NOT_SUPPORTED (-1)
/*错误代码结束*/
然后、这全部呈灰色且不会定义到编译器。
#if _sl_include_FUNC (sl_FsOpen)
_i32 sl_FsOpen (const _u8 * pFileName、const _u32 AccessModeAndMaxSize、_u32 * pToken、_i32 * pFileHandle);
#endif
/*!
简要关闭存储设备中的文件
\param[in]文件 Hdl 指针到文件(从 sl_FsOpen 分配)
\param[in] pCertificateFileName 保留供将来使用。 使用 NULL。
\param[in] pSignature 保留供将来使用。 使用 NULL。
\param[in] SignatureLen 保留供将来使用。 使用0。
成功返回、返回0。 出错时、返回错误代码
sa sl_FsRead sl_FsWrite sl_FsOpen
注意调用 fs_close、签名="A"、签名长度= 1、以激活中止操作
警告
\PAR 示例:
代码
sl_FsClose (FileHandle、0、0、0);
结束代码
*
#if _sl_include_FUNC (sl_FsClose)
_i16 sl_FsClose (const _i32 FileHdl、const _u8* pCertificateFileName、const _u8* pSignature、const _u32 SignatureLen);
#endif
/*!
\brief 从存储设备中的文件中读取数据块
\param[in]文件 Hdl 指针到文件(从 sl_FsOpen 分配)
\param[in]特定读取块的偏移量
接收数据的\param[out] pData 指针
接收数据的长度为\param[in]
\Return on Success、返回读取的字节数。 出错时、返回负数
sa sl_FsClose sl_FsWrite sl_FsOpen
\note 属于\ref basic_API
警告
\PAR 示例:
代码
状态= sl_FsRead (FileHandle、0、readBuff[0]、readSize);
结束代码
*
#if _sl_include_FUNC (sl_FsRead)
_i32 sl_FsRead (const _i32 FileHdl、_u32 Offset、_u8* pData、_u32 Len);
#endif
/*!
\brief 将数据块写入存储设备中的文件
\param[in]文件 Hdl 指针到文件(从 sl_FsOpen 分配)
\param[in]要写入的特定块的偏移量
\param[in] pData 将传输的数据指针指向存储设备
传输数据的长度\param[in]
成功返回、返回写入的字节数。 出错时、返回错误代码
\sa
\note 属于\ref basic_API
警告
\PAR 示例:
代码
状态= sl_FsWrite (FileHandle、0、&buff[0]、readSize);
结束代码
*
#if _sl_include_FUNC (sl_FsWrite)
_i32 sl_FsWrite (const _i32 FileHdl、_u32 Offset、_u8* pData、_u32 Len);
#endif
/*!
\brief 获取文件信息
\param[in] pFileName 文件名
\param[in]令牌保留供将来使用。 使用0
\param[out] pFsFileInfo 返回文件的信息:标志、文件大小、分配的大小和令牌
成功返回、返回0。 出错时、返回错误代码
sa sl_FsOpen
\note 属于\ref basic_API
警告
\PAR 示例:
代码
状态= sl_FsGetInfo ("filename.html"、0、FsFileInfo);
结束代码
*
#if _sl_include_FUNC (sl_FsGetInfo)
_i16 sl_FsGetInfo (const _u8 * pFileName、const _u32 Token、SlfsFileInfo_t* pFsFileInfo);
#endif
/*!
简要删除存储中的特定文件或存储中的所有文件(格式)
\param[in] pFileName 文件名
\param[in]令牌保留供将来使用。 使用0
成功返回、返回0。 出错时、返回错误代码
\sa
\note 属于\ref basic_API
警告
\PAR 示例:
代码
状态= sl_FsDel ("filename.html"、0);
结束代码
*
#if _sl_include_FUNC (sl_FsDel)
_i16 sl_FsDel (const _u8 * pFileName、const _u32 Token);
#endif
/*!