Quantcast
Channel: Processors forum - Recent Threads
Viewing all 17527 articles
Browse latest View live

TMS320C6657: stuck in malloc function

$
0
0

Part Number: TMS320C6657

Hello Champs,

Customer wanted to use malloc function.

#include <stdlib.h>

short*pnLoadMagRectFlag = (PIXELTYPE*)malloc(nTemplateSize*sizeof(short)); 
if(pnLoadMagRectFlag==0x00)
{
malloc_error++;
return;
}

……

free(pnLoadMagRectFlag);



Code is stuck in malloc API function. Pause the emulator, the code is stopped in \ti\ccsv6\tools\compiler\c6000_7.4.8\lib\src\memory.c




Thanks.

Rgds
Shine


RTOS/TDA2EVM5777: SYNC DELTA and SYNC THRESHOLD Calculation

$
0
0

Part Number: TDA2EVM5777

Tool/software: TI-RTOS

Dear Sir

I am having caffe-custom OD model . We have model input as 512x512 image we are providing input video at 30fps to run the use case. After setting SYNC_DELTA to 1000 and SYNC_THRESHOLD to any of [1000 or 5000 or 10000] only we are getting detentions .

When sync_delta is < 1000 we are facing frame drops in VPE link and no detection.

Could you please tell how to set optimal value for our model ?

What is the relation of sync_delta with src timestamp set for each CH ? Where to set source time stamp in code ?

How to achieve no frame drops with lowest latency from TI link for best model performance(FPS) ?

Thanks

Madhav

Linux/PROCESSOR-SDK-AM335X: Run-time Pin Configuration

$
0
0

Part Number: PROCESSOR-SDK-AM335X

Tool/software: Linux

Hi,

Is there a tool to configure pin modes at run time, something similar to the 'config-pin' tool available for BBB.
I am using Processor Linux SDK 5.03 with the out-of-the-box image on Beaglebone Black.

AM1806: How is the deference between EMA_WAIT[0] and EMA_WAIT[1]?

$
0
0

Part Number: AM1806

Hi

How is the deference between EMA_WAIT[0] and EMA_WAIT[1]?

For example, when 1 NOR FLASH is connected to EMA, how to connect the ready signal of NOR FLASH and EMA_WAIT[0] and EMA_WAIT[1]?

Best regards,

HaTa.

PRU-ICSS-INDUSTRIAL-SW: Failed to create "ethercat_slave_cia402"

$
0
0

Part Number: PRU-ICSS-INDUSTRIAL-SW

Hi,

I was trying to create ethercat_slave_cia402 project with "projectCreate.bat AM437x arm ethercat_slave_cia402". There was an error alarm saying Unknown product-type ID 'com.ti.pdk.am437x.

What is the correct step for generating this project?

C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.08.01\protocols\ethercat_slave\projects>projectCreate.bat AM437x arm ethercat_slave_cia402
**************************************************************************
Environment Configuration Summary:
    CCS Install Directory          : C:\ti\ccsv8
    CCS Workspace Directory        : D:\EtherCAT_work_files\ethercat_work_space
    SDK Install Directory          : C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.08.01
    PDK Install Directory          : C:\ti\pdk_am437x_1_0_12\packages
    Projects create Directory      : C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.08.01\protocols\ethercat_slave\projects
    Project create args directory  : C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.08.01\protocols\ethercat_slave\projects\ccsproject_args
**************************************************************************
Creating project 'ethercat_slave_cia402_AM437x_arm' for 'AM437x' platform in directory 'C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.08.01\protocols\ethercat_slave\projects\ethercat_slave_cia402_AM437x_arm' by overwriting the project if it exists already...
--------------------------------------------------------------------------------
Creating project 'ethercat_slave_cia402_AM437x_arm'...

  !ERROR: Unknown product-type ID 'com.ti.pdk.am437x'!
    NOTE: Refer to the following list of available product-type IDs (the display-names in square brackets are for reference only):
        c2000ware_software_package [C2000Ware]
        com.ti.sdo.edma3 [EDMA3 Low Level Driver]
        com.ti.rtsc.NDK [NDK]
        com.ti.rtsc.SYSBIOS [SYS/BIOS]
        com.ti.uia [System Analyzer (UIA Target)]
        com.ti.rtsc.XDCtools [XDCtools]
        com.ti.pdk.am335x [am335x PDK]
Kind regards
Orient

TMS320C6748: TMS320C6748 Ethernet Communication & NAND Boot

$
0
0

Part Number: TMS320C6748

hello.
We are testing Ethernet communications using the lwIPInit function.
In CCS, when the program is loaded / run, the IP is normally fetched and communicated.
However, if we download the program to Nand Flash and boot it, we will not get the IP address.

case load / run
********************************
Start EMACIntrSetUp
Start lwIPInit
ipAddr: 1164224704
End lwIPInit
EVM AM1808 IP Address Assigned: 192.168.100.69

case nand boot
********************************
Start EMACIntrSetUp
Start lwIPInit
ipAddr: 0
End lwIPInit
EVM AM1808 IP Address Assigned: 00.0.0.0
It seems that some variables that need to be initialized do not get initial at boot time.
Is the configuration of the cmd file wrong?
used cmd file
====================================================================

-c
-stack 0x2000
-heap 0x2000

MEMORY
{
    DSPL2RAM        o = 0x00800000  l = 0x00040000   /* 256kB L2 Internal RAM */
    SHDSPL2RAM   o = 0x11800000  l = 0x00040000   /* 256kB L2 Shared Internal RAM */
    IRAM                  o = 0x80000000  l = 0x00020000   /* 128kB Shared RAM */
    SRAM                o = 0x66000000  l = 0x00080000   /* external sram */
}
SECTIONS
{
   .cinit             >        IRAM               // Initialization Tables
   .pinit             >        IRAM               // Constructor Tables
   .init_array     >        IRAM               //
   .binit             >        IRAM               // Boot Tables
   .const           >        IRAM               // Constant Data
   .switch          >        IRAM               // Jump Tables
   .text              >        IRAM               // Executable Code

   .text:_c_int00: align=1024 > IRAM       // Entrypoint

   GROUP (NEARDP_DATA)                        // group near data
   {
      .neardata
      .rodata
      .bss                                    // note: removed fill = 0
   }                  >        SHDSPL2RAM

   .fardata       >        SHDSPL2RAM               // Far RW Data
   .stack          >        IRAM               // Software System Stack
   .sysmem     >        IRAM               // Dynamic Memory Allocation Area
   .cio              >        IRAM               // C I/O Buffer
   .vecs           >        IRAM                // Interrupt Vectors

   .L2Code: {}  >     DSPL2RAM
}

====================================================================

Please help!

Thanks,

Linux/AM3894: AM3894 : Memory issues(DDR2)

$
0
0

Part Number: AM3894

Tool/software: Linux

Hello,

I am currently using the AM389x series, and I have memory related questions.

We used 8 DDR2 (x16 / 256MB) and connected all CS0 / CS1 to use 2GB of physical memory board.
However, we recently learned that the AM389x series does not guarantee functionality for CS1.

So we are considering two ways to use the CS0 to operate the board.

The first is to use 4 DDR2 (x16 / 256MB) and connect only CS0 to use 1GB of physical memory. In this regard, I want to use 256MB for the kernel and 768MB for the user area.
I'd like to know if this is possible.

The second method is to use 8 DDR2 (x8 / 256MB) and connect only CS0 to use 2GB of physical memory like existing board.
In the second method, since the data bandwidth of DDR2 is small, we are worried about the performance degradation between CPU operations.

Best Regards,

unseok ham

AM5728: AM5728BABCXA / AM5718AABCXA

$
0
0

Part Number: AM5728

Hello community,

we are currently working on a AM5728 (AM5718 / AM5748) design (module). 

And after a long time of period during design qualification suddenly occured a issue with some prototypes (5 of 20). 

The behavior is those modules are booting sporadically and the logfiles are different:

1. logfile

U-Boot SPL 2018.01 (Apr 12 2019 - 16:13:43)
DRA752-GP ES2.0
Trying to boot from MMC Device 0 not found
spl: could not find mmc device. error: -19
Trying to boot from MMC Device 1 not found
spl: could not find mmc device. error: -19
Trying to boot from spi_x er: RX timeout!SF: e ror 0@SPI probe failed.
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

2. logfile

U-Boot SPL 2018.01 (Apr 12 2019 - 16:13:43)
DRA752-GP ES2.0
Trying to boot from MMC1
SF: unrecognized JEDEC id bytes: 00, 00, 00
*** Warning - spi_flash_probe() failed, using default environment

spl_load_image_fat: error reading image u-boot.img, err - -6
SF: unrecognized JEDEC id bytes: 00, 00, 00
*** Warning - spi_flash_probe() failed, using default environment

Failed to mount ext2 filesystem...
spl_load_image_ext: ext4fs mount err - 0

3. logfile

U-Boot SPL 2018.01 (Apr 12 2019 - 14:42:49)
DRA752-GP ES2.0
Trying to boot from MMC1
Card did not respond to voltage select!
mmc_init: -95, time 98
spl: mmc init failed with error: -95
Trying to boot from MMC2
SF: unrecognized JEDEC id bytes: 00, 00, 00
*** Warning - spi_flash_probe() failed, using default environment

** Partition 1 not valid on device 1 **
spl_register_fat_device: fat register err - -1
spl_load_image_fat: error reading image u-boot.img, err - -1
SF: unrecognized JEDEC id bytes: 00, 00, 00
*** Warning - spi_flash_probe() failed, using default environment

spl: no partition table found
Trying to boot from SPI
SF: unrecognized JEDEC id bytes: 00, 00, 00
SPI probe failed.
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

4. logfiles

U-Boot SPL 2018.01 (Apr 12 2019 - 16:13:43)
DRA752-GP ES2.0
Trying to boot from ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMMC Device 0 not found
spl: could not find mmc device. error: -19
Trying to boot from ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMMC Device 1 not found
spl: could not find mmc device. error: -19
Trying to boot from ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿspi_x er: RX timeout!SF: e ror 0@SPI probe failed.
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

 

This behavior is just at 5 prototypes and if they can read the u-boot the linux is booting without any kind of problems.

We are doing either power-cycle or reset (PORZ) and the behaviour is always different like you can see based on the logfiles.

Therefore, when the MLO is loading the u-boot it always works without any trouble afterwards.

 

It seems that we have some kind of issue with the MLO, because if we use the MLO from the AM5718 the module with the AM5728 CPU will also works without any problems above.

 

I have attached the logfiles and also the MLO-files from the AM5728 and AM5718. 

(Please visit the site to view this file)

Maybe you have any kind of idea what cause to this problem.ank you in advance!

Best regards

Juergen


TMS320C6652: SPI booting gets suspended after the initial 4 bytes

$
0
0

Part Number: TMS320C6652

Hello,

I need an immediate advice for booting DSP from SPI flash.
I have made a custom board with TMS320C6652 which boots from SPI flash connected to SPISCS0, but the booting process is always suspended after the initial 4 bytes are read by DSP.
Somehow DSP resumes the rest of the booting process either when DSP's DVDD15 power is temporarily turned off for more than 3ms (this violates the power/reset sequence, though) or when DSP is extremely cooled down by a cold spray.

I guessed the RBL of DSP is probably trapped in an infinite loop after reading the first 4 bytes from SPI flash and resetting DVDD15 or putting DSP in low temperature brings DSP out of that loop to continue reading the following data from SPI flash.
I looked over the source code of RBL and narrowed down on the most suspicious loop probably responsible of suspending the boot process.


Line 140 - 144 of spi.c :

/* Clear out any pending read data */
do {
        v = DEVICE_REG32_R (DEVICE_SPI_BASE(cfg->port) + SPI_REG_SPIBUF);
        v = DEVICE_REG32_R (DEVICE_SPI_BASE(cfg->port) + SPI_REG_SPIFLG);
} while (SPI_REG_SPIFLG_RX_DATA(v));


Does anybody have an idea what can make this loop infinite!?
This loop is within hw_spi_xfer(), which is called by hwSpiRead(), which is called by boot_spi_read_blocked_block() of spimain.c.
I paste a part of spimain.c codes below. I am pretty sure the booting process is suspended between the two hwSpiRead() function calls.


Line 161 - 189 of spimain.c :

void *boot_spi_read_blocked_block (UINT32 *addr, UINT32 *sizeBytes, spiConfig_t *spiCfg)
{
        UINT16 *data = spi_boot_tbl_buf;
        UINT16 checksum;


/* Read the header */
if (hwSpiRead (*addr, BOOT_SPI_SECTION_HEADER_SIZE_BYTES, data, spiCfg) != 0) {                 ←the first hwSpiRead() to read the first 4 bytes
        bootLogEntry ((char *)fname, __LINE__, BOOT_SPI_LOG_READ_FAIL);
        *sizeBytes = 0;
        return (NULL);
}


*sizeBytes = data[BOOT_SPI_HEADER_OFFSET_LENGTH_UINT16];


/* Validate the block size */
if ( (*sizeBytes > BOOT_SPI_SECTION_HEADER_SIZE_BYTES) &&
        (*sizeBytes <= BOOT_SPI_MAX_SECTION_SIZE_BYTES) &&
        ((*sizeBytes & 1) == 0) ) {

                if (hwSpiRead (*addr + BOOT_SPI_SECTION_HEADER_SIZE_BYTES,
                        *sizeBytes - BOOT_SPI_SECTION_HEADER_SIZE_BYTES,
                        &data[BOOT_SPI_SECTION_HEADER_SIZE_BYTES >> 1], spiCfg) != 0) {                 ←the second hwSpiRead() that can be reached only by resetting DVDD15 or low temperature
                        bootLogEntry ((char *)fname, __LINE__, BOOT_SPI_LOG_READ_FAIL);
                        *sizeBytes = 0;
                        return (NULL);
                }

Linux/AM5716: IPU timer access issues when Linux is running

$
0
0

Part Number: AM5716

Tool/software: Linux

This is a follow up to this question: e2e.ti.com/.../819724

We have an issue with timers configured and used by IPU (M4) core when Linux is running on A15.

Timers are configured in Linux device tree as no idle (otherwise they can't be initialized from M4 core being in suspended state):

&timer4 {
        ti,no-idle;
        ti,timer-alwon;
};

Now we configure it from M4 core as follows:

/*

** Timer4 PRCM configuration. This will explicitly enable the Timer4 module.

*/

staticvoidTimerPRCMConfigure(void)

{

    HW_WR_REG32(SOC_L4PER_CM_CORE_BASE + CM_L4PER_TIMER4_CLKCTRL, 0x2);

    while ((HW_RD_REG32(SOC_L4PER_CM_CORE_BASE + CM_L4PER_TIMER4_CLKCTRL) & (0x00030000)) != 0x0) ;

}

This code hangs since it reads 0x20000, IDLEST(16,17) = 2. TRM says: 0x2: Module is in Idle mode (only OCP part). It is functional if using separate functional clock.

As far as I understand, the timer is not fully functional in this mode. We have issues with timer interrupts routed to M4 core. Looks like it misses some interrupts, or after entering ISR we see no flag bits set. Looks like some other core also processed the interrupt and cleared those bits. But perhaps, it is the consequence of IDLEST = 0x2.

Important: when only U-Boot is running, there is no issue. It only happens when Linux is runnning on A15 core. So Linux is somehow involved.

Could you give an idea why IDLEST bits are not 0, what should we do in Linux to keep it away from touching the timer (including suspend modes and power domains). I thought that the device tree quoted above is sufficient, but it seems no.

 

 

TDA2P-ABZ: rebuilding image for SDcard issues with TIDL case

$
0
0

Part Number: TDA2P-ABZ

Hi everybody , 

I have a  TI evm for TDA2  and a D3 board  mounting TDA2P .

using latest SDK  by TI   modifying rules.make  as :  MAKECONFIG?=tda2xx_evm_bios_all    I can build  generate a card  which is working in TI TDA2 board .

now modifying  to compile  for TDA2P  changing  rules.make  as 

 MAKECONFIG?=tda2px_evm_bios_all      I can build -->  D3 TDA2P  can boot    but  TIDL  use case  is empty   : why ?  (attached screenshot) 

what is missing ? 

on top  if  I use  TDA2P  image it doesn t run on TDA2 board  :   why ?  is tda2px reffering to  superset with different package ? 

best regards

Carlo

RTOS/AM3354: Error during initialization PHY, AM3354

$
0
0

Part Number: AM3354

Tool/software: TI-RTOS

Hello.
In our project on AM3354 we faced the following problem.
We initialize the CPSW module. During initialization of the CPSW, the MDIO module accesses the PHY chip using the MDIOPhyRegRead function. Due to the fact that in the MDIO USERACCESS0 register, the GO bit is not set to 0, the MDIOPhyRegRead function remains in an infinite loop.
To solve this problem, we made these functions with a finite number of cycles (10000), and after passing the cycle, we check the GO bit to 0. If this bit is 0, then everything is fine, otherwise we set an error.
Questions:
1. Are we doing the right thing replacing infinite loops with finite ones?
2. Why the GO bit is not reset to 0, is the cause of the failure of the PHY?

Respectfully,
Vitali

Linux/AM5728: Processor-SDK Linux 6.00.00 - TCP SACK PANIC - Kernel vulnerabilities - CVE-2019-11477, CVE-2019-11478 & CVE-2019-11479

$
0
0

Part Number: AM5728

Tool/software: Linux

Hi,

In June there was a bunch of Kernel Vulnerabilities made public which can be summarized by the Term "TCP SACK PANIC". Details can be found here: https://access.redhat.com/security/vulnerabilities/tcpsack

These CVEs were adressed by some kernel patches which were also backported to earlier versions. Namely 4.19.55 containes them for the 4.19 LTS Release.

The just released SDK 6.00.00 contains Kernel 4.19.38 and from what I can tell also doesn't contain any patches for these issues (also no manual backports).

I have no problem with applying them myself for our product firmware. But I wanted to ask if there is a specific reason why TI didn't include them in the last release. Was it just a timing issue or does TI not see them as critical enough? Or (even better) do these vulnerabilities not apply to ARM based kernels? I couldn't find anything about it related to Sitara Products.

Regards,

Michael

Linux/PROCESSOR-SDK-AM335X: uEnv.txt

$
0
0

Part Number: PROCESSOR-SDK-AM335X

Tool/software: Linux

Hi,

The last part of section 1.1.5 of the Processor SDK Linux Software Developer's Guide mentions that the setup.sh script should create a uEnv.txt file and place it in the boot partition of the SD card.
I have noticed that upon execution of the script there is a uboot.env file placed in the boot partition. Is this expected? What is the difference between uboot.env and uEnv.txt? No issues booting my board from SD card, just asking out of curiosity.
I am using processor SDK version 5.03, target board is Beaglebone Black.

Linux/AM3358: Linux/AM3358: Qt serial port build issue

$
0
0

Part Number: AM3358

Tool/software: Linux

Hello,

Here are my specs:

TI SDK: 03.03.00.04

QT Build version: v5.9.5

Ubuntu 18.04

I am trying to import the qtserialport into my SDK for my Beaglebone Black application. Here are the steps I followed:

1) Git init for /opt/serialport (Directory i am working)

2) git clone git://code.qt.io/qt/qtserialport.git (Cloning the repository)

3) git checkout v5.9.5 (Selecting my version of the module)

4) Source environment-setup (My linux-devkit)

5) qmake qtserialport.pro

Result:

Info: creating cache file /opt/qtserialport/qtserialport/.qmake.cache
Checking for ntddmodm... no

6)Make

This is where i get the errors (see bold below):

[linux-devkit]:/opt/qtserialport/qtserialport> make
cd src/ && ( test -e Makefile || /opt/ti-processor-sdk-linux-am335x-evm-03.03.00.04/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/qt5/qmake /opt/qtserialport/qtserialport/src/src.pro -o Makefile ) && make -f Makefile
make[1]: Entering directory '/opt/qtserialport/qtserialport/src'
cd serialport/ && ( test -e Makefile || /opt/ti-processor-sdk-linux-am335x-evm-03.03.00.04/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/qt5/qmake /opt/qtserialport/qtserialport/src/serialport/serialport.pro -o Makefile ) && make -f Makefile
/opt/qtserialport/qtserialport/src/serialport/serialport-lib.pri:3: 'qtConfig' is not a recognized test function.
<srcbase> = /opt/qtserialport/qtserialport
<outbase> = /opt/qtserialport/qtserialport
QtSerialPort: created fwd-include header(s) for <srcbase>/src/serialport/ { qserialport.h (2), qserialport_p.h (1), qserialportglobal.h (1), qserialportinfo.h (2), qserialportinfo_p.h (1), qtudev_p.h (1) }
QtSerialPort: created version header
QtSerialPort: created master header
QtSerialPort: created headers.pri file
make[2]: Entering directory '/opt/qtserialport/qtserialport/src/serialport'
creating linker version script QtSerialPort.version
moc qserialport.h
compiling qserialport.cpp
qserialport.cpp: In constructor 'QSerialPortPrivate::QSerialPortPrivate()':
qserialport.cpp:125:5: error: 'writeBufferChunkSize' was not declared in this scope
     writeBufferChunkSize = InitialBufferSize;
     ^
qserialport.cpp: At global scope:
qserialport.cpp:611:1: error: 'QT_WARNING_DISABLE_DEPRECATED' does not name a type
 QT_WARNING_DISABLE_DEPRECATED
 ^
qserialport.cpp: In member function 'bool QSerialPort::clear(QSerialPort::Directions)':
qserialport.cpp:1085:12: error: 'class QSerialPortPrivate' has no member named 'writeBuffer'
         d->writeBuffer.clear();
            ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp: In static member function 'static void QSerialPort::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
.moc/moc_qserialport.cpp:340:104: warning: 'void QSerialPort::dataErrorPolicyChanged(QSerialPort::DataErrorPolicy)' is deprecated [-Wdeprecated-declarations]
         case 5: _t->dataErrorPolicyChanged((*reinterpret_cast< QSerialPort::DataErrorPolicy(*)>(_a[1]))); break;
                                                                                                        ^
In file included from qserialport.cpp:43:0:
qserialport.h:283:24: note: declared here
     QT_DEPRECATED void dataErrorPolicyChanged(QSerialPort::DataErrorPolicy policy);
                        ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:345:89: warning: 'void QSerialPort::settingsRestoredOnCloseChanged(bool)' is deprecated [-Wdeprecated-declarations]
         case 10: _t->settingsRestoredOnCloseChanged((*reinterpret_cast< bool(*)>(_a[1]))); break;
                                                                                         ^
In file included from qserialport.cpp:43:0:
qserialport.h:292:24: note: declared here
     QT_DEPRECATED void settingsRestoredOnCloseChanged(bool restore);
                        ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:389:80: warning: 'void QSerialPort::dataErrorPolicyChanged(QSerialPort::DataErrorPolicy)' is deprecated [-Wdeprecated-declarations]
             if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QSerialPort::dataErrorPolicyChanged)) {
                                                                                ^
In file included from qserialport.cpp:43:0:
qserialport.h:283:24: note: declared here
     QT_DEPRECATED void dataErrorPolicyChanged(QSerialPort::DataErrorPolicy policy);
                        ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:424:80: warning: 'void QSerialPort::settingsRestoredOnCloseChanged(bool)' is deprecated [-Wdeprecated-declarations]
             if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QSerialPort::settingsRestoredOnCloseChanged)) {
                                                                                ^
In file included from qserialport.cpp:43:0:
qserialport.h:292:24: note: declared here
     QT_DEPRECATED void settingsRestoredOnCloseChanged(bool restore);
                        ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:448:80: warning: 'QSerialPort::DataErrorPolicy QSerialPort::dataErrorPolicy() const' is deprecated [-Wdeprecated-declarations]
         case 5: *reinterpret_cast< DataErrorPolicy*>(_v) = _t->dataErrorPolicy(); break;
                                                                                ^
qserialport.cpp:1152:30: note: declared here
 QSerialPort::DataErrorPolicy QSerialPort::dataErrorPolicy() const
                              ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:452:77: warning: 'bool QSerialPort::settingsRestoredOnClose() const' is deprecated [-Wdeprecated-declarations]
         case 9: *reinterpret_cast< bool*>(_v) = _t->settingsRestoredOnClose(); break;
                                                                             ^
qserialport.cpp:636:6: note: declared here
 bool QSerialPort::settingsRestoredOnClose() const
      ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:466:80: warning: 'bool QSerialPort::setDataErrorPolicy(QSerialPort::DataErrorPolicy)' is deprecated [-Wdeprecated-declarations]
         case 5: _t->setDataErrorPolicy(*reinterpret_cast< DataErrorPolicy*>(_v)); break;
                                                                                ^
qserialport.cpp:1133:6: note: declared here
 bool QSerialPort::setDataErrorPolicy(DataErrorPolicy policy)
      ^
In file included from qserialport.cpp:1476:0:
.moc/moc_qserialport.cpp:469:77: warning: 'void QSerialPort::setSettingsRestoredOnClose(bool)' is deprecated [-Wdeprecated-declarations]
         case 9: _t->setSettingsRestoredOnClose(*reinterpret_cast< bool*>(_v)); break;
                                                                             ^
In file included from qserialport.cpp:43:0:
qserialport.h:217:24: note: declared here
     QT_DEPRECATED void setSettingsRestoredOnClose(bool restore);
                        ^
Makefile:658: recipe for target '.obj/qserialport.o' failed
make[2]: *** [.obj/qserialport.o] Error 1
make[2]: Leaving directory '/opt/qtserialport/qtserialport/src/serialport'
Makefile:42: recipe for target 'sub-serialport-make_first' failed
make[1]: *** [sub-serialport-make_first] Error 2
make[1]: Leaving directory '/opt/qtserialport/qtserialport/src'
Makefile:44: recipe for target 'sub-src-make_first' failed
make: *** [sub-src-make_first] Error 2

I have no idea what the issue is and have tried countless solutions with no results.

Any help is appreciated.


Linux/AM5718: Connecting HDMI issue

$
0
0

Part Number: AM5718

Tool/software: Linux

Hai all,

We have one custom board where AM5718 is used. We are facing some strange errors if we connect different monitors to the board.

I have tested the same observation with EVM and it is working without any problem.

Scenario-1:

EVM and Custom boards connected to monitor (Dell U2413F) . I have run both modetest and kmscube, working fine.

Scenario-2:

EVM connected to  monitor (SAMSUNG LA40M81BM). And works fine without any problem.

Scenario-3:

Custom board connected to  monitor (SAMSUNG LA40M81BM).

1) If i connect the monitor after logging in, then started observing some prints on uart console like below line.

omap_i2c 48070000.i2c: controller timed out

omap_i2c 48070000.i2c: controller timed out

omap_i2c 48070000.i2c: controller timed out

cpu cpu0: vdd failed for 1060000uV[min 850000uV max 1500000uV]

cpufreq: __target_index: Failed to change cpu frequency: -110

omap_i2c 48070000.i2c: controller timed out

omap_i2c 48070000.i2c: controller timed out

omap_i2c 48070000.i2c: controller timed out

2) if monitor is connected during boot time and the after

omap_i2c 48072000.i2c: bus 1 rev0.12 at 400 kHz
[    3.586406] hctosys: unable to open rtc device (rtc0)
[    3.592124] ALSA device list:"

prints, booting is very slow and also it shows prints like below,

omap_i2c 48070000.i2c: controller timed out

omap_i2c 48070000.i2c: controller timed out

cpu cpu0: vdd failed for 1060000uV[min 850000uV max 1500000uV]

Can anyone please help regarding this issue??

Linux used: 4.14.67

SDK: 05.01.00.11

Regards,

Noufal P

AM4376: RMII MAC to KSZ8567 Ethernet Switch BOOTP Not being broadcasted when booting from Ethernet

$
0
0

Part Number: AM4376

Hi there,

We have a design where three AM4376 processors are used and all three processors are desired to boot through a KSZ8567 Ethernet Switch. We have DIP switches to set the processors to boot from RMII and when we power up the board and connect the board to Wireshark with a laptop, we see only one of the three processors (CPU C as labeled in the schematic) broadcast a BOOTP message.

The processor that does send the BOOTP message is connected through a TI PHY (U76 on the schematic) with an MDIO and RMII interface.

The two processors (CPU A and B) that do not send the BOOTP message are connected to the switch through a digital isolator to the RMII interface directly using KSZ8567's Ports 6/7 worded in the datasheet as "individually configurable RGMII/MII/RMII interfaces for direct connection to a host processor/controller". We raised the question of our setup to Microchip for the Ethernet Strapping and wiring first and they have confirmed the wiring is correct. We have scoped the TX/RX/CRS_DEV lines and see data being intermittently sent from the Switch to processor and vice versa which looks like failed auto-negotiation but no BOOTP message makes it through the switch. Another note, an MDIO interface is not wired to the switch for these two ports.

What about the direct connection would cause the BOOTP message not to be broadcasted for the processors? Does the processor need to negotiate using MDIO as well as RMII to send the BOOTP?  I have attached the schematic for review. The Ethernet Switch and RMII connections are on page 13.(Please visit the site to view this file)

Linux/PROCESSOR-SDK-AM335X: Setting up build environment for arago

$
0
0

Part Number: PROCESSOR-SDK-AM335X

Tool/software: Linux

Hello

I am setting up build environment for the bitbake build and need to set toolchain path. I am looking at two resources and both set it up differently. First resource is http://arago-project.org/wiki/index.php/Setting_Up_Build_Environment

$ bitbake TOOLCHAIN_PATH=$HOME/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf ...

And second one is http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Overview_Building_the_SDK.html.

export TOOLCHAIN_PATH_ARMV7=$HOME/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
export TOOLCHAIN_PATH_ARMV8=$HOME/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu

What is the difference between this two ways?

RTOS/AM5746: Core1 didn't start when "swiEnabled=false"

$
0
0

Part Number: AM5746

Tool/software: TI-RTOS

Hi,

Core1 didn't start when my customers set the following option.
Core1 get caught infinite loop in GateSmp_enter().

BIOS.swiEnabled = false;

■Survey
(Please visit the site to view this file)

■Trial
They called Swi_restore(0) from the task on the Core0 after BIOS_start().
Core1 exited GateSmp_enter() and was able to start the task.

Question 1:
They called Swi_restore(0) to solve this problem.
Is this workaround correct? Or is it not enough?

Question 2:
Core.c assume "swiEnabled= true".(pdf file)
Would you tell me where the processing changes with swiEnabled = true/false like Core.c.
(We want to use swiEnabled=false.
In C:/ti/bios_6_76_00_08/docs/cdoc/ti/sysbios/knl/Clock.html and BIOS.html, there was almost no information of swiEnabled = false.)

This problem did not occur when using the XDS200.
But when using Lauterbach, this problem occurred.
Therefore, we also consider it important to know the difference in ICE initialization.

■Environment
AM574IDK
(We think that even EVM will occur)
pdk_am57xx_1_0_11
bios_6_76_00_08 (+ Mailbox.c/Task_smp.c modified)
 Fixed Task_setPri(), Task_getMode(), and Mailbox_post ().
 The Sysbios team know.
ICE: Lauterbach TRACE32

Regards,
Rei

RTOS/AM5746: PCIe compliance test

$
0
0

Part Number: AM5746

Tool/software: TI-RTOS

Hi,

My customers use PCIe(Gen2).

They want to do physical layer compliance testing.

Question:
Would you tell me how to output the bit pattern for evaluation, and if there are such registers and mode settings.

■Environment
AM5746 custom board
pdk_am57xx_1_0_11
bios_6_76_00_08

Regards,
Rei

Viewing all 17527 articles
Browse latest View live


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