Hi everyone,
I'm reading the BIOS_Workshop_Student_Guide_Rev5_93.pdf and spru423i.pdf to understand how does the BIOS DSP works on CCS but I've some problems to clarify.
I'd like if someone can explain me in a few words the concepts of MAILBOX (how does it work?when and where it is used?) and the concept of semaphore correlated to the tsk.
I'm trying to use the G3_PHY_EXAMPLE_PROJECT to my purpose and I'd like to understend the code. I post here the .c file that is present the call at Mailbox.
/***************************************************************************** * FILE PURPOSE: This file implements PTXM Thread Functions ******************************************************************************* * * FILE NAME: PHY_tx_thread.c * * DESCRIPTION: * This file contains functions used for PHY TX OS thread related functions. * Note: This file is not included in the PHY library. User is expected * to provide OS hooks. * * Copyright (c) 2009 Texas Instruments Inc. * All Rights Reserved This program is the confidential and proprietary * product of Texas Instruments Inc. Any Unauthorized use, reproduction or * transfer of this program is strictly prohibited. * * HISTORY: * * 03/10/2009 fum Written * * LIST OF FUNCTIONS: * * ******************************************************************************/ #include <phy_tx.h> #include <phy_tx_swi.h> #include <hal_afe.h> #ifdef F2806X #include <test_tx_rx_f2806xcfg.h> #elif defined (F28M35X) #include <test_tx_rx_f28m35xcfg.h> #else #include <test_tx_rxcfg.h> #endif //void PHY_tx_sema_post(); //void PHY_tx_sema_reg(PHY_tx_sema_post_func_t func_p); /****************************************************************************** * FUNCTION NAME: PHY_tx_thread * * DESCRIPTION: PHY TX thread for bit processing. Lower priority. * * Return Value: None * * Input Parameters: * * Output Parameters: * Functions Called: * ******************************************************************************/ void PHY_tx_thread() { PHY_txMsg_t phyTxMsg; // may have problem PHY_txPpduStartCbReg(PHY_tx_mbx_post); while(1) { MBX_pend(&PHY_TX_QUE, &phyTxMsg, SYS_FOREVER); if (phyTxMsg.stage == 0) { // generate preamble PHY_txSmRun(0); } else if (phyTxMsg.stage == 1) { // call PHY library API for bit processing #ifndef P1901_2_FCC // F28069 FCC band: process the bit level in txPpdu for MIPS savings if (PHY_handle_s.band < PHY_MODE_FCC) #endif PHY_txSmRun(1); } } } /****************************************************************************** * FUNCTION NAME: PHY_tx_swi_proc * * DESCRIPTION: PHY TX SWI for symbol processing state machine. High priority. * * Return Value: None * * Input Parameters: * * Output Parameters: * Functions Called: * ******************************************************************************/ Uint32 swiCnt=0; void PHY_tx_swi_proc(void) { // call PHY library API for symbol processing state machine PHY_txSmRun(2); swiCnt++; } /****************************************************************************** * FUNCTION NAME: PHY_tx_dma_bios_isr * * DESCRIPTION: PHY TX DMA interrupt service routine (ISR). * This ISR posts PHY_TX_SWI for symbol processing. * * Return Value: None * * Input Parameters: * * Output Parameters: * Functions Called: * ******************************************************************************/ void PHY_tx_dma_bios_isr(void) { // call HAL library API HAL_afeTxDmaCh2IntFunc(); // post SWI SWI_post(&PHY_TX_SWI); } /****************************************************************************** * FUNCTION NAME: PHY_tx_sema_post * * DESCRIPTION: PHY TX semaphore post. * * Return Value: None * * Input Parameters: * * Output Parameters: * Functions Called: * ******************************************************************************/ void PHY_tx_mbx_post(PHY_ev_t eventID, PHY_cbData_t *cbData_p) { PHY_txMsg_t phyTxMsg; phyTxMsg.stage = cbData_p->cbParms.txStage.stage; MBX_post(&PHY_TX_QUE, &phyTxMsg, 0); } void sys_init_phy_tx() { /* Initialize PHY TX and HAL TX HW */ PHY_txInit(); }
Thanks for the support,
Best
Andrea