CYW43907

来源:互联网 发布:机锋论坛软件区 编辑:程序博客网 时间:2024/06/10 16:41

BCM43907 CYW43907 WM-AN-BM-23
运行路径:
首先启动运行: 43xxx_Wi-Fi\WICED\platform\MCU\BCM4390x\Start_GCC.s
1. 初始化mcu寄存器,caches(dcache and icache),中断向量,MPU(Memory Protection Unit)等等功能的处理。
最后调用_start函数,转入C函数:
// Jump into C-code
LDR r0, =_start
BOOT_CHECKPOINT(6)
BLX r0
2. _start函数 在crt0_GCC.c中:
功能:
1>. Copy from flash any code to be run from RAM. 从闪存复制任何要从RAM运行的代码。
2>. 初始化系统时钟,内存。platform_init_system_clocks(); platform_init_memory();
3>. /* Copy initial values for global variables into RAM */
4>. platform_init_external_devices( );初始化串口.STDIO_UART(WICED_UART_1)
其中uart配置在platform.c 的const platform_uart_t platform_uart_peripherals[] 中。
WICED_UART_1:RF_SW_CTRL_6_UART1_RX_IN ;
硬件上:(注意:UART0并不是WICED_UART_1)
UART0 –> WICED_UART_2
UART1 –> WICED_UART_1
UART3 –> WICED_UART_3。
4>. 最后,调用main函数。 main();
5>. main调用实时os: ThreadX 的tx_kernel_enter方法进入内核。
int main(void){
……
/* Enter the ThreadX kernel. */
tx_kernel_enter( );
}

ThreadX初始化会调用tx_application_define()函数。
tx_application_define() is Called by ThreadX whilst it is initialising;
tx_application_define() 调用 application_thread_main()(wiced_rtos.c中);
application_thread_main()调用 application_start()。
application_start 是用户可见可修改的函数。(其他的一般不需要动).
application_start() 调用 wiced_init()
1. wifi.c
wiced_init() uart_info: WPRINT_WICED_INFO( (“\nStarting WICED v” WICED_VERSION “\n”) ); “Starting WICED v4.1.1”
//wiced_platform_common.c wiced_platform_init( void ) WPRINT_PLATFORM_INFO( (“Platform ” PLATFORM ” initialised\n”) );
static void app_main_thread( ULONG thread_input )
2. wiced_init调用 wiced_core_init()调用 wiced_platform_init() uart_info: “Platform BCMUSI23 initialised” (platform_filesystem_init:文件系统初始化)
wiced_init调用 wiced_rtos_init()调用 wiced_rtos_init() uart_info: WPRINT_RTOS_INFO( (“Started ” RTOS_NAME ” ” RTOS_VERSION “\n”) );//实时操作系统ThreadX.(Nuttx未用)
wiced_rtos_create_worker_thread() wiced_rtos_create_worker_thread() 创建两个线程。
3. wiced_wlan_connectivity_init()调用wiced_network_init()
uart_info:
Initialising NetX_Duo v5.7_sp2 (TCP/IP network stacks)
Creating Packet pools
4. wifi.c wiced_wlan_connectivity_init()
uart info:
WWD SoC.43909 interface initialised
WLAN MAC Address : 6C:0B:84:BE:33:3B
WLAN Firmware : wl0: Dec 19 2016 19:29:37 version 7.15.168.78 (r663126) FWID 01-8ba7c839

5.application_start()调用wiced_init()
uart_info: printf( “Console app\n” );

include “platform_config.h” 配置:

platform_config_winced_default.h : /* The main app is stored in external serial flash */#define BOOTLOADER_LOAD_MAIN_APP_FROM_EXTERNAL_LOCATION

define EXTERNAL_DCT

OTA2_SUPPORT is disabled

Unless you REALLY need to access the WICED Wi-Fi driver directly,
it should NOT be necessary to use WICED WWD APIs. Instead, please use
the standard WICED API in the /include directory.

platform_init_audio();

0 0
原创粉丝点击