Merge pull request #2916 from enkiller/w60x

[bsp][w60x] 更新驱动,添加加解密及配网功能,增强稳定性。
This commit is contained in:
Bernard Xiong authored and GitHub committed 2019-08-05 08:35:23 +08:00
commit 87267b41bc
35 files changed
+2604 -2430

No files matched your search

+94 -34
View File
File diff suppressed because it is too large. Load diff
+4 -4
View File
@@ -13,15 +13,15 @@ W60X 芯片是[联盛德微电子](http://www.winnermicro.com)推出的一款嵌
| UART | 支持 | UART0/UART1/UART2 |
| GPIO | 支持 | 自动根据芯片型号选择引脚布局 |
| SPI | 支持 | 低速 SPI,支持 SPI BUS,8/32bit 主机模式 |
| SPI Flash | 支持 | 支持 W25QXX、SFUD |
| WDT | 支持 | 支持 |
| I2C | 支持 | 硬件 I2C |
| I2C | 支持 | 硬件 I2C 和 软件 I2C |
| RTC | 支持 | 支持 ntp 同步、支持 Alarm |
| ADC | 支持 | 8 channel ADC 采集 CPU 温度采集(W601 支持) |
| PWM | 支持 | 5 channel PWM 输出 |
| Timer | 支持 | 5个Timers 独立工作 |
| WiFi | 支持 | 支持 IEEE802.11b/g/n,支持 sta、ap、ap+sta 模式 |
| 低功耗 | 支持 | 支持 WiFi 协议节电,支持 standby 深度节电 |
| Crypto | 支持 | 支持硬件 AES/DES/3DES/RC/SHA1/MD3/CRC 加解密算法|
| WiFi | 支持 | 支持 IEEE802.11b/g/n,支持 sta、ap、ap+sta 模式 |
| 低功耗 | 支持 | 支持 WiFi 协议节电,支持 standby 深度节电 |
## 使用说明
+212 -187
View File
File diff suppressed because it is too large. Load diff
+6 -14
View File
@@ -7,6 +7,7 @@ objs = []
src = Split('''
board.c
drv_uart.c
drv_flash.c
pin_map.c
''')
@@ -19,17 +20,11 @@ if GetDepend(['BSP_USING_WIFI']):
if GetDepend('BSP_USING_PIN'):
src += ['drv_pin.c']
if GetDepend('BSP_USING_SDIO'):
src += ['drv_sdio.c']
if GetDepend('BSP_USING_CAN'):
src += ['drv_can.c']
if GetDepend('BSP_USING_HWTIMER'):
src += ['drv_hw_timer.c']
if GetDepend('BSP_USING_CPUTIME'):
src += ['drv_cputime.c']
if GetDepend('BSP_USING_SOFT_I2C'):
src += ['drv_soft_i2c.c']
if GetDepend('BSP_USING_I2C'):
src += ['drv_i2c.c']
@@ -37,12 +32,6 @@ if GetDepend('BSP_USING_I2C'):
if GetDepend('BSP_USING_SPI'):
src += ['drv_spi.c']
if GetDepend(['BSP_USING_FLASH']):
src += ['drv_spiflash.c']
if GetDepend('BSP_USING_LCD'):
src += ['drv_lcd.c']
if GetDepend('BSP_USING_PWM'):
src += ['drv_pwm.c']
@@ -55,6 +44,9 @@ if GetDepend('BSP_USING_WDT'):
if GetDepend('BSP_USING_STANDBY'):
src += ['drv_standby.c']
if GetDepend('BSP_USING_CRYPTO'):
src += ['drv_crypto.c']
CPPPATH = [cwd]
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+23
View File
@@ -133,6 +133,21 @@ static void _idle_hook_callback(void)
#endif
}
static void _thread_inited_hook(rt_thread_t thread)
{
rt_uint32_t stack_size, stk_start;
stack_size = (rt_uint32_t)thread->stack_size;
stk_start = (rt_uint32_t)thread->stack_addr;
if ((stk_start + stack_size) >= TASK_STACK_USING_MEM_UPPER_RANGE)
{
rt_kprintf("thread[%s] stack only between 0x%08x and 0x%08x, please use rt_create_thread()!!\n",
thread->name, TASK_STACK_USING_MEM_LOWER_RANGE, TASK_STACK_USING_MEM_UPPER_RANGE);
}
RT_ASSERT((stk_start + stack_size) < TASK_STACK_USING_MEM_UPPER_RANGE);
}
void wm_sys_clk_config(void)
{
tls_sys_clk sysclk;
@@ -188,6 +203,14 @@ void rt_hw_board_init(void)
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP, ENABLE);
rt_thread_idle_sethook(_idle_hook_callback);
rt_thread_inited_sethook(_thread_inited_hook);
}
#include <wm_watchdog.h>
void rt_hw_cpu_reset(void)
{
extern void tls_sys_reset(void);
tls_sys_reset();
}
#ifdef RT_USING_FINSH
+4 -1
View File
@@ -22,7 +22,10 @@ extern int __bss_end__;
#define HEAP_BEGIN (&__bss_end__)
#endif
#define HEAP_END (0x20038000UL)
#define HEAP_END (0x20028000UL)
#define HARDWARE_VERSION 0x0003U
#include "pin_config.h"
void rt_hw_board_init(void);
File diff suppressed because it is too large. Load diff
@@ -5,12 +5,12 @@
*
* Change Logs:
* Date Author Notes
* 2018-11-12 fanwenl 1st version
* 2019-05-17 tyx 1st version
*/
#ifndef __DRV_SPI_FLASH_H_
#define __DRV_SPI_FLASH_H_
#ifndef __DRV_CRYPTO_H__
#define __DRV_CRYPTO_H__
int wm_nor_flash_init(void);
int wm_hw_crypto_device_init(void);
#endif /* __DRV_SPI_FLASH_H_ */
#endif /* __DRV_CRYPTO_H__ */
+158
View File
@@ -0,0 +1,158 @@
/*
* Copyright (c) 2019 Winner Microelectronics Co., Ltd.
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-04-04 tyx 1st version
*/
#include <rtthread.h>
#include <rtdevice.h>
#include "wm_flash_map.h"
#include "wm_internal_flash.h"
#include "drv_flash.h"
#define FLASH_SECTOR (4096)
#ifdef RT_USING_SPI
static void *_spi0;
#endif
extern unsigned int flashtotalsize;
rt_uint32_t wm_flash_total(void)
{
rt_uint32_t total = 0x100000;
if (flashtotalsize == 0x200000)
{
total = 0x200000;
}
return total;
}
rt_uint32_t wm_flash_addr(void)
{
return FLASH_BASE_ADDR;
}
rt_uint32_t wm_flash_blksize(void)
{
return FLASH_SECTOR;
}
int wm_flash_read(long offset, void *data, int size)
{
offset += FLASH_BASE_ADDR;
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_take_bus(_spi0);
}
#endif
if (tls_fls_read(offset, data, size) != TLS_FLS_STATUS_OK)
{
size = -1;
}
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_release_bus(_spi0);
}
#endif
return size;
}
int wm_flash_write(long offset, void *data, int size)
{
offset += FLASH_BASE_ADDR;
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_take_bus(_spi0);
}
#endif
if (tls_fls_write(offset, data, size) != TLS_FLS_STATUS_OK)
{
size = -1;
}
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_release_bus(_spi0);
}
#endif
return size;
}
int wm_flash_erase(long offset, int size)
{
int count, sector;
offset += FLASH_BASE_ADDR;
count = size / FLASH_SECTOR;
sector = offset / FLASH_SECTOR;
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_take_bus(_spi0);
}
#endif
while (count)
{
if (tls_fls_erase(sector) != TLS_FLS_STATUS_OK)
{
size = -1;
break;
}
count--;
sector++;
}
#ifdef RT_USING_SPI
if (_spi0)
{
rt_spi_release_bus(_spi0);
}
#endif
return size;
}
int wm_flash_init(void)
{
#ifdef RT_USING_SPI
rt_err_t ret;
if (_spi0 != RT_NULL)
{
return 0;
}
_spi0 = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device));
RT_ASSERT(_spi0 != RT_NULL);
#ifdef WM_SPI_BUS_NAME
ret = rt_spi_bus_attach_device(_spi0, "flash", WM_SPI_BUS_NAME, RT_NULL);
#else
ret = rt_spi_bus_attach_device(_spi0, "flash", "spi0", RT_NULL);
#endif
if (ret != RT_EOK)
{
rt_free(_spi0);
_spi0 = RT_NULL;
}
if (_spi0)
{
((struct rt_spi_device *)_spi0)->config.mode = RT_SPI_MODE_0;
((struct rt_spi_device *)_spi0)->config.data_width = 8;
((struct rt_spi_device *)_spi0)->config.max_hz = 20 * 1000 * 1000;
}
#endif
return 0;
}
+24
View File
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2019 Winner Microelectronics Co., Ltd.
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-04-04 tyx 1st version
*/
#ifndef __DRV_FLASH_H__
#define __DRV_FLASH_H__
#include <rtthread.h>
int wm_flash_read(long offset, void *data, int size);
int wm_flash_write(long offset, void *data, int size);
int wm_flash_erase(long offset, int size);
int wm_flash_init(void);
rt_uint32_t wm_flash_total(void);
rt_uint32_t wm_flash_addr(void);
rt_uint32_t wm_flash_blksize(void);
#endif
+6 -1
View File
@@ -63,6 +63,11 @@ static void wm_timer_stop(rt_hwtimer_t *timer)
tls_timer_stop(wm_timer->id);
}
static rt_uint32_t wm_timer_get(rt_hwtimer_t *timer)
{
return 0;
}
static rt_err_t wm_timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg)
{
/* The frequency value is an immutable value. */
@@ -93,7 +98,7 @@ static const struct rt_hwtimer_ops _ops =
wm_timer_init,
wm_timer_start,
wm_timer_stop,
RT_NULL,
wm_timer_get,
wm_timer_ctrl,
};
+5
View File
@@ -10,6 +10,7 @@
#include <rtdevice.h>
#include <rtthread.h>
#include "board.h"
#include "wm_i2c.h"
#include "wm_io.h"
#include "wm_gpio_afsel.h"
@@ -167,7 +168,11 @@ int wm_hw_i2c_init(void)
tls_i2c_init(WM_HW_I2C_FREQ);
wm_i2c.parent.ops = &wm_i2c_ops;
#ifdef WM_I2C_BUS_NAME
rt_i2c_bus_device_register(&wm_i2c.parent, WM_I2C_BUS_NAME);
#else
rt_i2c_bus_device_register(&wm_i2c.parent, "i2c");
#endif
return 0;
}
+4
View File
@@ -20,6 +20,10 @@
#ifdef BSP_USING_RTC
#if defined(RT_USING_SOFT_RTC)
#error "Please CANCEL the RT_USING_SOFT_RTC option. Make sure there is only one RTC device on the system."
#endif
static struct rt_rtc_device rtc_device;
static time_t wm_get_timestamp(void)
File diff suppressed because it is too large. Load diff
+61
View File
@@ -0,0 +1,61 @@
/*
* Copyright (c) 2006-2019, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-03-22 balanceTWK first version
*/
#ifndef __DRV_SOFT_I2C__
#define __DRV_SOFT_I2C__
#include <rtthread.h>
#include <rthw.h>
#include <rtdevice.h>
/* w60x config class */
struct w60x_soft_i2c_config
{
rt_uint8_t scl;
rt_uint8_t sda;
const char *bus_name;
};
/* w60x i2c dirver class */
struct w60x_i2c
{
struct rt_i2c_bit_ops ops;
struct rt_i2c_bus_device i2c2_bus;
};
#ifdef BSP_USING_SOFT_I2C1
#define I2C1_BUS_CONFIG \
{ \
.scl = SOFT_I2C1_SCL_PIN, \
.sda = SOFT_I2C1_SDA_PIN, \
.bus_name = "i2c1soft", \
}
#endif
#ifdef BSP_USING_SOFT_I2C2
#define I2C2_BUS_CONFIG \
{ \
.scl = SOFT_I2C2_SCL_PIN, \
.sda = SOFT_I2C2_SDA_PIN, \
.bus_name = "i2c2soft", \
}
#endif
#ifdef BSP_USING_SOFT_I2C3
#define I2C3_BUS_CONFIG \
{ \
.scl = SOFT_I2C3_SCL_PIN, \
.sda = SOFT_I2C3_SDA_PIN, \
.bus_name = "i2c3soft", \
}
#endif
int rt_hw_i2c_init(void);
#endif
+16 -3
View File
@@ -10,6 +10,7 @@
#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"
#include "wm_hostspi.h"
#include "wm_spi_hal.h"
#include "wm_io.h"
@@ -92,10 +93,13 @@ static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *
rt_int32_t length = 0;
rt_int32_t remain_length = message->length;
rt_int32_t int_status;
tls_irq_disable(SPI0_INT);
length = spi_fill_txfifo(&tls_transfer, remain_length);
spi_set_sclk_length(length * 8, 0);
if (message->cs_take)
if (message->cs_take && cs)
{
tls_gpio_write((enum tls_io_name)cs->pin, 0);
}
@@ -112,7 +116,7 @@ static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *
{
while (spi_i2s_get_busy_status() == 1)
;
if (message->cs_release)
if (message->cs_release && cs)
{
tls_gpio_write((enum tls_io_name)cs->pin, 1);
}
@@ -129,10 +133,15 @@ static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *
while (spi_i2s_get_busy_status() == 1)
;
if (message->cs_release)
if (message->cs_release && cs)
{
tls_gpio_write((enum tls_io_name)cs->pin, 1);
}
int_status = spi_get_int_status();
spi_clear_int_status(int_status);
tls_irq_enable(SPI0_INT);
return message->length - remain_length;
}
@@ -193,7 +202,11 @@ int wm_hw_spi_bus_init(void)
}
wm_spi_bus.parent.user_data = &spi;
#ifdef WM_SPI_BUS_NAME
rt_spi_bus_register(&wm_spi_bus, WM_SPI_BUS_NAME, &wm_spi_ops);
#else
rt_spi_bus_register(&wm_spi_bus, "spi0", &wm_spi_ops);
#endif
return RT_EOK;
}
-33
View File
@@ -1,33 +0,0 @@
/*
* Copyright (c) 2019 Winner Microelectronics Co., Ltd.
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2018-11-12 fanwenl 1st version
*/
#include <rtthread.h>
#include <rtdevice.h>
#ifdef BSP_USING_FLASH
#include "drv_spi.h"
#include "string.h"
#include "spi_flash.h"
#include "spi_flash_sfud.h"
int wm_nor_flash_init(void)
{
rt_spi_flash_device_t spi_device;
wm_spi_bus_attach_device(SPI_Flash_BUS_NAME, "norspi", SPI_Flash_CS_PIN);
spi_device = rt_sfud_flash_probe("flash0", "norspi");
if (spi_device == RT_NULL)
{
return -RT_ERROR;
}
return 0;
}
INIT_DEVICE_EXPORT(wm_nor_flash_init);
#endif
+1
View File
@@ -10,6 +10,7 @@
#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"
#include "wm_io.h"
#include "wm_uart.h"
#include "wm_gpio_afsel.h"
+4 -2
View File
@@ -14,8 +14,10 @@
#include "wm_wifi.h"
#include "drv_wifi.h"
#define DBG_TAG "WIFI"
#define DBG_LVL DBG_INFO
#define DBG_ENABLE
#define DBG_LEVEL DBG_INFO
#define DBG_SECTION_NAME "WIFI"
#define DBG_COLOR
#include <rtdbg.h>
#include "wm_ram_config.h"
+2 -2
View File
@@ -7,9 +7,9 @@ define symbol __ICFEDIT_intvec_start__ = 0x08010100;
/* rom 959K */
define symbol __ICFEDIT_region_ROM_start__ = 0x08010100;
define symbol __ICFEDIT_region_ROM_end__ = 0x080FFFFF;
/* ram 224k */
/* ram 160k */
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2003C000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20028000;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0xc00;
define symbol __ICFEDIT_size_heap__ = 0x1A000;
+8 -2
View File
@@ -8,8 +8,8 @@
MEMORY
{
FLASH (rx) : ORIGIN = 0x8010100, LENGTH = 959K /* 960K-256B */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x3C000 /* 240K */
FLASH (rx) : ORIGIN = 0x8010100, LENGTH = 959K /* 960K-256B */
RAM (rw) : ORIGIN = 0x20000000, LENGTH = 0x28000 /* 160K */
}
/* Linker script to place sections and symbol values. Should be used together
@@ -78,6 +78,12 @@ SECTIONS
KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
__rtatcmdtab_start = .;
KEEP(*(RtAtCmdTab))
__rtatcmdtab_end = .;
. = ALIGN(4);
. = ALIGN(4);
KEEP(*(.init))
KEEP(*(.fini))
+3 -2
View File
@@ -3,12 +3,13 @@
; *************************************************************
LR_IROM1 0x08010100 0x000EFEFF { ; load region size_region
ER_IROM1 0x08010100 0x000EFEFF { ; load address = execution address
ER_IROM1 0x08010100 0x000EFEFF { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x0003C000 { ; RW data
RW_IRAM1 0x20000000 0x00028000 { ; RW data
.ANY (+RW +ZI)
}
}
+36
View File
@@ -0,0 +1,36 @@
/*
* Copyright (c) 2006-2019, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-06-01 Ernest the first version
*/
#ifndef __PIN_CONFIG_H__
#define __PIN_CONFIG_H__
// UART
#define WM_UART2_RX_PIN 1 // PB19 : UART2_RX (W601)
#define WM_UART2_TX_PIN 2 // PB20 : UART2_TX (W601)
#define WM_UART1_RX_PIN 31 // PB11 : UART1_RX (W600)
#define WM_UART1_TX_PIN 32 // PB12 : UART1_TX (W600)
// spi
#define WM_SPI_CK_PIN 53 // PB27 : SPI_SCK
#define WM_SPI_DI_PIN 55 // PB1 : SPI_MISO
#define WM_SPI_DO_PIN 56 // PB2 : SPI_MOSI
// i2c
#define WM_I2C_SCL_PIN 18
#define WM_I2C_DAT_PIN 19
// soft i2c
#define SOFT_I2C1_SCL_PIN 23 // PA0 : I2C1_SCL
#define SOFT_I2C1_SDA_PIN 24 // PA1 : I2C1_SDA
#define SOFT_I2C2_SCL_PIN 25 // PA2 : I2C2_SCL
#define SOFT_I2C2_SDA_PIN 24 // PA1 : I2C2_SDA
#endif /* __PIN_CONFIG_H__ */
+15
View File
@@ -0,0 +1,15 @@
Import('rtconfig')
from building import *
cwd = GetCurrentDir()
src = []
path = [cwd]
src += ['oneshot.c']
if GetDepend(['WM_USING_ONESHOT_DEMO']):
src += ['oneshot_demo.c']
group = DefineGroup('oneshot', src, depend = ['WM_USING_ONESHOT'], CPPPATH = path)
Return('group')
+52
View File
@@ -0,0 +1,52 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-01-25 winner micro
*/
#include <rtthread.h>
#include "oneshot.h"
#include "wm_wifi_oneshot.h"
#include "wm_wifi.h"
/* start oneshot */
int wm_oneshot_start(WM_ONESHOT_MODE mode, wm_oneshot_callback callback)
{
tls_wifi_oneshot_callback_register(callback);
if(mode == WM_UDP)
{
tls_wifi_set_oneshot_config_mode(0);
}
else if (mode == WM_APSOCKET)
{
tls_wifi_set_oneshot_config_mode(1);
}
else if(mode == WM_APWEB)
{
tls_wifi_set_oneshot_config_mode(2);
}
else
{
return -1;
}
tls_wifi_set_oneshot_flag(1);
return 0;
}
/* stop oneshot */
int wm_oneshot_stop(void)
{
tls_wifi_oneshot_callback_delete();
tls_wifi_set_oneshot_flag(0);
return 0;
}
/* get status */
int wm_oneshot_get(void)
{
return tls_wifi_get_oneshot_flag();
}
+27
View File
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-01-25 winner micro
*/
#ifndef DRV_ONESHOT_H__
#define DRV_ONESHOT_H__
typedef enum{
WM_UDP,
WM_APSOCKET,
WM_APWEB
}WM_ONESHOT_MODE;
typedef void (*wm_oneshot_callback)(int state, unsigned char *ssid, unsigned char *key);
extern int wm_oneshot_start(WM_ONESHOT_MODE mode, wm_oneshot_callback callback);
extern int wm_oneshot_stop(void);
extern int wm_oneshot_get(void);
#endif
+149
View File
@@ -0,0 +1,149 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-01-25 tyx add w600
*/
#include <rtthread.h>
#include <rtdevice.h>
#include "oneshot.h"
#define NET_READY_TIME_OUT (rt_tick_from_millisecond(30 * 1000))
struct join_info
{
char ssid[64];
char passwd[64];
};
static int rt_wlan_device_connetct(char *ssid, char *passwd)
{
int result = RT_EOK;
rt_uint8_t time_cnt = 0;
result = rt_wlan_connect(ssid, passwd);
if (result != RT_EOK)
{
rt_kprintf("\nconnect ssid %s error:%d!\n", ssid, result);
return result;
};
do
{
rt_thread_mdelay(1000);
time_cnt ++;
if (rt_wlan_is_ready())
{
break;
}
}
while (time_cnt <= (NET_READY_TIME_OUT / 1000));
if (time_cnt <= (NET_READY_TIME_OUT / 1000))
{
rt_kprintf("networking ready!\n");
}
else
{
rt_kprintf("wait ip got timeout!\n");
result = -RT_ETIMEOUT;
}
return result;
}
static void join_wifi_thread(void *param)
{
struct join_info *info = param;
rt_kprintf("connect wifi:%s\n", info->ssid);
if (rt_strlen(info->passwd) > 0)
{
rt_wlan_device_connetct(info->ssid, info->passwd);
}
else
{
rt_wlan_device_connetct(info->ssid, RT_NULL);
}
rt_free(info);
}
static void wm_oneshot_result_cb(int state, unsigned char *ssid, unsigned char *passwd)
{
rt_thread_t tid;
struct join_info *info;
if (state != 0)
{
rt_kprintf("Receive wifi info timeout(%d). exit!\n", state);
return;
}
if (ssid == RT_NULL)
{
rt_kprintf("SSID is NULL. exit!\n");
return;
}
rt_kprintf("Receive ssid:%s passwd:%s\n", ssid == RT_NULL ? "" : ssid, passwd == RT_NULL ? "" : passwd);
info = rt_malloc(sizeof(struct join_info));
if (info == RT_NULL)
{
return;
}
rt_memset(info, 0, sizeof(struct join_info));
rt_strncpy(info->ssid, ssid, sizeof(info->ssid));
if (passwd)
{
rt_strncpy(info->passwd, passwd, sizeof(info->passwd));
}
tid = rt_thread_create("join", join_wifi_thread, info, 2048, 22, 20);
if (tid == RT_NULL)
{
rt_free(info);
return;
}
rt_thread_startup(tid);
}
void oneshot_demo(int argc, char *argv[])
{
WM_ONESHOT_MODE mode = WM_UDP;
if (argc > 2)
{
rt_kprintf("use: %s [web]", __FUNCTION__);
return;
}
if (argc == 2)
{
if (rt_strcmp("web", argv[1]) == 0)
{
mode = WM_APWEB;
}
else if(rt_strcmp("udp", argv[1]) == 0)
{
mode = WM_UDP;
}
else
{
rt_kprintf("use: %s [web]", __FUNCTION__);
return;
}
}
if (wm_oneshot_start(mode, wm_oneshot_result_cb) == 0)
{
rt_kprintf("oneshot start...\n");
}
else
{
rt_kprintf("oneshot start failed\n");
}
}
#ifdef RT_USING_FINSH
#include "finsh.h"
MSH_CMD_EXPORT(oneshot_demo, oneshot demo);
#endif
+104 -35
View File
File diff suppressed because it is too large. Load diff
+1 -1989
View File
File diff suppressed because it is too large. Load diff
+514 -79
View File
File diff suppressed because it is too large. Load diff
+54 -16
View File
@@ -89,27 +89,61 @@
#define RT_USING_SERIAL
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_HWTIMER
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
/* Using Hardware Crypto drivers */
/* Using WiFi */
#define RT_USING_PWM
#define RT_USING_RTC
#define RT_USING_SOFT_RTC
#define RTC_SYNC_USING_NTP
#define RTC_NTP_FIRST_SYNC_DELAY 30
#define RTC_NTP_SYNC_PERIOD 3600
#define RT_USING_SPI
#define RT_USING_WDT
#define RT_USING_HWCRYPTO
#define RT_HWCRYPTO_DEFAULT_NAME "hwcryto"
#define RT_HWCRYPTO_IV_MAX_SIZE 16
#define RT_HWCRYPTO_KEYBIT_MAX_SIZE 256
#define RT_HWCRYPTO_USING_AES
#define RT_HWCRYPTO_USING_AES_ECB
#define RT_HWCRYPTO_USING_AES_CBC
#define RT_HWCRYPTO_USING_MD5
#define RT_HWCRYPTO_USING_SHA1
#define RT_HWCRYPTO_USING_RNG
#define RT_HWCRYPTO_USING_CRC
#define RT_HWCRYPTO_USING_CRC_07
#define RT_HWCRYPTO_USING_CRC_8005
#define RT_HWCRYPTO_USING_CRC_1021
#define RT_HWCRYPTO_USING_CRC_04C11DB7
#define RT_HWCRYPTO_USING_BIGNUM
#define RT_HWCRYPTO_USING_BIGNUM_EXPTMOD
#define RT_HWCRYPTO_USING_BIGNUM_MULMOD
#define RT_USING_WIFI
#define RT_WLAN_DEVICE_STA_NAME "wlan0"
#define RT_WLAN_DEVICE_AP_NAME "wlan1"
#define RT_WLAN_DEFAULT_PROT "lwip"
#define RT_WLAN_SCAN_WAIT_MS 10000
#define RT_WLAN_CONNECT_WAIT_MS 10000
#define RT_WLAN_SSID_MAX_LENGTH 32
#define RT_WLAN_PASSWORD_MAX_LENGTH 32
#define RT_WLAN_DEV_EVENT_NUM 2
#define RT_WLAN_MANAGE_ENABLE
#define RT_WLAN_SCAN_WAIT_MS 10000
#define RT_WLAN_CONNECT_WAIT_MS 10000
#define RT_WLAN_SCAN_SORT
#define RT_WLAN_MSH_CMD_ENABLE
#define RT_WLAN_AUTO_CONNECT_ENABLE
#define AUTO_CONNECTION_PERIOD_MS 2000
#define RT_WLAN_CFG_ENABLE
#define RT_WLAN_CFG_INFO_MAX 3
#define RT_WLAN_PROT_ENABLE
#define RT_WLAN_PROT_NAME_LEN 8
#define RT_WLAN_PROT_MAX 2
#define RT_WLAN_DEFAULT_PROT "lwip"
#define RT_WLAN_PROT_LWIP_ENABLE
#define RT_WLAN_PROT_LWIP_NAME "lwip"
#define RT_WLAN_WORK_THREAD_ENABLE
#define RT_WLAN_WORKQUEUE_THREAD_NAME "wlan_job"
#define RT_WLAN_WORKQUEUE_THREAD_SIZE 2048
#define RT_WLAN_WORKQUEUE_THREAD_PRIO 22
#define RT_WLAN_DEV_EVENT_NUM 2
/* Using USB */
@@ -184,9 +218,6 @@
#define LWIP_NETIF_LOOPBACK 0
#define RT_LWIP_USING_PING
/* Modbus master and slave stack */
/* AT commands */
#define LWIP_USING_DHCPD
@@ -224,6 +255,13 @@
/* Wiced WiFi */
#define PKG_USING_NETUTILS
#define PKG_NETUTILS_NTP
#define NETUTILS_NTP_TIMEZONE 8
#define NETUTILS_NTP_HOSTNAME "cn.ntp.org.cn"
#define NETUTILS_NTP_HOSTNAME2 "ntp.rt-thread.org"
#define NETUTILS_NTP_HOSTNAME3 "edu.ntp.org.cn"
#define PKG_USING_NETUTILS_V110
/* IoT Cloud */
@@ -262,8 +300,7 @@
/* W60x Device config */
#define SOC_W600_A8xx
/* Hardware Drivers Config */
#define W600_EV_BOARD
/* On-chip Peripheral Drivers */
@@ -272,7 +309,8 @@
#define BSP_USING_PIN
#define BSP_USING_WIFI
/* Offboard Peripheral Drivers */
/* External Libraries */
#define WM_USING_ONESHOT
#endif
+13 -3
View File
@@ -1,4 +1,5 @@
import os
import sys
# toolchains options
ARCH='arm'
@@ -27,6 +28,15 @@ if os.getenv('RTT_EXEC_PATH'):
BUILD = 'debug'
if os.path.exists(os.path.abspath('./') + '/drivers'):
gcc_linkscripts_path = 'drivers/linker_scripts/link.lds'
armcc_linkscripts_path = 'drivers/linker_scripts/link.sct'
iar_linkscripts_path = 'drivers/linker_scripts/link.icf'
else:
gcc_linkscripts_path = '../../drivers/linker_scripts/link.lds'
armcc_linkscripts_path = '../../drivers/linker_scripts/link.sct'
iar_linkscripts_path = '../../drivers/linker_scripts/link.icf'
if PLATFORM == 'gcc':
# toolchains
PREFIX = 'arm-none-eabi-'
@@ -44,7 +54,7 @@ if PLATFORM == 'gcc':
DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections'
CFLAGS = DEVICE + ' -std=gnu99 -w -fno-common -fomit-frame-pointer -fno-short-enums -fsigned-char'
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -g --specs=nano.specs -nostartfiles -Wl,-Map=rtthread-w60x.map -Os -Wl,--gc-sections -Wl,--cref -Wl,--entry=Reset_Handler -Wl,--no-enum-size-warning -Wl,--no-wchar-size-warning -T ./drivers/linker_scripts/link.lds'
LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -g --specs=nano.specs -nostartfiles -Wl,-Map=rtthread-w60x.map -Os -Wl,--gc-sections -Wl,--cref -Wl,--entry=Reset_Handler -Wl,--no-enum-size-warning -Wl,--no-wchar-size-warning -T ' + gcc_linkscripts_path
CPATH = ''
LPATH = ''
@@ -69,7 +79,7 @@ elif PLATFORM == 'armcc':
DEVICE = ' --cpu=Cortex-M3'
CFLAGS = DEVICE + ' --apcs=interwork --c99 --gnu'
AFLAGS = DEVICE + ' --apcs=interwork '
LFLAGS = DEVICE + ' --scatter "./drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict'
LFLAGS = DEVICE + ' --scatter ' + armcc_linkscripts_path + ' --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict'
LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib'
EXEC_PATH += '/ARM/ARMCC/bin/'
@@ -123,7 +133,7 @@ elif PLATFORM == 'iar':
else:
CFLAGS += ' -Oh'
LFLAGS = ' --config ./drivers/linker_scripts/link.icf'
LFLAGS = ' --config ' + iar_linkscripts_path
LFLAGS += ' --entry __iar_program_start'
EXEC_PATH = EXEC_PATH + '/arm/bin/'
+15 -15
View File
@@ -728,7 +728,7 @@
</option>
<option>
<name>IlinkMapFile</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>IlinkLogFile</name>
@@ -1101,7 +1101,7 @@
</option>
<option>
<name>GEndianModeBE</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>OGBufferedTerminalOutput</name>
@@ -1132,7 +1132,7 @@
<option>
<name>GBECoreSlave</name>
<version>26</version>
<state>1</state>
<state>38</state>
</option>
<option>
<name>OGUseCmsis</name>
@@ -1149,7 +1149,7 @@
<option>
<name>CoreVariant</name>
<version>26</version>
<state>0</state>
<state>38</state>
</option>
<option>
<name>GFPUDeviceSlave</name>
@@ -1172,7 +1172,7 @@
<option>
<name>GFPUCoreSlave2</name>
<version>26</version>
<state>0</state>
<state>38</state>
</option>
<option>
<name>OGCMSISPackSelectDevice</name>
@@ -1320,7 +1320,7 @@
</option>
<option>
<name>CCSignedPlainChar</name>
<state>1</state>
<state>0</state>
</option>
<option>
<name>CCRequirePrototypes</name>
@@ -1381,7 +1381,7 @@
</option>
<option>
<name>CCOptLevelSlave</name>
<state>1</state>
<state>3</state>
</option>
<option>
<name>CompilerMisraRules98</name>
@@ -1644,15 +1644,15 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
<state>0</state>
<state>3</state>
</option>
<option>
<name>OCOutputOverride</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>OOCOutputFile</name>
<state></state>
<state>../../rtthread.bin</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1660,7 +1660,7 @@
</option>
<option>
<name>OOCObjCopyEnable</name>
<state>0</state>
<state>1</state>
</option>
</data>
</settings>
@@ -1683,7 +1683,7 @@
<archiveVersion>1</archiveVersion>
<data>
<prebuild></prebuild>
<postbuild></postbuild>
<postbuild>cmd /c "$PROJ_DIR$\makeimg.bat"</postbuild>
</data>
</settings>
<settings>
@@ -1743,7 +1743,7 @@
</option>
<option>
<name>IlinkMapFile</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>IlinkLogFile</name>
@@ -1767,11 +1767,11 @@
</option>
<option>
<name>IlinkIcfOverride</name>
<state>0</state>
<state>1</state>
</option>
<option>
<name>IlinkIcfFile</name>
<state>lnk0t.icf</state>
<state>$PROJ_DIR$\.\drivers\linker_scripts\link.icf</state>
</option>
<option>
<name>IlinkIcfFileSlave</name>
+1 -1
View File
@@ -120,7 +120,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>JL2CM3</Key>
<Name>-U20090928 -O78 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC2000 -FN1 -FF0W600_QFlash -FS08000000 -FL0100000</Name>
<Name>-U20090928 -O78 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC2000 -FN1 -FF0W60X_QFlash -FS08000000 -FL0100000</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
+2 -2
View File
@@ -300,7 +300,7 @@
<OCR_RVCT9>
<Type>0</Type>
<StartAddress>0x20000000</StartAddress>
<Size>0x3c000</Size>
<Size>0x28000</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -315,7 +315,7 @@
<Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>0</OneElfS>
<OneElfS>1</OneElfS>
<Strict>0</Strict>
<EnumInt>0</EnumInt>
<PlainCh>0</PlainCh>