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

Linux/AM5708: Where can I get a default configuration file for AM5708?

$
0
0

Part Number:AM5708

Tool/software: Linux

Hi Champs,

I can not find the default configuration file for AM5708 in Linux PSDK v5.02.
So, could you please let me know whrere I can get the file?

Best regards,
J-breeze


Linux/AM5728: EVM Camera Question

$
0
0

Part Number:AM5728

Tool/software: Linux

First, when EVM started, run the followed command :
ls /dev/video*
the result is 
/dev/video0  /dev/video10   /dev/video11
and run the followed command :
dmesg | grep ov1063x
the result is
nothing
described, I changed the uEnv.txt in SD card by adding bellow text.
fdtfile=am57xx-evm-reva3-cam-ov10635.dtb
 after restart the EVM, run the followed command:
ls /dev/video*
the result is 
/dev/video0  /dev/video10   /dev/video11 again.
then run the followed command :
dmesg | grep ov1063x
the result is 
[    1.630201] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/clk_ov10635[0]' - status (0)                                                  
[    7.518625] of_get_named_gpiod_flags: can't parse 'mux-gpios' property of node '/ocp/i2c@4807c000/ov10635@30[0]'                                             
[    7.518656] ov1063x 4-0030: GPIO lookup for consumer reset                   
[    7.518660] ov1063x 4-0030: using device tree for GPIO lookup                
[    7.518689] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/i2c@4807c000/ov10635@30[0]' - status (0)                                   
[    7.518744] ov1063x 4-0030: GPIO lookup for consumer powerdown               
[    7.518748] ov1063x 4-0030: using device tree for GPIO lookup                
[    7.518771] of_get_named_gpiod_flags: parsed 'powerdown-gpios' property of node '/ocp/i2c@4807c000/ov10635@30[0]' - status (0)                               
[    7.801383] ov1063x: probe of 4-0030 failed with error -121      
what’s wrong?
 
By the way, my version is ti-processor-sdk-linux-am57xx-evm-05.02.00.10
 
AM572x  EVM Camera Module is as the picture
thanks.

Linux/TDA2E: Software design for connecting SOC to MMC1 to SD card

$
0
0

Part Number:TDA2E

Tool/software: Linux

When the SD card is taken out, the SOC does not need to read and write the SD card, so we want to configure the MMC1 port to be a zero-level output.

But the information we learned is that the software can't configure pinmux as gpio, can't set gpio function, we want to confirm whether the information is correct? .
How can we set the MMC1 port output zero level when the card is pulled?

Our current hardware design: SD card VCC power supply is controlled by a controllable 3.3v, SOC MMC1 I / O power supply is supplied by SOC VDDSHV8, and SOC MMC1 port is used as SDBOOT function.

RTOS/TMS320C6748: If i want to use pdk pdk_omapl138_1_0_7 to careate the example project, what can i do

$
0
0

Part Number:TMS320C6748

Tool/software: TI-RTOS

I have a c6748 LCDK, what can I do to create the example project? I use the .bat but there is a error.

C:\ti_i\pdk_omapl138_1_0_7\packages>pdkProjectCreate.bat C6748
=========================================================================
Configuration:
   SOC             :   C6748
   BOARD           :   all
   ENDIAN          :   little
   MODULE          :   all
   PROJECT_TYPE    :   all
   PROCESSOR       :   arm
   PDK_SHORT_NAME  :   C:\ti_i\PDK_OM~1\packages\
=========================================================================
Checking Configuration...
ERROR: The C6748 soc does not contain an arm processor
Exiting...
=========================================================================

AM3352: Revision changed from Rev.J to K

$
0
0

Part Number:AM3352

Hi

Could you please tell me the impact of revision change about RGMII contents.

The following sections would be hit.

-Removed Transition time, RD and Transition time, RX_CTL from Timing Requirements for RGMII[x]_RD[3:0], and RGMII[x]_RCTL - RGMII Mode  Page.124

-Removed Transition time, TXC from Switching Characteristics for RGMII[x]_TCLK - RGMII Mode  Page.125

-Removed Transition time, TD and Transition time, TX_CTL from Switching Characteristics for RGMII[x]_TD[3:0], and RGMII[x]_TCTL - RGMII Mode  Page.125

1.

If the customer designed circuit for RGMII according to Rev.J, is there impact for operation?

2.

Change for RGMII is that the parameter is removed.  Do you mean that the designer did not need to consider the parameter that is removed in Rev.K?

BestRegards

RTOS/DRA745: VSDK0304: LINK ERR and NULL pointer dereference at virtual address 00000000

$
0
0

Part Number:DRA745

Tool/software: TI-RTOS

Dear all,

When I boot from ramdisk.gz, I encountered an issue:

 33.711675 s:  ENCODE: Creating CH0 of 2560 x 1440,  pitch = (4096, 4096) [1] [0], bitrate = 10000 Kbps ... 
[20190319 11:59:28][   27.389015] Unable to handle kernel NULL pointer dereference at virtual address 00000044.E.IVAHD.02.01.09.01
[20190319 11:59:28]
[20190319 11:59:28] [HOST] [IPU2  ]     33.962514 s:  ENCODE: ERROR: ALGCONTROL FAILED CMD=0x00000001 (status=ffffffff) !!!
[20190319 11:59:28] [HOST] [IPU2  ]     33.962605 s:  LINK ERR::linkID:900004f::channelID:0::errorCode:-5::FileName:iva[   27.401960] pgd = c2298000
[20190319 11:59:30][   27.422920] Unable to handle kernel NULL pointer dereference at virtual address 00000000

The full log as below:

1. Boot from SD ,no  Error. log as below:

(Please visit the site to view this file)

2. make ramdisk.gz, boot from ramdisk.gz, run error. log as below:

(Please visit the site to view this file)

Please help to check and give some comments.

Best Regards,

Fredy

Linux: am574x ddr ecc don't work when map 1GB emif1 to address 0xc0000000

$
0
0

Tool/software: Linux

hello:

Can am574x ddr ecc work  when map 1GB emif1 to address 0xc0000000 not 0x80000000?

Linux/AM5748: TIDL: How to use tidl_model_import.out for tidl_classification demo

$
0
0

Part Number:AM5748

Tool/software: Linux

Hello, TI Experts,

 

We have a question about GUI-demo(TI Deep Learning) in PROCESSOR-SDK-LINUX-AM57X 05_02_00_10.

 We success to run GUI-demo by "runTidlStaticImg.sh" command on TMDSIDK574.

 

Then we tried to convert the below caffe-jacinto model and run by modified "runTidlStaticImg.sh".

https://github.com/tidsp/caffe-jacinto-models/tree/caffe-0.17/trained/image_classification/imagenet_jacintonet11v2/sparse

But we found "Error (Segmentation fault)" like below;

 

Question:

  Do you have same experience like below detail procedure?

 

Detail:

- convert model:

   root@am57xx-evm: tidl_model_import.out tidl_import.txt

   (Please refer attached "tidl_import.txt" & cnv_log.txt file)

 

- run demo

   root@am57xx-evm: cd /usr/share/ti/tidl/examples/classification

   root@am57xx-evm: ./tidl_classification -g 1 -d 2 -e 2 -l ./imagenet.txt -s ./classlist.txt -i ./clips/test10.mp4 -c /home/root/stream_config_j11_v2.txt

   (Please refer attached "stream_config_j11_v2.txt")

 

We would appreciate if you check the behavior with TMDSIDK574 and tell us how to solve this problem.

 

Best regards,

(Please visit the site to view this file)

(Please visit the site to view this file)

(Please visit the site to view this file)


Linux: Can u please provide us the .dts and .dtsi configurations for NAND?

$
0
0

Tool/software: Linux

Hi,

    We have considered NAND flash with DRA71x board for which we have the settings in mux_data.h. The settings are verified by TI already and since the thread was closed, they wanted a separate thread. We wanted .dts and .dtsi configurations as we want to make sure we are on the right track. Please help us. 

thanks,

Harish. 

RTOS/TDA2P-ACD: Dss core open failed!!

$
0
0

Part Number:TDA2P-ACD

Tool/software: TI-RTOS

Hi Rishabh,

I am reopening the thread,

My current usecase with modifications is as below,

"

NetworkRx (A15) -> Decode -> VPE -> Sync -> Dup -> Alg_A (DSP1) -> DssM2mWb -> Display_Video

Dup -> Alg_B (DSP2) -> Alg_C (DSP1)

CANLink (IPU1_0)

OverlayLink (IPU1_0) -> Display_Guidelines

OverlayLink (IPU1_0) -> Display_Grpx

"

As per your suggestion earlier, I have used two different displays for overlaying, one normal display link & another GFX display link. So currently I am using three display links as below,

1. Display_Video with "pPrm_Video->displayId = DISPLAY_LINK_INST_DSS_VID1"

2. Display_Guidelines with "pPrm_Video2->displayId = DISPLAY_LINK_INST_DSS_VID2" &

3. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"

I have added a new function in "vision_sdk\apps\src\rtos\usecases\common\chains_common.c" as below,

""""""

Void ChainsCommon_MyUsecase_SetDisplayPrms(
                                DisplayLink_CreateParams *pPrm_Video,
                                DisplayLink_CreateParams *pPrm_Video2,
                                DisplayLink_CreateParams *pPrm_Grpx,
                                Chains_DisplayType displayType,
                                UInt32 displayWidth,
                                UInt32 displayHeight
                                )
{
    if(pPrm_Video)
    {
        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Video->displayScanFormat = SYSTEM_SF_INTERLACED;
        }

        pPrm_Video->rtParams.tarWidth         = displayWidth;
        pPrm_Video->rtParams.tarHeight        = displayHeight;
        pPrm_Video->displayId                 = DISPLAY_LINK_INST_DSS_VID1;
    }

    if(pPrm_Video2)
    {
        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Video2->displayScanFormat = SYSTEM_SF_INTERLACED;
        }

        pPrm_Video2->rtParams.posX             = 0U;
        pPrm_Video2->rtParams.posY             = 0U;
        pPrm_Video2->rtParams.tarWidth         = 256U;
        pPrm_Video2->rtParams.tarHeight        = 480U;
        pPrm_Video2->displayId                 = DISPLAY_LINK_INST_DSS_VID2;
    }

    if(pPrm_Grpx)
    {
        pPrm_Grpx->rtParams.posX             = 0U;
        pPrm_Grpx->rtParams.posY             = 0U;
        pPrm_Grpx->rtParams.tarWidth         = 640U;
        pPrm_Grpx->rtParams.tarHeight        = 480U;
        pPrm_Grpx->displayId                  = DISPLAY_LINK_INST_DSS_GFX1;

        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Grpx->displayScanFormat = SYSTEM_SF_INTERLACED;
        }
    }    
}  

""""""

But with above create time configurations, when I start my usecase I get below assertion,

"

[IPU1-0]      7.769627 s:  DISPLAY: Create in progress !!!
[IPU1-0]      7.770145 s:  DISPLAY: Create Done !!!
[IPU1-0]      7.770267 s:  DISPLAY: Create in progress !!!
[IPU1-0]      7.770481 s: dispcore/src/vpscore_dss.c @ Line 441:
[IPU1-0]      7.770572 s: Core for this instance is already opened
[IPU1-0]      7.770694 s: dispdrv/src/vpsdrv_displayCore.c @ Line 411:
[IPU1-0]      7.770786 s: Dss core open failed!!
[IPU1-0]      7.770877 s: dispdrv/src/vpsdrv_displayApi.c @ Line 348:
[IPU1-0]      7.770938 s: Core open failed!!
[IPU1-0]      7.771030 s:  Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!
[IPU1-0]      7.771457 s:  Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!

"

I have referred "lvds_vip_sv_analytics_us" usecase, where 4 display links are used with below display ID's,

1. Display_sv with "pSvDisplay->displayId = DISPLAY_LINK_INST_DSS_VID1"

2. Display_sv_org with "pSvOrgDisplay->displayId = DISPLAY_LINK_INST_DSS_VID2"

3. Display_alg with "pFrontCamDisplay->displayId = DISPLAY_LINK_INST_DSS_VID3" and

4. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"

How do I fix these assertions. Please suggest.

Regards,

Abhay

Linux/AM4379: Linux/AM4379: sdram parameter verify

$
0
0

Part Number:AM4379

Tool/software: Linux

We customized our own board based on am437x-IDK, but change sdram to Micron MT41K256M16TW-107 IT.

BTW, the sdram of am437x-IDK is Micron MT41K256M16HA-125:E.

We use the default sdram parameters(as below) to our custom board and it can boot normally. The SDK version is 05.01.00.11.

static const struct emif_regs ddr3_idk_emif_regs_400Mhz = {
	.sdram_config			= 0x61a11b32,
	.sdram_config2			= 0x00000000,
	.ref_ctrl			= 0x00000c30,
	.sdram_tim1			= 0xeaaad4db,
	.sdram_tim2			= 0x266b7fda,
	.sdram_tim3			= 0x107f8678,
	.read_idle_ctrl			= 0x00050000,
	.zq_config			= 0x50074be4,
	.temp_alert_config		= 0x00000000,
	.emif_ddr_phy_ctlr_1		= 0x00008009,
	.emif_ddr_ext_phy_ctrl_1	= 0x08020080,
	.emif_ddr_ext_phy_ctrl_2	= 0x00000040,
	.emif_ddr_ext_phy_ctrl_3	= 0x0000003e,
	.emif_ddr_ext_phy_ctrl_4	= 0x00000051,
	.emif_ddr_ext_phy_ctrl_5	= 0x00000051,
	.emif_rd_wr_lvl_rmp_win		= 0x00000000,
	.emif_rd_wr_lvl_rmp_ctl		= 0x00000000,
	.emif_rd_wr_lvl_ctl		= 0x00000000,
	.emif_rd_wr_exec_thresh		= 0x00000405,
	.emif_prio_class_serv_map	= 0x00000000,
	.emif_connect_id_serv_1_map	= 0x00000000,
	.emif_connect_id_serv_2_map	= 0x00000000,
	.emif_cos_config		= 0x00ffffff
};

Do we need to verify the parameters to make sure it is suitable for our board?

Linux/PROCESSOR-SDK-AM335X: PROCESSOR-SDK-AM335X

$
0
0

Part Number:PROCESSOR-SDK-AM335X

Tool/software: Linux

Hello, All.

I'm inherited a project on customized beaglegone with ti-processor-sdk-linux-am335x-evm-03.01.00.06 / linux-4.4.19

And it works fine, but I want to use KSZ8795 with it and now everything works, but this (including u-boot and hardware).

By now I'm trying to make it compile with entire kernel and modules:

1. copied the all sources from linux-3.3_ksz8795 driver to drivers/net/ethernet/micrel,

2. triple checked Kconfigs, Makefile with single string in it: obj-$(CONFIG_SPI_KSZ8795) += spi-ksz8795.o

3. "make menuconfig" and made right config for project

4. adapted sources for 4.4.19 to avoid errors and warnings for further step

5. compiled it with

../../linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-gcc ../../linux-devkit/sysroots/x86_64-arago-linux/usr/bin/../lib/gcc/arm-linux-gnueabihf/5.3.1/include -I./arch/arm/include -Iarch/arm/include/generated/uapi -Iarch/arm/include/generated  -Iinclude -I./arch/arm/include/uapi -Iarch/arm/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -marm -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Os -Wno-maybe-uninitialized --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(spi-ksz8795)"  -D"KBUILD_MODNAME=KBUILD_STR(spi-ksz8795)" -c -o drivers/net/ethernet/micrel/spi-ksz8795.o drivers/net/ethernet/micrel/spi-ksz8795.c && ../../linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-ld -EL -r  -T ./scripts/module-common.lds --build-id  -o drivers/net/ethernet/micrel/spi-ksz8795.ko drivers/net/ethernet/micrel/spi-ksz8795.o

I got spi-ksz8795.ko . unfortunatelly, I got "insmod: ERROR: could not insert module spi-ksz8795.ko: Invalid module format" after copying that to device, but kernel config slightly differs, so it's ok.

6 Sailed for three days in makefiles of any kind to find the answer: why it doesn't compiles after make clean && make linux ? I tried to make it as Y as M. M is prefered.

6.1 Assume that SDK was configured fine before me and dtb making clearly

6.2 when It makes zImage, directory driver/net/ethernet/micrel is ignored though #define CONFIG_SPI_KSZ8795_MODULE 1 is in include/generated/autoconf.h and include/config/auto* too

6.3 other directories like driver/net/ethernet/microchip and driver/net/ethernet/ti and driver/net/phy/ are seeded with .o files

6.4 when "make modules" it not compiles .ko even if drivers/net/ethernet/micrel/spi-ksz8795.o is on place

Best Regards,

Denis

RTOS/AM6548: How to clear level interrupt on R5F

$
0
0

Part Number:AM6548

Tool/software: TI-RTOS

Hi,

I generate a system event from ICSSG0 PRU0 and routed this via MAIN2MCU_LVL_INTRTR0 to the VIM of R5_0. I registered a ISR on this HWI and it gets executed when I generate the event once with PRU0.
However, the ISR gets executed again and again, even if I cleared the interrupt with OSAL-functions or with the PRUICSS driver. I must miss something but I don't know what..

I've studied the PRUICCS driver example /home/thomas/ti/pdk_am65xx_1_0_3/packages/ti/drv/pruss/test/src
I've worked through the OSAL functions descriptions but it didn't helped.

Here is my code:

1. Initialize board and configure INTC of ICSSG

/*
 *  ======== main ========
 */
Int main()
{ 
    //Initialize the board and the required peripheral for blinking LED
    /* The UART_STDIO initializes the default UART port on the board
     *  and support stdio like UART_printf which is used by appPrint
     *
     *
     */

    Board_STATUS cfg = BOARD_INIT_UART_STDIO | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_MODULE_CLOCK;
    int status = Board_init(cfg);
    if (status != BOARD_SOK) {
         appPrint("\n Error: Board_init failed: error %d", status);
    }
    appPrint("\n Board Init complete");

    //Set CTRLMMR_PADCONFIG136 Register, to configure PIN AB25 as PRU0_GPIO0_GPO11
    HW_WR_REG32(0x0011C220, 0x00010000);

    peripheralInit();

    //Try to get interrupt up and running to trigger/kick the PRU
    PRUICSS_Config *pruIcssCfg;

    int32_t ret;
    ret = PRUICSS_socGetInitCfg(&pruIcssCfg);
    if(ret != PRUICSS_RETURN_SUCCESS)
    {
        appPrint("\n PRU Get init config was not sucessfull!");
        return 0;
    }

    PRUICSS_Handle pruHandle = PRUICSS_create(pruIcssCfg, PRUICCSS_INSTANCE_ONE);

    //Now lets configure the INTC of PRU: Channel 0 should be Mapped to Host Int 0.
    PRUICSS_IntcInitData pruss_intc_config =
    {
         /*Enabled SYSEVTs. -1 indicates end of list*/
         /*I want to enable SYSEVT 16*/
         {ARM_PRU0_EVENT, PRU0_ARM_EVENT, 0xFF},

         /*SysEvt to Channel map. SYSEVTs - Range:0..63 Channels -Range: 0..9
        {-1, -1} indicates end of list*/
         /*I want to map SYSEVT 16 to Channel 0*/
         {
              {ARM_PRU0_EVENT, CHANNEL0, SYS_EVT_POLARITY_HIGH, SYS_EVT_TYPE_PULSE},
              {PRU0_ARM_EVENT, CHANNEL2, SYS_EVT_POLARITY_HIGH, SYS_EVT_TYPE_PULSE},
              {0xFF, 0xFF, 0xFF, 0xFF}
         },

         /*Channel to Host map.Channels -Range: 0..9  HOSTs - Range:0..9
         {-1, -1} indicates end of list*/
         /*I want to map Channel 0 to Host 0 */
         {
              {CHANNEL0, PRU0}, //This is for ARM_PRU0_EVENT
              {CHANNEL2, 2}, //This is for PRU0_ARM_EVENT
              {0xFF, 0xFF}
         },

         /*10-bit mask - Enable Host0-Host9 {Host0/1:PRU0/1, Host2..9 : PRUEVT_OUT0..7)*/
         /*I want to enable Interrupts for Host 0 and Host 2*/
         (PRU0_HOSTEN_MASK | PRU1_HOSTEN_MASK | PRU_EVTOUT0_HOSTEN_MASK)
    };

    ret = PRUICSS_pruIntcInit(pruHandle, &pruss_intc_config);
    if(ret != PRUICSS_RETURN_SUCCESS)
    {
        appPrint("\n PRU Interrupt config was not sucessfull!");
        return 0;
    }

    //Generate System Interrupt 0
    ret = PRUICSS_pruSendEvent(pruHandle, ARM_PRU0_EVENT);
    if(ret != PRUICSS_RETURN_SUCCESS)
    {
        appPrint("\n System Event 0 was not send successfull to PRU!");
        return 0;
    }


    configureInterruptRouter();
    registerISROnPRUEventViaOsal();
    //registerISROnPRUEventViaPRUICSSDriver(pruHandle);

    BIOS_start();

    /*
     *  normal BIOS programs, would call BIOS_start() to enable interrupts
     *  and start the scheduler and kick BIOS into gear.  But, this program
     *  is a simple sanity test and calls BIOS_exit() instead.
     */
    BIOS_exit(0);  /* terminates program and dumps SysMin output */
    return(0);
}

2. Configure MAIN2MCU_LVL_INTRTR0

void configureInterruptRouter()
{
    CSL_IntrRouterCfg intrRouterMain2MCUCfg;


    /* Initialize Main to MCU Interrupt Router config structure */
    intrRouterMain2MCUCfg.pIntrRouterRegs = (CSL_intr_router_cfgRegs *)(uintptr_t)(CSL_MAIN2MCU_LVL_INTRTR0_CFG_BASE);
    intrRouterMain2MCUCfg.pIntdRegs       = (CSL_intr_router_intd_cfgRegs *)(uintptr_t)NULL;
    intrRouterMain2MCUCfg.numInputIntrs   = 192;
    intrRouterMain2MCUCfg.numOutputIntrs  = 64;

    /* Route PRU int router output to MAIN2MCU int router output, MAIN2MCU int router output int number
     * is derived from the MCU GIC interrupt number.*/
    /* 32: ICSSG_0_HOST_INT0 PRU_ICSSG0 host interrupt 2, see TRM 9.4.10 MAIN2MCU_LVL_INTRTR0 Interrupt Map */
    int pruIntRtrInIntNum = 32;

    /* See TRM 9.3.3.2 MAIN2MCU_LVL_INTRTR0 Integration:
     * MAIN2MCU_RTR_LVL_MUX_INTR[63:0] is connected to MCU_R5_CORE0_INT_IN[223:160]
     * Therefore we have a offset of 160. [0] <-> [160]
     * */
    int pruIntRtrOutIntNum = CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2 - 160;
    CSL_intrRouterCfgMux(&intrRouterMain2MCUCfg, pruIntRtrInIntNum, pruIntRtrOutIntNum);
}

3a. Register ISR via Osal functions to the interrupt

/*
 * This registers an ISR to an event from PRU via Osal functionality.
 * It's required, that the component MAIN2MCU_LVL_INTRTR0 is already configured.
 */
void registerISROnPRUEventViaOsal()
{
    /*Register on the interrupt from pru*/
    HwiP_Handle hwiHandle = NULL;
    OsalInterruptRetCode_e retCode;

    OsalRegisterIntrParams_t interruptRegParams;
    /* Initialize with defaults */
    Osal_RegisterInterrupt_initParams(&interruptRegParams);
    interruptRegParams.corepacConfig.isrRoutine = (&dummyIrqHandler);
    interruptRegParams.corepacConfig.priority = 0x20U;
    interruptRegParams.corepacConfig.name=NULL;
    interruptRegParams.corepacConfig.corepacEventNum=CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2;
    interruptRegParams.corepacConfig.intVecNum=CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2; /* Host Interrupt vector */
    /* Register interrupts */
    retCode = Osal_RegisterInterrupt(&interruptRegParams,&(hwiHandle));

    //Enable the interrupt
    //Osal_EnableInterrupt(CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2, CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2);
    if(retCode != osal_OK)
    {
        appPrint("\n Error: Osal register int failed: error %d", retCode);
    }
}

4a. ISR handler which "should" also reset the level interrupt

void dummyIrqHandler(uintptr_t foobar)
{
    Osal_ClearInterrupt(CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2, CSL_MCU0_INTR_MAIN2MCU_LVL_INTR0_OUTL_2);
    GPIO_toggle(1);
}

I also tried step 3 and 4 with PRUICSS driver functions (PRUICSS_registerIrqHandler and PRUICSS_pruClearEvent), register works but ISR will be called over and over again too. I can provide that code too if required.

5. Create event on PRU which is routed to R5F

volatile register uint32_t __R31;

void main(void)
{
    __R31 = 0x21;
}

Additional Information: Registered ISR via Osal functions. I debugged into the callstack when the ISR gets executed.
Hwi.c Hwi_dispatchIRQC(Hwi_Irp irp)

Log_write5(Hwi_LM_begin, (IArg)hwi, (IArg)hwi->fxn,
               (IArg)prevThreadType, (IArg)intNum, hwi->irp);

    if (hwi->triggerType == Hwi_TriggerType_PULSE) {
        Hwi_vim.GROUP[intNum >> 5].ENABLEDSTATUSCLEAR =
            (UInt)(1 << (intNum & 0x1f));
    }

    if (Hwi_dispatcherAutoNestingSupport) {
        Hwi_enable();

        /* call the user's isr */
        (hwi->fxn)(hwi->arg);

        Hwi_disable();
    }
    else {
        /* call the user's isr */
        (hwi->fxn)(hwi->arg);
    }

    if (hwi->triggerType == Hwi_TriggerType_LEVEL) {
        Hwi_vim.GROUP[intNum >> 5].ENABLEDSTATUSCLEAR =
            (UInt)(1 << (intNum & 0x1f));
    }

    /* Ack end of interrupt */
    Hwi_vim.IRQVECADDRESS = intNum;

    Log_write1(Hwi_LD_end, (IArg)hwi);

This function should clear the level interrupt, right? So should I even call the clearInterrupt-function from Osal/PRUICCS?

I hope you can direct me into the right direction.

Best regards,
Thomas



AM5716: Power Supply on AM5716

$
0
0

Part Number:AM5716

Hi,

My customer will use AM5716. AM5716 doesn't support IVA, GPU and HDMI. Should the power pins (VDD_IVA, VDD_GPU, VDDA_GPU and VDDA_HDMI) be connect with power supply?

Best Regards,

M.Ohhashi

Linux/AM5728: How can I use DMA to move and disperse memory?

$
0
0

Part Number:AM5728

Tool/software: Linux

Hi:

Software version: ti-processor-sdk-linux-am57xx-evm-04.03.00.05,  hardware version: AM5728-ES2.0, custom board,

I found that using dmaengine_prep_interleaved_dma() can't move the scattered memory, but I can move the contiguous memory. I want to implement the distributed memory move, help me.

Thanks


Linux/AM5728: The latest status for HDMI HDCP support on AM5728

$
0
0

Part Number:AM5728

Tool/software: Linux

Hello,

Could you tell me the latest status for HDMI HDCP support on AM5728?
We are considering using Processor SDK Linux or Android.

Best Regards,
Nomo

Linux/AM5728: What H.264 CODEC profile does AM5728 support?

$
0
0

Part Number:AM5728

Tool/software: Linux

Hello,

Could you tell me what H.264 CODEC profile is supported on AM5728?
The answered profile we expect is High Profile, Baseline Profile and so on.
We are considering using Processor SDK Linux or Android.

Best Regards,
Nomo

EVMK2H: USB 3.0 device not recognized

$
0
0

Part Number:EVMK2H

Hi Team,

We found that the USB 3.0 device connected to the EVM can't be recognized and have done some tests trying to identify the cause.

1. We have checked that VBUS = 5 V.

2. USBDRVVBUS of U24Y = 5 V.

3. We tried 3 different USB 2.0 devices and all of them worked.

4. We have replaced B22, C839 and C840 with new parts.

5. We have checked that the USB clock generated by U19 is 100 MHz.

What else do you think may be the cause? Or do it need any other data for you to analyze this issue?

Thanks!

Roy Hsu

Linux/AM5728: UART

$
0
0

Part Number:AM5728

Tool/software: Linux

Hi

I am using AM5728 evm with sdk version 05.00.00.15, my requirement is to use UART interface to communicate with an external device.I dont want to disturb UART3 and need to make use of UART 8/9.

Can someone please help me how to achieve this.

Thanks,

Jahnavi

CCS/AM3358: TI AM335x PRUSS PPS generation

$
0
0

Part Number:AM3358

Tool/software: Code Composer Studio

I was able to generate pretty preсise PPS signal using PRU1 with the following simple code:

#include <stdint.h>
#include <pru_cfg.h>
#include "resource_table_0.h"

volatile register uint32_t __R30;

/**
 * main.c
 */
int main(void)
{

    volatile uint32_t gpo;

    /* GPI Mode 0, GPO Mode 0 */
    CT_CFG.GPCFG0 = 0;

   /* Clear GPO pins */
    __R30 = 0x0000;

    while(1){
         gpo = __R30;
         gpo ^= 0x0001; //pr1_pru1_pru_r30_0
         __R30 = gpo;
         __delay_cycles(6000);      // 30us
         gpo ^= 0x0001; //pr1_pru1_pru_r30_0
         __R30 = gpo;
         __delay_cycles(199994000); // second delay - 30us
    }

	return 0;
}

On my Linux part ptpd2 client is running and adjusting system time.  Now I want my PRU PPS generator to start generating the pulse at the beginning of each second of system time (in order to get synchronous PPS on different devices). The only idea that came up into my mind is to use rpmsg to send a message to start from Linux enviroment to the PRU, but I think there will be a lag for linux hwtimer interrupt (which can be measured though) and  for rpmsg itself. So, my question is there a way to do it more cleanly? Maybe there is a way to get system time from PRU1 directly? Thanks) 



   

Viewing all 17527 articles
Browse latest View live


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