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

Linux: What else is required for NAND to work properly after mux_data.h changes?

$
0
0

Tool/software: Linux

Hi,

      We have DRA71x Board and we are trying to use NAND from another vendor on it. For this, we have made mux_data.h changes. Is this mux_data.h alone enough for NAND to work properly in both U-Boot and Kernel. My team mate mentioned about dts/dtsi file to be changed for NAND to work correctly with kernel. Please give me insights about what else i need to make changes in order for my NAND to work correctly both in U-Boot and Kernel. Thanks in advance.

-Harish.


RTOS: Posting semaphore when HWI disabled

$
0
0

Tool/software: TI-RTOS

Is it safe to pend/post semaphore when hwi is disabled. For example,  I have a concurrent access queue, and I disable the hwi interrupts when I am insterting or removing an item from  the queue. However,

I also need to post or pend a posix semaphore inside this block(holds item count). Is is safe?

Thanks.

Linux/AM5718: SPI boot

$
0
0

Part Number:AM5718

Tool/software: Linux

I am using AM5718 evm board and wanted to try out SPI Boot. The files ‘MLO.byteswap’ and  ‘u-boot.img’ was built after adding  DFU configuration in menuconfig .kernel image 'zImage-am57xx-evm.bin' was taken from the prebuilt  folder provide in SDK package ti-processor-sdk-linux-am57xx-evm-05.02.00.10.By booting from SD card I got the u-boot prompt.At the prompt I entered the following commands

U-Boot # mmc rescan
U-Boot # sf probe 0
U-Boot # sf erase 0 +80000
U-Boot # fatload mmc 0 ${loadaddr} MLO.byteswap
U-Boot # sf write ${loadaddr} 0 ${filesize}
U-Boot # fatload mmc 0 ${loadaddr} u-boot.img
U-Boot # sf write ${loadaddr} 0x20000 ${filesize}
U-Boot # sf erase 80000 +${spiimgsize}
U-Boot # fatload mmc 0 ${loadaddr} zImage
U-Boot # sf write ${loadaddr} ${spisrcaddr} ${filesize}

After finishing flashing to spi, I removed sd card and tried rebooting.but nothing is happening(neither spi boot nor sd card boot). Is there any specific SYSBOOT configuration for enabling SPI boot the current SYSBOOT configuration is SYSBOOT 5 R458 not populated and R439 Connected .Do i need to change Sys Boot Pin configuration for SPI booting .Also should any configuration be done in menuconfig  in u-boot, So as to enable SPI booting.Please advise on how to proceed further.

 



Linux/AM5718: Linux SD Card Booting Issue with AM5718 IDK

$
0
0

Part Number:AM5718

Tool/software: Linux

Hii

We are working with AM5718 IDK EVM SD card booting for Linux . Linux booting was working without any issue.

For our custom application in Linux we were doing experiments on EEPROM test through I2C.All of a sudden the board didn't boot with Linux SD card.Then we tried RTOS booting and it works fine.

We also tried creating SD card with the pre-built images provided along with SDK 05.01.00.11 and faced the same booting issue. No prints observed on UART.

The same SD card we tried with AM5728  EVM and u-boot comes up all fine.

Can anyone please let us know is there any relation between EEPROM content and linux booting ?

If not, what can be the reasons for this issue .

Thanks and Regards...

Arpita Jena

RTOS/TMDSEVM6678: how to combine the linalg example with the NDK helloworld example project?

$
0
0

Part Number:TMDSEVM6678

Tool/software: TI-RTOS

Dear TI engineer:

I have built and run successfully  the linalg example in "C:\ti\linalg_1_2_0_0\examples\dsponly\dgemm_test" and " C:\ti\pdk_c667x_2_0_11\packages\ti\transport\ndk\nimu\example\helloWorld\c6678\c66\bios".

I want to combine the two project above, to use the net to read a picture and process it using linalg, I know linalg use the tech about openmp, the cmd is generated , since the two project both have a cmd to generate, how to avoid the conflict.

The net helloworld uses the sysbios, How should i config the sysbios.

I really appreciate your help!!!

RTOS/TMS320C6657: Problems with SPI driver

$
0
0

Part Number:TMS320C6657

Tool/software: TI-RTOS

Hello, Dear Friends!

I am trying to start a transaction for my command, but SPI_transfer() hangs (file in the attachment: knNorDriver.c | line: 67).

I am using next components:

pdk_c665x_2_0_8

bios_6_52_00_12

xdctools_3_50_04_43_core

My project is in the attachment.

My board: TDMSEVM6657

Debug probe: XDS200

What am I doing wrong?

(Please visit the site to view this file)

RTOS/PROCESSOR-SDK-AM335X: EtherCAT communication latency - "loopback test"

$
0
0

Part Number:PROCESSOR-SDK-AM335X

Tool/software: TI-RTOS

Hello,

We are working with sitara AM3357 device and we use the EtherCAT stack (TI-RTOS) to implement and EtherCAT slave. Right know we are measuring the time between the transmission of a register sent by the master through a PDO (master to slave), this value is copied into another slave register PDO (slave to master) and we wait until this value is received by the master again. It is some kind of loop-back test. We have repeated the same test using different EtherCAT cycle times (from 500 us to 2 ms) and what we see is this:

Value sent by the masterValue sent by the slave 
10
20
30
40
50
61
72
83
94

So it looks like there is a latency of 5 cycles independently of the cycle time of the network (for a cycle time of 2 ms the delay is about 10 ms, whereas for a cycle time of 500 us, the delay is around 2.5 ms). However, every message is processed, so that means that data arrives to the PRUSS before a network cycle.

I was looking for information about this latency to see if there is a way to decrease it or at least to understand why it is happening, but all the information about latencies I found are related to propagation. 

Could you please help me about this topic? why this delay exists? is there a way to decrease it?

Internet phone recommendation

$
0
0

I need a SOC for VoIP. Because the application environment is noisy, I need the chip to be processed by noise and echo algorithms.
After reading the TMS320C5517, the cost and other parameters are met, but Ethernet is not supported. Are there other models recommended?


Linux/AM5728: Using Kernel Module for ADS1051 on AM5728

$
0
0

Part Number:AM5728

Tool/software: Linux

I'm on SDK 4.02 on a custom AM5728 (Kernel 4.14).

I've added ADS1015 ADC to my device tree:

&i2c5 {
        status = "okay";
        clock-frequency = <400000>;
        pinctrl-names="default";
        pinctrl-0 = <&i2c5_pins_default>;

        ads1051: ads1051@49 {
                status = "okay";
                compatible = "ti,ads1051";
                reg = <0x49>;
                #address-cells = <1>;
                #size-cells = <0>;

                channel@4 {
                        reg = <4>;
                        ti,gain = <2>;
                        ti,datarate = <4>;
                };
        };
};

The device is detected on i2cdetect:

# i2cdetect -r 4                                                                                                                                                                                                                                       
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-4 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 49 -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

I can manually load the module:

# lsmod
Module Size Used by
ads1015 16384 0

I see it under sys/bus/i2c:

# ls /sys/bus/i2c/devices/i2c-4
4-0049 delete_device device i2c-dev name new_device of_node power subsystem uevent

But nothing under /sys/bus/iio/devices where I'd expect to query the ADC readings.

Question 1. Shouldn't my kernel module load automatically since the device tree node is marked "okay"?

Question 2. After loading the module, I expected to see a log in "dmesg" or a new directory structure in /sys/bus/iio. I don't see anything! What's expected?

Thanks

RTOS/BEAGLEBK: Linking Error: EMAC Driver

$
0
0

Part Number:BEAGLEBK

Tool/software: TI-RTOS

Hi,

I am getting linking error when I try to include the emac driver on my project. My project properties are same as example project. 'NIMU_BasicExample_bbbAM335x_armExampleProject'. The only difference is that I want to use configuration manager API on my project rather than XGCONF tool. Hence, I created my project from scratch. Here are the versions of different components I am using:

BIOS: 6_73_01_01

compiler: gcc-arm-none-eabi-7-2017-q4-major

EDMA3 LLD: 2.12.5

NDK: 3.40.1.01

am335x PDK: 1.0.13

This is what my build log looks like:

**** Build of configuration Debug for project Echoring_ConfigManagerAPI ****

/home/vishav/ti/ccsv8/utils/bin/gmake -k -j 8 all -O 
 
Building file: "../app.cfg"
Invoking: XDCtools
"/home/vishav/ti/xdctools_3_51_01_18_core/xs" --xdcpath="/home/vishav/ti/bios_6_73_01_01/packages;/home/vishav/ti/ndk_3_40_01_01/packages;/home/vishav/ti/edma3_lld_2_12_05_30C/packages;/home/vishav/ti/pdk_am335x_1_0_13/packages;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A8F -p ti.platforms.beaglebone -r release -c "/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major" "../app.cfg"
making package.mak (because of package.bld) ...
generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
configuring app.xa8fg from package/cfg/app_pa8fg.cfg ...
generating custom ti.sysbios library makefile ... 
	Linking with library ti.transport.ndk.nimu:./lib/am335x/a8/release/ti.transport.ndk.nimu.aa8fg
	Linking with library ti.board:./lib/bbbAM335x/a8/release/ti.board.aa8fg
	Linking with library ti.drv.uart:./lib/am335x/a8/release/ti.drv.uart.aa8fg
	Linking with library ti.drv.gpio:./lib/a8/release/ti.drv.gpio.aa8fg
	Linking with library ti.drv.i2c:./lib/a8/release/ti.drv.i2c.aa8fg
	Linking with library ti.drv.emac:./lib/am335x/a8/release/ti.drv.emac.aa8fg
	Linking with library ti.osal:./lib/tirtos/a8/release/ti.osal.aa8fg
	Linking with library ti.csl:./lib/am335x/a8/release/ti.csl.aa8fg
Starting build of library sources ...
making /home/vishav/workspace_new/Echoring_ConfigManagerAPI/src/sysbios/sysbios.aa8fg ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/IntrinsicsSupport_asm_gnu.asm ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/TaskSupport_asm_gnu.asm ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/Cache_asm_gnu.sv7A ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/Mmu_asm_gnu.sv7A ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/TimestampProvider_asm_gnu.sv7A ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/intcps/Hwi_asm_gnu.sv7A ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/exc/Exception_asm_gnu.asm ...
asma8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/timers/dmtimer/Timer_asm_gnu.sv7A ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/BIOS.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/IntrinsicsSupport.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/TaskSupport.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Clock.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Idle.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Intrinsics.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Event.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Mailbox.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Queue.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Semaphore.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Swi.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/knl/Task.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Cache.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Core.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/CoreNull.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Hwi.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Hwi_stack.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Hwi_startup.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/Seconds.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/hal/SecondsClock.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/Cache.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/Mmu.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/TimestampProvider.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/rts/gnu/ReentSupport.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/intcps/Hwi.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/exc/Exception.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/gates/GateHwi.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/gates/GateMutex.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/heaps/HeapMem.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/timers/dmtimer/Timer.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/sysbios/family/arm/a8/ti81xx/TimerSupport.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/clock.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/mqueue.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_barrier.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_cond.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_key.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_mutex.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_rwlock.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/pthread_util.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/sched.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/semaphore.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/sleep.c ...
cla8fg /home/vishav/ti/bios_6_73_01_01/packages/ti/posix/tirtos/timer.c ...
ara8fg arm_IntrinsicsSupport_asm_gnu.o arm_TaskSupport_asm_gnu.o a8_Cache_asm_gnu.o a8_Mmu_asm_gnu.o a8_TimestampProvider_asm_gnu.o intcps_Hwi_asm_gnu.o exc_Exception_asm_gnu.o dmtimer_Timer_asm_gnu.o _BIOS.o arm_IntrinsicsSupport.o arm_TaskSupport.o knl_Clock.o knl_Idle.o knl_Intrinsics.o knl_Event.o knl_Mailbox.o knl_Queue.o knl_Semaphore.o knl_Swi.o knl_Task.o hal_Cache.o hal_Core.o hal_CoreNull.o hal_Hwi.o hal_Hwi_stack.o hal_Hwi_startup.o hal_Seconds.o hal_SecondsClock.o a8_Cache.o a8_Mmu.o a8_TimestampProvider.o gnu_ReentSupport.o intcps_Hwi.o exc_Exception.o gates_GateHwi.o gates_GateMutex.o heaps_HeapMem.o dmtimer_Timer.o ti81xx_TimerSupport.o tirtos_clock.o tirtos_mqueue.o tirtos_pthread.o tirtos_pthread_barrier.o tirtos_pthread_cond.o tirtos_pthread_key.o tirtos_pthread_mutex.o tirtos_pthread_rwlock.o tirtos_pthread_util.o tirtos_sched.o tirtos_semaphore.o tirtos_sleep.o tirtos_timer.o ...
Build of libraries done.
cla8fg package/cfg/app_pa8fg.c ...
In file included from /home/vishav/ti/ndk_3_40_01_01/packages/ti/ndk/inc/socket.h:43:0,
                 from /home/vishav/ti/ndk_3_40_01_01/packages/ti/ndk/inc/stacksys.h:86,
                 from /home/vishav/ti/ndk_3_40_01_01/packages/ti/ndk/inc/netmain.h:39,
                 from package/cfg/app_pa8fg.c:2782:
/home/vishav/ti/ndk_3_40_01_01/packages/ti/ndk/inc/socketndk.h:94:0: warning: "_SYS_SELECT_H" redefined
 #define _SYS_SELECT_H   1 // TODO: still needed for struct timeval conflict
 
In file included from /home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/types.h:68:0,
                 from /home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/time.h:28,
                 from package/cfg/app_pa8fg.c:2746:
/home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/select.h:13:0: note: this is the location of the previous definition
 #define _SYS_SELECT_H
 
package/cfg/app_pa8fg.c: In function 'ti_ndk_config_Global_stackThread':
package/cfg/app_pa8fg.c:2799:9: warning: unused variable 'rc' [-Wunused-variable]
     int rc;
         ^~
Finished building: "../app.cfg"
 
making ../src/sysbios/sysbios.aa8fg ...
gmake[1]: Nothing to be done for 'all'.
Building file: "/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/transport/ndk/nimu/example/src/nimu_osal.c"
Invoking: GNU Compiler
"/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc" -c -mcpu=cortex-a8 -march=armv7-a -mtune=cortex-a8 -marm -mfloat-abi=hard -Dam3359 -I"/home/vishav/workspace_new/Echoring_ConfigManagerAPI" -I"/home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/include/newlib-nano" -I"/home/vishav/ti/bios_6_73_01_01/packages/ti/posix/gcc" -I"/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"nimu_osal.d" -MT"nimu_osal.o" -std=c99 @"configPkg/compiler.opt" -o"nimu_osal.o" "/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/transport/ndk/nimu/example/src/nimu_osal.c"
Finished building: "/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/transport/ndk/nimu/example/src/nimu_osal.c"
 
Building file: "../main.c"
Invoking: GNU Compiler
"/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc" -c -mcpu=cortex-a8 -march=armv7-a -mtune=cortex-a8 -marm -mfloat-abi=hard -Dam3359 -I"/home/vishav/workspace_new/Echoring_ConfigManagerAPI" -I"/home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/include/newlib-nano" -I"/home/vishav/ti/bios_6_73_01_01/packages/ti/posix/gcc" -I"/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"main.d" -MT"main.o" -std=c99 @"configPkg/compiler.opt" -o"main.o" "../main.c"
../main.c: In function 'StackTest':
../main.c:119:8: warning: implicit declaration of function 'bzero' [-Wimplicit-function-declaration]
        bzero( &NA, sizeof(NA) );
        ^~~~~
Finished building: "../main.c"
 
making ../src/sysbios/sysbios.aa8fg ...
gmake[2]: Nothing to be done for 'all'.
Building target: "Echoring_ConfigManagerAPI.out"
Invoking: GNU Linker
"/home/vishav/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc" -mtune=cortex-a8 -marm -Dam3359 -Og -g -gdwarf-3 -gstrict-dwarf -Wall -mfloat-abi=hard -Wl,-Map,"Echoring_ConfigManagerAPI.map" -nostartfiles -static -Wl,--gc-sections -L"/home/vishav/ti/bios_6_73_01_01/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard" -L"/home/vishav/ti/ndk_3_40_01_01/packages/ti/ndk/os/lib" -L"/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/starterware/binary/soc/lib/am335x-evm/a8/release/gcc" -Wl,--defsym,STACKSIZE=0x1C000 -Wl,--defsym,HEAPSIZE=0x400 --specs=nano.specs -o"Echoring_ConfigManagerAPI.out" "./main.o" "./nimu_osal.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lgcc -lm -lnosys -lsoc -lc -lrdimon -l:os.aa8fg -Wl,--end-group 
makefile:147: recipe for target 'Echoring_ConfigManagerAPI.out' failed
/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/drv/emac/lib/am335x/a8/release/ti.drv.emac.aa8fg(emac_drv_v4.oa8fg): In function `EMAC_poll_v4':
emac_drv_v4.c:(.text.EMAC_poll_v4+0xe0): undefined reference to `ENETPHY_Tic'
/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/drv/emac/lib/am335x/a8/release/ti.drv.emac.aa8fg(emac_cpsw.oa8fg): In function `EMAC_loopbackSetup':
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x170): undefined reference to `ENETPHY_UserAccessWrite'
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x184): undefined reference to `ENETPHY_UserAccessRead'
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x1a4): undefined reference to `ENETPHY_UserAccessRead'
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x1c8): undefined reference to `ENETPHY_UserAccessWrite'
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x1dc): undefined reference to `ENETPHY_UserAccessRead'
emac_cpsw.c:(.text.EMAC_loopbackSetup+0x1fc): undefined reference to `ENETPHY_UserAccessWrite'
/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/drv/emac/lib/am335x/a8/release/ti.drv.emac.aa8fg(emac_cpsw.oa8fg): In function `EMAC_cpswUpdatePhyStatus':
emac_cpsw.c:(.text.EMAC_cpswUpdatePhyStatus+0x60): undefined reference to `ENETPHY_GetLoopback'
emac_cpsw.c:(.text.EMAC_cpswUpdatePhyStatus+0x80): undefined reference to `ENETPHY_GetSpeed'
emac_cpsw.c:(.text.EMAC_cpswUpdatePhyStatus+0x9c): undefined reference to `ENETPHY_GetPhyNum'
emac_cpsw.c:(.text.EMAC_cpswUpdatePhyStatus+0xf0): undefined reference to `ENETPHY_GetLinked'
emac_cpsw.c:(.text.EMAC_cpswUpdatePhyStatus+0x11c): undefined reference to `ENETPHY_GetDuplex'
/home/vishav/ti/pdk_am335x_1_0_13/packages/ti/drv/emac/lib/am335x/a8/release/ti.drv.emac.aa8fg(emac_cpsw.oa8fg): In function `EMAC_cpswOpen':
emac_cpsw.c:(.text.EMAC_cpswOpen+0x380): undefined reference to `ENETPHY_Init'
emac_cpsw.c:(.text.EMAC_cpswOpen+0x3a8): undefined reference to `ENETPHY_SetPhyMode'
collect2: error: ld returned 1 exit status
gmake[1]: *** [Echoring_ConfigManagerAPI.out] Error 1
gmake: *** [all] Error 2
makefile:143: recipe for target 'all' failed

**** Build Finished ****

Please find attached the cfg file of my project.(Please visit the site to view this file)

I request you to please help me with this issue.

Regards

Vishav

TMS320C6748: Initializing SD for writing

$
0
0

Part Number:TMS320C6748

Hello,

My group and i are trying to save the digital output of a codec, which we are able to save internally, to the SD card. I am not sure of the process required to do this. From looking at the data sheet it seems like i will have to initialize the edma controller then push the data to the start address of the SD card. Am i correct in thinking this? I have tried to look at the starterware example "mmcsd" but it is alot to look through and hard to understand for someone with a limited background. Then comes the problem of actually initializing the SD card. it looks like we will use FAT32 and a 16 GB card but im not sure if more must be done before i can use it. In general is it possible to push raw data straight to the memory address of the SD card to be viewed later? We are using CCS 7.4 for all our tasks along with the XDS110 debug probe.

Regards,

Brian Dougenik

RTOS/BEAGLEBK: NetworkIPAddr function call

$
0
0

Part Number:BEAGLEBK

Tool/software: TI-RTOS

Hi,

I wish to know when does the NDK calls the NetworkIPAddr callback function? In the NDK User's guide document, it says that it is called when an IP address is added or removed. What does that mean? I am using Configuration Manager APIs to configure my application. In my config handle (hCfg), I setup the manual address and add the route (please refer to source code). Using this hCfg, I call the NC_NetStart function. Doesn't it mean that I am adding an IP? My application doesn't call the NetworkIPAddr hook function. However, my app does call the NetworkOpen hook function. Here is my source code. I am using my own network driver here instead of EMAC driver from TI-RTOS.

#include <ti/ndk/inc/netmain.h>
#include <stdio.h>
#include <ti/ndk/inc/stkmain.h>
/*
 *  ======== main.c ========
 */

#include <xdc/std.h>

#include <xdc/runtime/Error.h>
#include <xdc/runtime/System.h>

#include <ti/sysbios/BIOS.h>

#include <ti/sysbios/knl/Task.h>

#include <ti/board/board.h>
#include <ti/drv/uart/UART.h>
#include <ti/drv/uart/UART_stdio.h>
/*
 *  ======== taskFxn ========
 */

#define MAX_TABLE_ENTRIES   3
#define UDPHANDLERSTACK 1024
// Our NETCTRL callback functions
static void   NetworkOpen();
static void   NetworkClose();
static void   NetworkIPAddr( uint32_t IPAddr, uint32_t IfIdx, uint32_t fAdd );

Void udpHandler(UArg arg0, UArg arg1);
// Fun reporting function
static void   ServiceReport( uint32_t Item, uint32_t Status, uint32_t Report, void* hCfgEntry );

extern int CpswEmacInit (STKEVENT_Handle hEvent);
extern int WifiInit (STKEVENT_Handle hEvent);

//---------------------------------------------------------------------------
// Configuration
//
char *HostName    = "EchoHost";
char *LocalIPAddr = "192.168.1.4";
char *LocalIPMask = "255.255.255.0";    // Not used when using DHCP
char *GatewayIP   = "192.168.1.1";    // Not used when using DHCP
char *DomainName  = "demo.net";         // Not used when using DHCP
char *DNSServer   = "0.0.0.0";          // Used when set to anything but zero

/*
 *  ======== main ========
 */
static int nimu_device_index = 0U;
NIMU_DEVICE_TABLE_ENTRY NIMUDeviceTable[MAX_TABLE_ENTRIES];

Int main()
{ 
    NIMUDeviceTable[nimu_device_index++].init =  &WifiInit ;
    NIMUDeviceTable[nimu_device_index].init =  NULL ;

    BIOS_start();    /* does not return */
    return(0);
}
int StackTest()
{
    Board_STATUS boardInitStatus =0;
    Board_initCfg boardCfg;
    int rc;
    void*          hCfg;

    boardCfg = BOARD_INIT_PINMUX_CONFIG |
            BOARD_INIT_MODULE_CLOCK | BOARD_INIT_UART_STDIO;

    Board_init(boardCfg);
    if (boardInitStatus !=0)
        {
            UART_printf("Board_init failure\n");
            return(0);
        }
        UART_printf("Board_init success\n");

   //
   // THIS MUST BE THE ABSOLUTE FIRST THING DONE IN AN APPLICATION before
   //  using the stack!!
   //

   rc = NC_SystemOpen( NC_PRIORITY_LOW, NC_OPMODE_INTERRUPT );
   if( rc )
       {
           UART_printf("NC_SystemOpen Failed (%d)\n",rc);
           for(;;);
       }

   /*Create and build the system configuration from scratch without using XGCONF*/

   hCfg = CfgNew();
       if( !hCfg )
       {
           UART_printf("Unable to create configuration\n");
           return 0;
       }

   // We better validate the length of the supplied names
   if( strlen( DomainName ) >= CFG_DOMAIN_MAX ||
       strlen( HostName ) >= CFG_HOSTNAME_MAX )
   {
       UART_printf("Names too long\n");
       return 0;
   }

   // Add our global hostname to hCfg (to be claimed in all connected domains)
   CfgAddEntry( hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_HOSTNAME, 0,
                strlen(HostName), (uint8_t *)HostName, 0 );

   // If the IP address is specified, manually configure IP and Gateway
       //if (!platform_get_switch_state(1))
   if (1)
   {
       CI_IPNET NA;
       CI_ROUTE RT;
       uint32_t      IPTmp;

       // Setup manual IP address
       memset( &NA, 0, sizeof(NA) );
       NA.IPAddr  = inet_addr(LocalIPAddr);
       NA.IPMask  = inet_addr(LocalIPMask);
       strcpy( NA.Domain, DomainName );
       NA.NetType = 0;

       // Add the address to interface 1
       CfgAddEntry( hCfg, CFGTAG_IPNET, 1, 0,
                    sizeof(CI_IPNET), (uint8_t *)&NA, 0 );

       // Add the default gateway. Since it is the default, the
       // destination address and mask are both zero (we go ahead
       // and show the assignment for clarity).
       memset( &RT, 0, sizeof(RT) );
       RT.IPDestAddr = 0;
       RT.IPDestMask = 0;
       RT.IPGateAddr = inet_addr(GatewayIP);

       // Add the route
       CfgAddEntry( hCfg, CFGTAG_ROUTE, 0, 0,
                    sizeof(CI_ROUTE), (uint8_t *)&RT, 0 );

       // Manually add the DNS server when specified
       IPTmp = inet_addr(DNSServer);
       if( IPTmp )
       CfgAddEntry( hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER,
                    0, sizeof(IPTmp), (uint8_t *)&IPTmp, 0 );
    }
   // Else we specify DHCP
   else
   {
       CI_SERVICE_DHCPC dhcpc;

       // Specify DHCP Service on IF-1
       memset( &dhcpc, 0,sizeof(dhcpc) );
       dhcpc.cisargs.Mode   = CIS_FLG_IFIDXVALID;
       dhcpc.cisargs.IfIdx  = 1;
       dhcpc.cisargs.pCbSrv = &ServiceReport;
       CfgAddEntry( hCfg, CFGTAG_SERVICE, CFGITEM_SERVICE_DHCPCLIENT, 0,
                        sizeof(dhcpc), (uint8_t *)&dhcpc, 0 );
       }
   //
   // Configure IPStack/OS Options
   //

   // We don't want to see debug messages less than WARNINGS
   rc = DBG_WARN;
   CfgAddEntry( hCfg, CFGTAG_OS, CFGITEM_OS_DBGPRINTLEVEL,
                CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (uint8_t *)&rc, 0 );

   //
   // This code sets up the TCP and UDP buffer sizes
   // (Note 8192 is actually the default. This code is here to
   // illustrate how the buffer and limit sizes are configured.)
   //

   // UDP Receive limit
   rc = 8192;
   CfgAddEntry( hCfg, CFGTAG_IP, CFGITEM_IP_SOCKUDPRXLIMIT,
                CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (uint8_t *)&rc, 0 );

   //
   // Boot the system using this configuration
   //
   // We keep booting until the function returns 0. This allows
   // us to have a "reboot" command.
   //
   do
   {
      rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr );
   } while( rc > 0 );

   // Delete Configuration
   CfgFree( hCfg );
   NC_SystemClose();
   return(0);

}

//
// Service Status Reports
//
// Here's a quick example of using service status updates
//
static char *TaskName[]  = { "Telnet","HTTP","NAT","DHCPS","DHCPC","DNS" };
static char *ReportStr[] = { "","Running","Updated","Complete","Fault" };
static char *StatusStr[] = { "Disabled","Waiting","IPTerm","Failed","Enabled" };
static void ServiceReport( uint32_t Item, uint32_t Status, uint32_t Report, void* h )
{
    UART_printf( "Service Status: %-9s: %-9s: %-9s: %03d\n",
            TaskName[Item-1], StatusStr[Status],
            ReportStr[Report/256], Report&0xFF );

    //
    // Example of adding to the DHCP configuration space
    //
    // When using the DHCP client, the client has full control over access
    // to the first 256 entries in the CFGTAG_SYSINFO space.
    //
    // Note that the DHCP client will erase all CFGTAG_SYSINFO tags except
    // CFGITEM_DHCP_HOSTNAME. If the application needs to keep manual
    // entries in the DHCP tag range, then the code to maintain them should
    // be placed here.
    //
    // Here, we want to manually add a DNS server to the configuration, but
    // we can only do it once DHCP has finished its programming.
    //
    if( Item == CFGITEM_SERVICE_DHCPCLIENT &&
        Status == CIS_SRV_STATUS_ENABLED &&
        (Report == (NETTOOLS_STAT_RUNNING|DHCPCODE_IPADD) ||
         Report == (NETTOOLS_STAT_RUNNING|DHCPCODE_IPRENEW)) )
    {
        uint32_t IPTmp;

        // Manually add the DNS server when specified
        IPTmp = inet_addr(DNSServer);
        if( IPTmp )
            CfgAddEntry( 0, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER,
                         0, sizeof(IPTmp), (uint8_t *)&IPTmp, 0 );
    }
}

//
// NetworkOpen
//
// This function is called after the configuration has booted
//

static void NetworkOpen()
{

    TaskCreate(udpHandler,"NetworkTask",1, UDPHANDLERSTACK,0,0,0);
}

//
// NetworkClose
//
// This function is called when the network is shutting down,
// or when it no longer has any IP addresses assigned to it.
//
static void NetworkClose()
{

}
//
// NetworkIPAddr
//
// This function is called whenever an IP address binding is
// added or removed from the system.
//
static void NetworkIPAddr( uint32_t IPAddr, uint32_t IfIdx, uint32_t fAdd )
{
    uint32_t IPTmp;

    if( fAdd )
        UART_printf("Network Added: ");
    else
        UART_printf("Network Removed: ");

    // Print a message
    IPTmp = NDK_ntohl( IPAddr );
    UART_printf("If-%d:%d.%d.%d.%d\n", IfIdx,
            (uint8_t)(IPTmp>>24)&0xFF, (uint8_t)(IPTmp>>16)&0xFF,
            (uint8_t)(IPTmp>>8)&0xFF, (uint8_t)IPTmp&0xFF );
}

/*
 *  ======== udpHandler ========
 *  Creates new Task to handle new udp connections.
 */
Void udpHandler(UArg arg0, UArg arg1)
{
    char data[]= "Hello";
    struct sockaddr_in cli_addr;



    SOCKET s = NDK_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (s <0)
    {
       UART_printf("Socket not created: %d\n", fdError());
    }


    memset(&cli_addr, 0, sizeof(cli_addr));
    cli_addr.sin_family = AF_INET;
    cli_addr.sin_addr.s_addr = inet_addr("192.168.1.10");
    cli_addr.sin_port = 17225;



    int err = NDK_sendto(s,data,sizeof(data),0,(struct sockaddr *)&cli_addr, sizeof(cli_addr));
    if(err<0)
    {

        UART_printf("Error: %x\n",fdError());
    }

    err = NDK_shutdown(s,0);
    if(err<0)
        {
            UART_printf("Error: %x\n",fdError());
        }

    //NC_NetStop(1);
}

SM320C6727B-EP: Powering device above recommended operating voltage but below maximum operating voltage

$
0
0

Part Number:SM320C6727B-EP

I am working a design that incorporates the Microchip RT3 Proasic SOC chip mated up to the TMS320C6727B-SP DSP. To perform in--system programming of the SOC device, I need to have the 1.2V rail switch up to 1.5V during the reprogramming sequence for the SOC device. There is currently only a single 1.2V power rail on this board. The DSP does not need to be operational during this event and I can hold it in reset while reprogramming the RT3 SOC. 

The DSP would not be operating during this event but would be powered with 1.5 V on its's core Vcc power inputs. The recommended operating range for the DSP is from 1.14 to 1.32V; nominally 1.2V.

The absolute maximum voltage range for these pins is -0.2 to 1.8V. This would never be performed during tactical operation but would occur when first configuring the device in the factory or when an upgrade needs to be performed on this system. Is this approach acceptable? Or, would it be a risky thing to implement?  Any technical support that could be offered in addressing this issue would be greatly appreciated. 

Linux/AM3358: Problem with using remoteproc driver, Linux SDK v05.02

$
0
0

Part Number:AM3358

Tool/software: Linux

HI,

I am facing a problem with using remoteproc driver. I have located am335x-pru1-fw.out file in the /lib/firmware location of the Linux fileysystem. After running:

  • echo 'am335x-pru1-fw' > /sys/class/remoteproc/remoteproc2/firmware

I can edit the firmware file and confirm that command above was successful. However, whenever I try:

  • echo 'start' > /sys/class/remoteproc/remoteproc2/state

I get following logs:

[  586.971726] remoteproc remoteproc2: powering up 4a338000.pru
[  586.977723] remoteproc remoteproc2: Direct firmware load for am335x-pru1-fw failed with error -2
[  586.991940] remoteproc remoteproc2: request_firmware failed: -2
[  587.009465] remoteproc remoteproc2: Boot failed: -2
-sh: echo: write error: No such file or directory

Runninfg "lsmod | grep_pru" shows (PRUs look enabled?):


pru_rproc              20480  0
pruss_intc             16384  1 pru_rproc
pruss                  16384  1 pru_rproc
remoteproc             40960  3 pru_rproc,wkup_m3_rproc,wkup_m3_ipc
pruss_soc_bus          16384  0

I was using previously remoteproc with kernels from begleboard.org. Currently I am working with recent Linux SDK from TI (v05.02 ), AM3358. The default out-of-box echo rmpsg demo works.

I will appreciate Your comments.

Thanks

logs:

Compiler: Starterware UART.C mistake should be looked in to, I fixed it in my company's copy

$
0
0

Tool/software: TI C/C++ Compiler

In what looks to be the latest version f Starterware 2.1.1.0 dated 2013, there is a mistake in UART.C:

#define UART_IIR_FCR_MIRROR_MASK (0x000000c0U)
#define UART_IIR_FCR_MIRROR (0x000000C0u)
#define UART_IIR_FCR_MIRROR_SHIFT (0x00000006u)


uint32_t UARTIsFifoEnabled(uint32_t baseAddr)
{
    uint16_t lcrRegVal = 0U;
    uint32_t status = FALSE;

    /* Switch to Register Operational Mode of operation. */
    lcrRegVal = UARTSetRegAccessMode(baseAddr, UART_REG_ACCESS_MODE_OPER);

    if(UART_IIR_FCR_MIRROR_MASK == HW_RD_FIELD16((baseAddr + UART_IIR), UART_IIR_FCR_MIRROR))
    {
        status = TRUE;
    }

    /* Restoring the value of LCR. */
    HW_WR_REG16(baseAddr + UART_LCR, lcrRegVal);

    return status;
}

The MACRO will retrieve the FCR Mirror bits from the IIR register and then mask them with 0xC0, then sift the result right by 6 bits to place the two bits in to the least significant bits, then the code checks to see if the result is 0xC0 which is incorrect. The code should look more like this:

    if(0 != HW_RD_FIELD16((baseAddr + UART_IIR), UART_IIR_FCR_MIRROR))

The desire is to test the two FCI Mirror bits to see if they are either 00 or 11. The code as provided by TI always returns FALSE when someone calls the API to determine if their UART's FIFO is enabled or not.

I've fixed it in my company's copy of Starterware and because this is the second issue we have had (the first one was MACRO expansion of arguments not wrapped in parenthesis)

#define EDMA_TPCC_DMAQNUM(n) ((uint32_t)0x240U + (n * 0x4U))  <-- n not wrapped (n)

HW_WR_FIELD32(baseAddr + EDMA_TPCC_DMAQNUM(chNum >> 3U),
    EDMA_TPCC_DMAQNUM_E1, queueNum);

We are having one of our software engineers go through the Starterware modules looking for any other issues. This isn't a request for assistance, it's just a request that TI correct the function in future versions of Starterware.

Thanks!

 


AM5718: SYS_CLKIN2 Purpose

$
0
0

Part Number:AM5718

Hello,

I have a custom AM5718 board with both OSC0 (for SYS_CLKIN1) and OSC1 (for SYS_CLKIN2) populated, similar to  AM57x8 EVM.

I want to remove OSC1 in the next revision since it's listed as optional in the datasheet, so I tried disabling it, and, as far as I can tell, everything still works.

Is there a reason why OSC1(SYS_CLKIN2) would be needed?

I found an answer to a similar question pointing to chapter 3 of the TRM. I looked there and OSC1 is listed as optional, but I could not find any mention of a case where OSC1 is needed.

In other words, is there any functionality which requires OSC1/SYS_CLKIN2?

Thank you,

--Tavi

Linux/AM5728: Qt proj build with CMAKE, how to confirm it's using opengles and HW-accelerator

$
0
0

Part Number:AM5728

Tool/software: Linux

Hi,

   Our proj use qt to do ui work, but building with CMAKE not using qmake.

I check the example from TI "qt-opencv-opencl-openglmultithreaded', there is no desc for using OpenGLes or hw-acc enable.


How can I confirmed that , in our proj, building by CMAKE, is using opengl/hw-c or not?

Thx in advanced!

SamualP

Linux/DRA746: Some 1080 videos are playing in slow motion

$
0
0

Part Number:DRA746

Tool/software: Linux

Hi TI team,

We found Some 1080 videos are playing in slow motion(video is playing in slow motion, Audio is playing at normal speed). We tried to play from our app and gst-launch-1.0, the same behavior.

Uploaded the video to bellowing, could you please comment from your point of view. Thanks.

https://transfer.harman.com/link/2ghA3ZCLrQz6mvETQ9yy0F

how to analysize the result of glsdkstatcoll bandwidth tool.

$
0
0

Part Number:TDA2PXEVM

Tool/software: Linux

Hi,

Per thread https://e2e.ti.com/support/processors/f/791/t/772953, I have made glsdkstatcoll bandwidth tool work properly with TDA2X VSDK. Below is the snapshot of the statcoll_plot output in the host. I wonder how should I calculate the total Average BW and peak BW , is it just to sum each column in the table?

Also for Rishabh's nice comments, "Vision SDK default configuration already enables a BIOS Task that is also reading the statistics block of the SoC. Make sure that you disable that before using the glsdkstatcoll, otherwise the results from both will be wrong." Is the change needed even when Apps.out is not launched? And Can you help indicate how to make the change?

TMS320C6748: Difference between TMS320C6748EZWTD4 and TMS320C6748EZWTA3

$
0
0

Part Number:TMS320C6748

Hi,

I would like to know the differences between TMS320C6748EZWTD4 and TMS320C6748EZWTA3.

As per datasheet, the difference between the two can be summarized as follows,

ParameterTMS320C6748EZWTD4 TMS320C6748EZWTA3
Operating junction temperature- 40 to +90 °C- 40 to +105 °C
Speed grade456MHz375MHz
Nominal CVDD voltage1.3V1.2V
Power on hours (hours)100,00075,000

Is there any other parameter (in terms of operational and reliability) which differs between these two part numbers?

Regards,

Archana Rao

Viewing all 17527 articles
Browse latest View live


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