mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-10-02 14:23:19 +08:00
[bsp]add bl808 wifi driver (#8294)
This commit is contained in:
@@ -201,6 +201,7 @@ Windows下推荐使用[env工具][1],在console下进入bsp/bouffalo_lab/bl61x
|
||||
| HWTIMER | 支持 | |
|
||||
| FLASH | 支持 | |
|
||||
| SDCARD | 支持 | |
|
||||
| Wi-Fi | 支持 | 仅 BL808 支持 |
|
||||
|
||||
|
||||
|
||||
|
||||
Regular → Executable
+216
-22
File diff suppressed because it is too large
Load Diff
@@ -6,14 +6,20 @@
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2022/12/25 flyingcys first version
|
||||
*/
|
||||
* 2023/11/23 flyingcys add wifi driver
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <stdio.h>
|
||||
#include <rtdevice.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
rt_kprintf("Hello, RISC-V!\n");
|
||||
|
||||
/* set wifi work mode */
|
||||
rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION);
|
||||
rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -19,3 +19,23 @@ config BSP_USING_TRIPLECORE
|
||||
config BSP_USING_PSRAM
|
||||
bool "Enable PSRAM"
|
||||
default n
|
||||
|
||||
config BSP_USING_WIFI
|
||||
bool "Enable Wi-Fi"
|
||||
default y
|
||||
select PKG_USING_WLAN_BL808
|
||||
select RT_USING_WIFI
|
||||
select RT_WLAN_PROT_LWIP_PBUF_FORCE
|
||||
select BSP_USING_PSRAM
|
||||
select RT_USING_LWIP
|
||||
|
||||
config LWIP_SUPPORT_CUSTOM_PBUF
|
||||
int
|
||||
default 1
|
||||
|
||||
config PBUF_LINK_ENCAPSULATION_HLEN
|
||||
int
|
||||
default 128
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,4 +6,12 @@ CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Board', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
objs = [group]
|
||||
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for item in list:
|
||||
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||
objs = objs + SConscript(os.path.join(item, 'SConscript'))
|
||||
|
||||
Return('objs')
|
||||
@@ -142,9 +142,25 @@ void rt_hw_board_init(void)
|
||||
|
||||
bflb_mtimer_config(CPU_Get_MTimer_Clock() / RT_TICK_PER_SECOND, systick_isr);
|
||||
|
||||
#ifdef BSP_USING_PSRAM
|
||||
if (uhs_psram_init() < 0)
|
||||
{
|
||||
rt_kprintf("uhs_psram_init failed!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
extern uint32_t __psrambss_start__;
|
||||
extern uint32_t __psrambss_end__;
|
||||
uint32_t *pDest;
|
||||
pDest = &__psrambss_start__;
|
||||
|
||||
for (; pDest < &__psrambss_end__;) {
|
||||
*pDest++ = 0ul;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
/* initialize memory system */
|
||||
rt_kprintf("RT_HW_HEAP_BEGIN:%x RT_HW_HEAP_END:%x size: %d\r\n", RT_HW_HEAP_BEGIN, RT_HW_HEAP_END, RT_HW_HEAP_END - RT_HW_HEAP_BEGIN);
|
||||
rt_system_heap_init(RT_HW_HEAP_BEGIN, RT_HW_HEAP_END);
|
||||
#endif
|
||||
|
||||
@@ -153,13 +169,6 @@ void rt_hw_board_init(void)
|
||||
rt_hw_uart_init();
|
||||
#endif
|
||||
|
||||
#ifdef BSP_USING_PSRAM
|
||||
if (uhs_psram_init() < 0)
|
||||
{
|
||||
rt_kprintf("uhs_psram_init failed!\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Set the shell console output device */
|
||||
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
@@ -189,6 +198,10 @@ void rt_hw_board_init(void)
|
||||
BL_WR_WORD(IPC_SYNC_ADDR2, IPC_SYNC_FLAG);
|
||||
L1C_DCache_Clean_By_Addr(IPC_SYNC_ADDR1, 8);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
rt_kprintf("RT_HW_HEAP_BEGIN:%x RT_HW_HEAP_END:%x size: %d\r\n", RT_HW_HEAP_BEGIN, RT_HW_HEAP_END, RT_HW_HEAP_END - RT_HW_HEAP_BEGIN);
|
||||
#endif
|
||||
}
|
||||
|
||||
void rt_hw_cpu_reset(void)
|
||||
|
||||
@@ -26,9 +26,12 @@ MEMORY
|
||||
xip_memory (rx) : ORIGIN = 0x58000000, LENGTH = 32M
|
||||
itcm_memory (rx) : ORIGIN = 0x62020000, LENGTH = 20K
|
||||
dtcm_memory (rx) : ORIGIN = 0x62025000, LENGTH = 4K
|
||||
nocache_ram_memory (!rx) : ORIGIN = 0x22026000, LENGTH = 40K
|
||||
ram_memory (!rx) : ORIGIN = 0x62030000, LENGTH = 160K + 64K - 20K - 4K - 40K
|
||||
nocache_ram_memory (!rx) : ORIGIN = 0x22026000, LENGTH = 0K
|
||||
ram_memory (!rx) : ORIGIN = 0x22026000, LENGTH = 40K
|
||||
ram_wifi (!rx) : ORIGIN = 0x22030000, LENGTH = 96K
|
||||
ram_dram (wxa) : ORIGIN = 0x3EF80000, LENGTH = 512K
|
||||
xram_memory (!rx) : ORIGIN = 0x40000000, LENGTH = 16K
|
||||
ram_psram (!rx) : ORIGIN = 0x50000000, LENGTH = 1M
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@@ -97,6 +100,12 @@ SECTIONS
|
||||
*(.srodata)
|
||||
*(.srodata.*)
|
||||
|
||||
/* static fw attribute entry */
|
||||
. = ALIGN(4);
|
||||
_bl_static_fw_cfg_entry_start = .;
|
||||
KEEP(*(.wifi.cfg.entry))
|
||||
_bl_static_fw_cfg_entry_end = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
__text_code_end__ = .;
|
||||
} > xip_memory
|
||||
@@ -209,19 +218,74 @@ SECTIONS
|
||||
__etext_final = (__ram_load_addr + SIZEOF (RAM_DATA));
|
||||
ASSERT(__etext_final <= ORIGIN(xip_memory) + LENGTH(xip_memory), "code memory overflow")
|
||||
|
||||
.wifibss (NOLOAD) :
|
||||
{
|
||||
PROVIDE( __wifi_bss_start = ADDR(.wifibss) );
|
||||
PROVIDE( __wifi_bss_end = ADDR(.wifibss) + SIZEOF(.wifibss) );
|
||||
*ipc_shared.o(COMMON)
|
||||
*sdu_shared.o(COMMON)
|
||||
*hal_desc.o(COMMON)
|
||||
*txl_buffer_shared.o(COMMON)
|
||||
*txl_frame_shared.o(COMMON)
|
||||
*scan_shared.o(COMMON)
|
||||
*scanu_shared.o(COMMON)
|
||||
*mfp_bip.o(COMMON)
|
||||
*me_mic.o(COMMON)
|
||||
*bl_sta_mgmt_others.o(COMMON)
|
||||
*bl_pmk_mgmt.o(COMMON)
|
||||
*bl_pmk_mgmt_internal.o(COMMON)
|
||||
*libwifi_drv.a:bl_utils.o(COMMON)
|
||||
*libwifi_drv.a:bl_utils.o(.bss*)
|
||||
*(.wifi_ram*)
|
||||
. = ALIGN(16);
|
||||
} > ram_wifi
|
||||
|
||||
.bss (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
__bss_start__ = .;
|
||||
|
||||
*(.bss*)
|
||||
*interrupt*.o*(.bss*)
|
||||
*riscv_fpu*.o*(.bss*)
|
||||
*start*.o*(.bss*)
|
||||
*system_bl808*.o*(.bss*)
|
||||
*vector*.o*(.bss*)
|
||||
*bl808_*.o*(.bss*)
|
||||
*bflb_*.o*(.bss*)
|
||||
|
||||
*(.sbss*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
__bss_end__ = .;
|
||||
} > ram_memory
|
||||
|
||||
.drambss (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
__drambss_start__ = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
__drambss_end__ = .;
|
||||
} > ram_dram
|
||||
|
||||
.psrambss (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
__psrambss_start__ = .;
|
||||
|
||||
*(EXCLUDE_FILE( *interrupt*.o* \
|
||||
*riscv_fpu*.o* \
|
||||
*start*.o* \
|
||||
*system_bl808*.o* \
|
||||
*vector*.o* \
|
||||
*bl808_*.o* \
|
||||
*bflb_*.o* ) .bss*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
__psrambss_end__ = .;
|
||||
} > ram_psram
|
||||
|
||||
.noinit_data (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
@@ -256,10 +320,15 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
__HeapLimit = .;
|
||||
} > ram_memory
|
||||
} > ram_psram
|
||||
|
||||
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
|
||||
__HeapLimit = ORIGIN(ram_psram) + LENGTH(ram_psram);
|
||||
ASSERT(__HeapLimit - __HeapBase >= HeapMinSize, "heap region overflow")
|
||||
|
||||
PROVIDE( _ld_ram_size2 = LENGTH(ram_wifi) );
|
||||
PROVIDE( _ld_ram_addr2 = ORIGIN(ram_wifi) );
|
||||
|
||||
PROVIDE( _ld_bl_static_cfg_entry_start = _bl_static_fw_cfg_entry_start );
|
||||
PROVIDE( _ld_bl_static_cfg_entry_end = _bl_static_fw_cfg_entry_end );
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c') + Glob('*.cpp')
|
||||
CPPPATH = [cwd]
|
||||
group = DefineGroup('drv_wifi', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
File diff suppressed because it is too large
Load Diff
+16
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2023, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2023/11/23 flyingcys first version
|
||||
*/
|
||||
|
||||
#ifndef __DRV_WIFI_H__
|
||||
#define __DRV_WIFI_H__
|
||||
|
||||
#include "bl808_wifi.h"
|
||||
|
||||
#endif /* __DRV_WIFI_H__ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -88,5 +88,11 @@ void start_load(void)
|
||||
*pDest++ = 0ul;
|
||||
}
|
||||
|
||||
extern uint32_t __wifi_bss_start;
|
||||
extern uint32_t __wifi_bss_end;
|
||||
pDest = &__wifi_bss_start;
|
||||
for ( ; pDest < &__wifi_bss_end ; ) {
|
||||
*pDest++ = 0ul;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -119,6 +119,15 @@ void System_Post_Init(void)
|
||||
/* make D0 all ram avalable for mcu usage */
|
||||
GLB_Set_DSP_L2SRAM_Available_Size(3, 1, 1, 1);
|
||||
|
||||
extern uint32_t __drambss_start__;
|
||||
extern uint32_t __drambss_end__;
|
||||
uint32_t *pDest;
|
||||
pDest = &__drambss_start__;
|
||||
|
||||
for (; pDest < &__drambss_end__;) {
|
||||
*pDest++ = 0ul;
|
||||
}
|
||||
|
||||
/* global IRQ enable */
|
||||
__enable_irq();
|
||||
}
|
||||
Reference in New Issue
Block a user