Linux/AM5708: Where can I get a default configuration file for AM5708?
Linux/AM5728: EVM Camera Question
Part Number:AM5728
Tool/software: Linux
Linux/TDA2E: Software design for connecting SOC to MMC1 to SD card
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
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
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
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
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
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".
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?
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!!
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
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
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
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
Linux/AM5728: How can I use DMA to move and disperse memory?
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
Linux/AM5728: What H.264 CODEC profile does AM5728 support?
EVMK2H: USB 3.0 device not recognized
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
CCS/AM3358: TI AM335x PRUSS PPS generation
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)