Quantcast
Channel: Embedded Software (Read Only)
Viewing all 25965 articles
Browse latest View live

Forum Post: RTOS/CC2650STK: CC2650 Sensor Tag UART Log posting Write Semaphore

$
0
0
Part Number: CC2650STK Tool/software: TI-RTOS Hello Ti DEV Team I have one question. CC2650 Sensor Tag UART Log posting Write Semaphore whiles.. [Whileing...] i find e2e website and porting for Sensortag Source. https://e2e.ti.com/support/embedded/tirtos/f/355/t/563370 processors.wiki.ti.com/.../File:Cc26xx_uart_log_loggercallback_example.zip DEV PC O/S : Windows 7 CCS Version : 7.0 Compiler Version : Ti v5.2.6 DEV Board : CC2650STK + TI SimpleLink DevPack DEV Board : CC2650 Launchpad Base Source CC2650STK in addition files for ' CC2650 Launchpad' for Base Source CC2650 Project Zero add files : uart_logs.h , uart_logs.c, Driver [uart.c, uart.h,uartCC26XX.c,uartCC26XX.h] pre-define add for [app_ble.cfg] //edit kevin.ko 17-02-28 // Need Text loaded for formatting of Log_info/warning/error, but not for Log_print. Text.isLoaded = true; // Logging var Log = xdc.useModule('xdc.runtime.Log'); // Override error output color with ANSI codes, and use shorter (file.c:line) format. Log.L_error = { mask: Diags.STATUS, level: Diags.ERROR, msg: "\x1b[31;1mERROR:\x1b[0m (%s:%d) %$S" }; Log.L_info = { mask: Diags.INFO, msg: "\x1b[32;1mINFO:\x1b[0m (%s:%d) %$S" }; Log.L_warning = { mask: Diags.STATUS, level: Diags.WARNING, msg: "\x1b[33;1mWARNING:\x1b[0m (%s:%d) %$S" }; // Pull in LoggerCallback var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback'); // Tell LoggerCallback to call our output function LoggerCallback.outputFxn = "&uartLog_outputFxn"; // Tell the Idle module to add our flush() function to the idle loop (before Power) var Idle = xdc.useModule('ti.sysbios.knl.Idle'); // Add if Idle isn't already imported. Idle.addFunc('&uartLog_flush'); // Create a static instance of LoggerCallback and set as default Main logger var loggerParams = new LoggerCallback.Params(); loggerParams.arg = 1; // Only for Main (code that's not in an rtsc module) Main.common$.logger = LoggerCallback.create(loggerParams); //Defaults.common$.logger = LoggerCallback.create(loggerParams); // Use for all log events // Turn on USER1 logs and INFO in Main module (user code). Turn off USER2 for fun. Main.common$.diags_USER1 = Diags.ALWAYS_ON; Main.common$.diags_USER2 = Diags.ALWAYS_OFF; Main.common$.diags_USER6 = Diags.ALWAYS_ON; Main.common$.diags_INFO = Diags.ALWAYS_ON;

Forum Post: RE: RTOS/CC2650STK: CC2650 Sensor Tag UART Log posting Write Semaphore

$
0
0
addition uart_logs.c /* * Filename: uart_logs.c * * Description: This file contains the TI-RTOS hooks for printing to UART via * Log_xx(..). See function comments below for how to add. * * This is a very basic implementation made for the purposes of * terminal feedback in workshops, trainings and debug. * * These functions are designed to work with the LoggerCallback * log module in the xdc runtime package. * * LoggerCallback does not provide timestamps or serial numbers * for the log evens, so this is provided here. * * To use Log_info/warning/error, add the Log header to your file * #include * * To use Log_print, also add xdc/runtime/Diags.h for * Log_print1(Diags_USER1, "Your log number %u", number); * * Copyright (c) 2015, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /********************************************************************* * INCLUDES */ #include #include #include #include #include #include #include #include #include #include #include #include "uart_logs.h" /********************************************************************* * CONSTANTS */ #ifndef UARTLOG_NUM_EVT_BUF # define UARTLOG_NUM_EVT_BUF 16 /* Max log records in real-time buffer */ #endif #ifndef UARTLOG_OUTBUF_LEN # define UARTLOG_OUTBUF_LEN 168 /* Size of buffer used for log printout */ #endif /********************************************************************* * MACROS */ /********************************************************************* * TYPEDEFS */ /* Local reduced copy of Log_EventRec */ typedef struct { //xdc_runtime_Types_Timestamp64 tstamp; /* Provided by some Logger modules */ uint32_t tstamp_cust; /* 16.16 fractional from RTC */ //xdc_Bits32 serial; /* Provided by some Logger modules */ //xdc_runtime_Types_Event evt; /* EventID and ModuleID */ uint16_t serial_cust; /* Only 16-bit serial in this impl.*/ uint16_t evt_cust; /* Only event, no module ID. */ __TA_xdc_runtime_Log_EventRec__arg arg; /* Arguments given to log_xx(...); */ } uartLog_EventRec; /********************************************************************* * LOCAL VARIABLES */ #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) static UART_Handle hUart = NULL; char uartLog_outBuf[UARTLOG_OUTBUF_LEN + 4]; uartLog_EventRec uartLog_evBuf[UARTLOG_NUM_EVT_BUF]; uint8_t uartLog_tail = 0; uint8_t uartLog_head = 0; uint8_t uartLog_evBufIsEmpty = true; uint16_t uartLog_evtNum = 1; #endif /********************************************************************* * LOCAL FUNCTIONS */ #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) static void uartLog_doPrint(uartLog_EventRec *er); #endif /********************************************************************* * PUBLIC FUNCTIONS */ /********************************************************************* * @fn UartLog_init * * @brief Initializes module with the handle to the UART. * * @param handle - UART driver handle to an initialized and opened UART. * * @return None. */ void UartLog_doInit(UART_Handle handle) { #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) hUart = handle; #endif } /********************************************************************* * SYSTEM HOOK FUNCTIONS */ /********************************************************************* * @fn uartLog_outputFxn * * @brief User supplied LoggerCallback output function. * typedef Void (*LoggerCallback_OutputFxn)(UArg,Log_EventRec*,Int); * * This function is called whenever the LoggerCallback module needs * to output a log event. * * This implementation fills a very basic ring-buffer with log records, * with relatively low overhead, and relies on another function to * convert log records to text and transmit the string out on UART. * * Requires LoggerCallback to be the ILogger provider module. * Initialized via LoggerCallback.outputFxn = "&uartLog_outputFxn"; * in the TI-RTOS configuration script. * * Note that Log must be included as well to use the interface, and * a LoggerCallback instance must be made and assigned as default. * In total, therefore: * * var Log = xdc.useModule('xdc.runtime.Log'); * var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback'); * * LoggerCallback.outputFxn = "&uartPrintf_logOutputFxn"; * * var loggerParams = new LoggerCallback.Params(); * Defaults.common$.logger = LoggerCallback.create(loggerParams); * * @param a0 - User supplied argument when creating the LoggerCallback logger. * pRec - Pointer to Log_EventRec created by LoggerCallback * numArgs - Number of arguments used in pRec. * * @return None. * * @post ::uartLog_head is incremented, and if it becomes equal to _tail, * both are moved together, discarding the oldest record. */ void uartLog_outputFxn(UArg a0, Log_EventRec *pRec, int32_t numArgs) { #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) unsigned int key; uint8_t moveTail = 0; /* Disable interrupts while adding record */ key = Hwi_disable(); /* Copy into current head */ //uartLog_evBuf[uartLog_head].tstamp = pRec->tstamp; /* If real Log_EvtRec */ uartLog_evBuf[uartLog_head].tstamp_cust = AONRTCCurrentCompareValueGet(); uartLog_evBuf[uartLog_head].serial_cust = uartLog_evtNum; uartLog_evtNum++; //uartLog_evBuf[uartLog_head].serial = pRec->serial; /* If LogEvtRec */ uartLog_evBuf[uartLog_head].evt_cust = pRec->evt >> 16; /* Ignore ModuleID */ memcpy(uartLog_evBuf[uartLog_head].arg, pRec->arg, sizeof(__TA_xdc_runtime_Log_EventRec__arg)); /* Copy log arguments */ /* Discard oldest if buffer is full */ if ( !uartLog_evBufIsEmpty && (uartLog_head == uartLog_tail) ) { moveTail = 1; } /* Increment head with wrap */ uartLog_head += 1; if (uartLog_head == UARTLOG_NUM_EVT_BUF) { uartLog_head = 0; } if (moveTail) { uartLog_tail = uartLog_head; } /* This is used to discern whether head==tail means empty or full*/ uartLog_evBufIsEmpty = false; /* Let mayhem commence */ Hwi_restore(key); #endif }; /********************************************************************* * @fn uartLog_flush * * @brief Log-buffer flush function * * In this implementation it is intended to be called by the * Idle task when nothing else is running. * * This is achieved by setting up the Idle task in the TI-RTOS * configuration script like so: * * var Idle = xdc.useModule('ti. sysbios .knl.Idle'); * Idle.addFunc('&uartLog_flush'); * * NOTE: This must be added _before_ the Power driver is included, in order * to output the pending log messages before going to sleep. * * Uses a utility function to convert a log record to a user-friendlier * string which is then printed to UART. * * @param None. Relies on global state. * * @return None. * * @post ::uartLog_tail is incremented to where uartLog_head is, then returns */ void uartLog_flush() { #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) unsigned int key; /* Local copy of current event record. To keep atomic section short. */ uartLog_EventRec curRec; /* If we don't have UART, don't bother. */ if (NULL == hUart) return; /* In the Idle function (this) send all messages. Will be preempted. */ while(!uartLog_evBufIsEmpty) { /* Atomic section while manipulating the buffer. */ key = Hwi_disable(); /* Extract oldest and move tail */ curRec = uartLog_evBuf[uartLog_tail]; uartLog_tail = (uartLog_tail + 1) % UARTLOG_NUM_EVT_BUF; if (uartLog_tail == uartLog_head) uartLog_evBufIsEmpty = true; /* Let the others play. */ Hwi_restore(key); /* Prepare log string from record, and print to UART. */ uartLog_doPrint(&curRec); } #endif } /********************************************************************* * INTERNAL FUNCTIONS */ /********************************************************************* * @fn uartLog_doPrint * * @brief Converts log records to strings. * * This is a copy of ti.xdc.runtime.Log's doPrint method, but * instead of calling System_printf, it writes into a static buffer * which is then sent to the UART driver as an atomic unit. * * @param er - Log_EventRecord to be parsed and output. * * @return None. */ #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) static void uartLog_doPrint(uartLog_EventRec *er) { Text_RopeId rope; char *fmt; //uint32_t hi, lo; char *bufPtr = uartLog_outBuf; char *bufEndPtr = uartLog_outBuf + UARTLOG_OUTBUF_LEN - 2; // Less 2 for \r\n /* print serial number if there is one; 0 isn't a valid serial number */ if (er->serial_cust) { System_snprintf(bufPtr, (bufEndPtr - bufPtr), "#%06u ", er->serial_cust); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } /* print timestamp if there is one; ~0 isn't a valid timestamp value */ /* Formatting of Log_EvtRec timestamps. But LoggerCallback doesn't provide. hi = er->tstamp.hi; lo = er->tstamp.lo; if (lo != ~0 && hi != ~0) { System_snprintf(bufPtr, (bufEndPtr - bufPtr), "[t=0x"); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); if (hi) { System_snprintf(bufPtr, (bufEndPtr - bufPtr), HI, hi); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } System_snprintf(bufPtr, (bufEndPtr - bufPtr), LO, lo); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } */ uint16_t seconds = er->tstamp_cust>>16; uint16_t ifraction = er->tstamp_cust & 0xFFFF; int fraction = (int)((double)ifraction/65536 * 1000); // Get 3 decimals System_snprintf(bufPtr, (bufEndPtr - bufPtr), "[ %d.%03u ] ", seconds, fraction); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); /* print module name. This is ignored in this implementation. Text_putMod((Text_RopeId)Types_getModuleId(er->evt), &bufPtr, -1); System_snprintf(bufPtr, (bufEndPtr - bufPtr), ": "); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); */ /* Ouput everything till now and start over in the buffer. */ UART_write(hUart, uartLog_outBuf, (bufPtr - uartLog_outBuf)); bufPtr = uartLog_outBuf; /* print event */ /* rope = Types_getEventId(er->evt); */ /* the event id is the message rope */ rope = er->evt_cust; /* Don't need getEventId as we already have it */ if (rope == 0) { /* Log_print() event */ System_snprintf(bufPtr, (bufEndPtr - bufPtr), (String)iargToPtr(er->arg[0]), er->arg[1], er->arg[2], er->arg[3], er->arg[4], er->arg[5], er->arg[6], 0, 0); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } else { /* Log_write() event */ fmt = Text_ropeText(rope); if (Text_isLoaded) { System_snprintf(bufPtr, (bufEndPtr - bufPtr), fmt, er->arg[0], er->arg[1], er->arg[2], er->arg[3], er->arg[4], er->arg[5], er->arg[6], er->arg[7]); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } else { System_snprintf(bufPtr, (bufEndPtr - bufPtr), "{evt: fmt=%p, args=[0x%x, 0x%x ...]}", fmt, er->arg[0], er->arg[1]); bufPtr = uartLog_outBuf + strlen(uartLog_outBuf); } } *bufPtr++ = '\r'; *bufPtr++ = '\n'; UART_write(hUart, uartLog_outBuf, (bufPtr - uartLog_outBuf)); } #endif uart_logs.h /* * Filename: uart_log.h * * Description: This file contains the TI-RTOS hooks for printing to UART via * Log_xx(..). * * This is a very basic implementation made for the purposes of * terminal feedback in workshops, trainings and debug. * * * Copyright (c) 2015, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UART_LOG_H #define UART_LOG_H #ifdef __cplusplus extern "C" { #endif /********************************************************************* * INCLUDES */ #include #include /********************************************************************* * CONSTANTS */ /********************************************************************* * MACROS */ #if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL) # define UartLog_init(x) UartLog_doInit(x) #else # define UartLog_init(x) #endif /********************************************************************* * TYPEDEFS */ /********************************************************************* * PUBLIC FUNCTIONS */ /********************************************************************* * @fn UartLog_doInit * * @brief Initializes module with the handle to the UART. * * @param handle - UART driver handle to an initialized and opened UART. * * @return None. */ void UartLog_doInit(UART_Handle handle); #ifdef __cplusplus } #endif #endif // UART_LOG_H

Forum Post: RE: RTOS/OMAP-L138: C6748 DSP: dynamic creating of a UART device using DEV_createDevice fails.

$
0
0
Hi Vincent, thanks for your tips! The static DSP configuration doesn't use any UARTS. The GPP RTOS QNX also doesn't know that there is a UART at the address 0x01D0D000. The GPP uses on chip UART0 only. I reviewed the function uartMdBindDev() in pspdrivers_01_30_01\packages\ti\pspiom\uart\src\Uart.c. The followig conditions may result in returning IOM_EBADMODE: condition (1) (TRUE == Uart_module.inUse[devId]) /* this instance is already in use */ The code lines below I've moved from my function user_uart2_init() to the function Uart_createdev() which is calling DEV_createDevice(). So these lines are executed now before the DEV_createDevice() call occurs. uart2Params = Uart_PARAMS; uart2Params.hwiNumber = 9; uart2Params.opMode = Uart_OpMode_DMAINTERRUPT; uart2Params.rxThreshold = Uart_RxTrigLvl_1; uart2Params.softTxFifoThreshold = 1; Uart_init(); uart2debug.dev_createDevice_result = DEV_createDevice("/UART2", &Uart_IOMFXNS, (Fxn)user_uart2_init, &uart2devattrs); Calling the function Uart_init() from pspiom\uart\src\Uart.c is clearing the array Uart_module.inUse[]. Since calling now this initialization before calling DEV_createDevice() the condition (1) should never be TRUE. condition (2) (Uart_DriverState_DELETED != instHandle->devState) /* this instance is already created elsewhere, its not deleted */ Calling the function Uart_init() is filling the structures for all instances with 0. Since the enum Uart_DriverState_DELETED is 0 the condition (2) should also never be TRUE. condition (3) (0 == params->hwiNumber) /* invalid parameter */ Since calling now my initialization lines before calling DEV_createDevice() this register should be already set to 9 and the condition (3) should never be TRUE. condition (4) (IOM_COMPLETED != uartValidateParams(params)) /* invalid parameter */ Since calling now my initialization line uart2Params = Uart_PARAMS; before calling DEV_createDevice() these registers should contain valid data only and so the condition (4) should always be FALSE. To review the function DEV_createDevice() was not possible for me because I didn't found any source code of this function anywhere in my folders bios_5_41_03_17\packages\ti\bios\ pspdrivers_01_30_01\packages\ti\pspiom May be that there is something wrong with the parameters or arguments I hand over to the function DEV_createDevice()? Does the power management have any impact to creation of a UART device? In pspdrivers_01_30_01\packages\ti\pspiom\uart\src\Uart.c there is returned this failure in relation to PWRM functions. Best regards, Uwe

Forum Post: RTOS/TI-RTOS-MCU: ti.sysbios.family.arm.m3.Hwi: line 1095: E_hardFault: FORCED

$
0
0
Part Number: TI-RTOS-MCU Tool/software: TI-RTOS Hi, I am using CCS V6, TI-RTOS V2.16 Our need is to use Ethernet and Wifi on the TM4C1294XL and CC3100BP. I created one project, with this I can able to send http/https over Ethernet. To use wifi in the same project I am following the Gateway Design suggested by TI. So, I created one more project "Wifi" which is a exact copy of the "getting_started_with_wlan_station" example project come with " CC3100 SDK" to the target "TM4C1294XL with CC3100 " with output type is ".lib". I included this .lib to my main project such as "Connectivity" and I am using the Gateway RTOS config for this project. On debugging this to my tiva board, it was getting terminating by printing some issue on the console, ti. sysbios .family.arm.m3.Hwi: line 1095: E_hardFault: FORCED ti. sysbios .family.arm.m3.Hwi: line 1172: E_busFault: IMPRECISERR: Delayed Bus Fault, exact addr unknown, address: e000ed38 Exception occurred in ISR thread at PC = 0x0002f6ec. Core 0: Exception occurred in ThreadType_Hwi. Hwi name: {unknown-instance-name}, handle: 0x20000408. Hwi stack base: 0x2002a3f8. Hwi stack size: 0x2000. R0 = 0x87200746 R8 = 0x0003b3d4 R1 = 0x2002c308 R9 = 0xffffffff R2 = 0x00000002 R10 = 0xffffffff R3 = 0x2002c344 R11 = 0xffffffff R4 = 0x0002b51d R12 = 0x2002a388 R5 = 0x00000000 SP(R13) = 0x2002c308 R6 = 0x00000001 LR(R14) = 0x0002f6e9 R7 = 0x00000001 PC(R15) = 0x0002f6ec PSR = 0x81000043 ICSR = 0x00423003 MMFSR = 0x00 BFSR = 0x04 UFSR = 0x0000 HFSR = 0x40000000 DFSR = 0x0000000b MMAR = 0xe000ed34 BFAR = 0xe000ed38 AFSR = 0x00000000 Terminating execution... The project was found in the ttach.(Main:Gateway, Interface: Wifi) (Please visit the site to view this file) Please find the attach and help us to solve the issue. And one more thing in the original project "getting_started_with_wlan_station" it has include the library "driverlib.lib" in the directory "C:\ti\tirex-content\tirtos_tivac_2_16_00_08\products\TivaWare_C_Series-2.1.1.71b\driverlib\ccs\Debug" I dont know how to include .lib to this project as the properties not giving the "ARM Link" options, so I included in the same library in the "Connectivity" and commented "ROM_GPIOPinWrite()" called in board.c to avoid compilation errors. Please find my attached project and help us if you can. Regards, Raghu DS

Forum Post: RE: Linux/AM5728: Linux loading log output to display

$
0
0
Hello Alexander, Change the cosnole to tty0. => setenv cosnole tty0 Best regards, Kemal

Forum Post: Linux/TLV320AIC3106: Unable to sync register issue

$
0
0
Part Number: TLV320AIC3106 Tool/software: Linux Hi Community Members, I am working on the latest TI-SDK ti-am335x-03.02.00.05 on our custom board. We have migrated from previous ti-sdk-am335x-evm-7.0 to the latest one due to customer requirements. The codec was working on the previous SDK.But after doing the same changes in the new SDK we are getting error. Here is the log for speaker-test: root@ngt:~/test# speaker-test speaker-test 1.0.26 Playback device is default Stream parameters are 48000Hz, S16_LE, 1 channels Using 16 octaves of pink noise[ 254.885924] tlv320aic3x-codec 1-001b: Unable to sync registers 0x1-0x1. -121 Rate set to 48000Hz (requested 48000Hz) Buffer size range from 256 to 32768 Period size range from 128 to 16384 Using max buffer size 32768 Periods = 4 was set period_size = 8192 was set buffer_size = 32768 0 - Front Left When I checked from the logs it was coming from file drivers/base/regmap/regcache.c. This regmap concept is present in the new tlv320aic3x.c driver file. We are compiling the drivers as a module. We can see the cards in cat /proc/asound/cards When we detect the i2c device using i2cdetect we get the following output root@ngt:~/audio_routing_scripts# i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: 10 -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- 4d -- -- 50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- 6c -- -- -- 70: -- -- -- -- -- -- -- -- After using rmmod we are getting the following logs root@ngt:~/audio_routing_scripts# rmmod -f snd_soc_tlv320aic3x [ 838.273808] Disabling lock debugging due to kernel taint root@ngt:~/audio_routing_scripts# i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: 10 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- 4d -- -- 50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- 6c -- -- -- 70: -- -- -- -- -- -- -- -- We see that after removing the module even the i2c address of codec (0x1b) is not seen. I am attaching my dts and dtsi files. Please have a look. I am stuck here since 2 weeks. Thanks Deepika(Please visit the site to view this file)(Please visit the site to view this file)

Forum Post: RE: RTOS/TMS320DM642: How can I migrate an old CCS3.3 project about network on TMS320DM642 to CCS5.5

$
0
0
Sasha, Here is my project console, the project on CCS3.3 worked correctly, I guess the bios or NDK lib is incomplete. So I install NDK and want to make a thorough rebuild of the project. When I run setupwin32_ndk-2_0_0.exe, and choose destination location on C:\ti\ndk_2_0_0\packages where CCS5.5 destination location, then I restart CCS5.5 ,but the software isn't discover NDK I installed.

Forum Post: RE: RTOS/CC2640: UART callback Hard Fault

$
0
0
Derrick, Three screenshots attached to this post: 1. An error message about UART write polling that displays before application is debugged. (this message does not show up if the debug statements are in place, I commented them out today). 2. Address of decoded exception as seen on ROV: 3. Here is where the application halts after the HW breakpoint watch is added: I will send you the project shortly. I appreciate any insight you may have to share. Thank you, Priya

Forum Post: RTOS/EK-TM4C1294XL: SPI Software CS

$
0
0
Part Number: EK-TM4C1294XL Tool/software: TI-RTOS Hi, like my former posts I am playing still playing around with my SPI devices and I am currently wondering how to configure a SPI transfer with only 1 master and 1 slave. The idea is the pull the CS line low and wait for incoming messages: SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3); GPIOPinConfigure(GPIO_PQ0_SSI3CLK); // GPIOPinConfigure(GPIO_PQ1_SSI3FSS); GPIOPinConfigure(GPIO_PQ2_SSI3XDAT0); GPIOPinConfigure(GPIO_PQ3_SSI3XDAT1); GPIOPinTypeSSI(GPIO_PORTQ_BASE, GPIO_PIN_0 // | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); As I want to control the CS for myself, I dont configure the FSS Pin. Furthermore I read here that I have to set the interrupt from hardware to software source, so that SPI_transfer is triggered. But how can I do that on my launchpad? Looking for SPI_Params and SPI_Config I couldnt find such a parameter. What is here a clean solution using TI's RTOS?

Forum Post: RE: RTOS/EK-TM4C1294XL: SPI receive of unknown length

$
0
0
Hi, I see the need for another communication layer in my implementation and the fact that the sizes has to be known to both at transfer time. Thanks for the detailed explanation.

Forum Post: RE: RTOS/CC3200-LAUNCHXL: Unable to connect to wifi

$
0
0
Hai Derrick, I am waiting for your reply. i would like to know why http demo client works fine with nonos implementation and after porting to TI RTOS why wifi is not configured properly.

Forum Post: RE: Linux/AM3352: which/how services and daemon in the arago file system can be removed?

$
0
0
Hi Sung-IL, You can start up with the arago-base-tisdk-image filesystem and add what you need there. ti-processor-sdk-linux-am335x-evm-03.02.00.05/filesystem/arago-base-tisdk-image-am335x-evm.tar.xz See the below wiki pages for more details: processors.wiki.ti.com/.../Processor_SDK_Linux_Filesystem processors.wiki.ti.com/.../Customization processors.wiki.ti.com/.../Sitara_Linux_Training:_Boot_Time_Reduction_Update processors.wiki.ti.com/.../Optimize_Linux_Boot_Time Regards, Pavel

Forum Post: RE: Linux: lspci shows nothings!

$
0
0
Hi Saman, It seems that the initialization of MCS9922 driver is not successful. Could you attach Linux booting log and output of "lsmod" command. BR Tsvetolin Shulev

Forum Post: RE: Linux: 66ak uboot

$
0
0
Hi, When you execute ifconfig on 66AK-A, does it show you that all ethernet ports are up (especially SGMII1 & SGMII2)? Maybe you need to use ifup prior to trying to ping from 66AK-C & 66AK-D. Best Regards, Yordan

Forum Post: RE: RTOS/LAUNCHXL-CC1310: HARD FAULT: FORCED: BUSFAULT: PRECISER

$
0
0
Yes Rob, I will try the changing of the Mailbox message size today. The only reason I sent that image is to see if that triggered something that you could think of. Vikram

Forum Post: RE: Linux/OMAP3503: Need to improve the Network performance on OMAP based embedded device

$
0
0
Hi Ashoka, If CONFIG_PREEMPT is enabled, then kernel code can be preempted everywhere, except when the code has disabled local interrupts. But the ethernet receiving data is realized via interrupts (process-2). This can be causing IRQ latency in process-1. There is a link to article describing Preemption under Linux which can help to clarify the issue: kernelnewbies.org/.../Preemption BR Tsvetolin Shulev

Forum Post: RE: How to use TIWI5 on embedded linux based on DM8168?

$
0
0
Hi, At first [quote user="Pavel Botev"] The WL1273-TIWI5 is enabled and tested for AM335x device, thus SW support is available in the AM335x SDK. See for example the below files/folders: ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11/drivers/net/wireless/wl12xx/Kconfig "TI wl12xx driver support" - This will enable TI wl12xx driver support for the following chips: wl1271, wl1273, wl1281 and wl1283. "TI wl12xx support" - This module adds support for wireless adapters based on TI wl1271 and TI wl1273 chipsets. ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11/drivers/net/wireless/wl12xx/ So I will suggest to port the WL1273 driver from AM335x SDK to DM816x SDK. [/quote] I can find the directory of drivers/net/wireless/wl12xx/ in the PSP of DM8168. So do I need to porting this from AM335x? And second, board_ti8168evm.c mach_omap2/devices.c board_omap3pandora.c board_omap4panda.c Do I need to porting all of the above four files? Or just several of them?

Forum Post: RE: Linux: 66ak uboot

$
0
0
Hi, I execute ifconfig on 66AK-A, all ethernet ports are up (Included SGMII1 & SGMII2). I add debugging information to test when 66AK-C booting , found that the data has been taken to the QMSS, but ultimately didn't sent to sgmii1, what are the reason that can cause this problem? Best Regards,

Forum Post: RE: Linux/AM5728: ARGB pixel format for DMA_buf EGL extension

$
0
0
Hi Oleg, We support only NV12 / YUV image formats now. There is no firm plan for ARGB support yet. However, you do have a way to achieve what you want: 1. Import DMABUF as a GBM BO 2. Create a pixmap surface out of it 3. Create an EGL Image based on the pixmap This is not supported on current PSDK release. We have added features in the last week that will enable you to do the above. https://git.ti.com/graphics/omap5-sgx-ddk-um-linux/commits/ti-img-sgx/1.14.3699939 Can you check if the above proposal meets your needs? On a related note, you may question why we support only NV12 / YUV formats as EGLImages. The main reason is that in the above proposal, you could use pixmap as a render surface. So, it works with ARGB but not with YUV surfaces. Since an alternative exists for ARGB textures, we don't plan to directly support EGLImage creation of ARGB. Regards, Anand

Forum Post: RE: How to use TIWI5 on embedded linux based on DM8168?

$
0
0
Hi, [quote user="Pavel Botev"] If drivers/net/wireless/wl12xx/wl1271_main.c driver doesn't work for you, you should use AM335x SDK6 driver drivers/net/wireless/wl12xx/main.c The WL1273-TIWI5 is test and has support by default in the AM335x SDK (Linux and Android). You might re-use the approach from the AM335x SDK6: board-support/extra-drivers/ti-compat-wireless-wl12xx-r5.sp4.01/drivers/net/wireless/wl12xx/Kconfig board-support/extra-drivers/ti-compat-wireless-wl12xx-r5.sp4.01/drivers/net/wireless/wl12xx/main.c board-support/extra-drivers/ti-compat-bluetooth-r5.sp3.05/drivers/net/wireless/wl12xx/Kconfig board-support/extra-drivers/ti-compat-bluetooth-r5.sp3.05/drivers/net/wireless/wl12xx/main.c board-support/linux-3.2.0-psp04.06.00.11/drivers/net/wireless/wl12xx/Kconfig board-support/linux-3.2.0-psp04.06.00.11/drivers/net/wireless/wl12xx/main.c [/quote] ti-compat-wireless-wl12xx-r5.sp4.01/drivers/net/wireless/wl12xx/---- Could I use wifi only by this driver? /ti-compat-bluetooth-r5.sp3.05/drivers/net/wireless/wl12xx/---- Could I use BT only by this driver? /drivers/net/wireless/wl12xx/---- Could not I use wifi and BT by this driver? If I want to use wifi and BT, should I combine all of them? right? PS: And then, could you tell me if this would help me to make driver for DM8168? And where to download this package? regards firelord
Viewing all 25965 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>