This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x EDMA doesn't start

Hi

I am developing a device driver for BeagleBone Black that uses EDMA from AM335x. I need to trigger the EDMA channel manually ( by software ).

After all settings, if I try to start EDMA with edma_start(), nothing happens. Looking into code of edma_start(), apparently there is hardware event assotiation already programmed in the channel that I am using, so, it doesn't activate bit in ESR register ( manual triggering ).

How can I read EER register ( or relevant registers that programs hardware event ) in a kernel module to see its contents?

Is it possible that Device Tree set EER at boot cycle, if I defined GPIO0_7 as XDMA_EVENT_INTR2?

Thanks

Sergio

/**
1278  * edma_start - start dma on a channel
1279  * @channel: channel being activated
1280  *
1281  * Channels with event associations will be triggered by their hardware
1282  * events, and channels without such associations will be triggered by
1283  * software.  (At this writing there is no interface for using software
1284  * triggers except with channels that don't support hardware triggers.)
1285  *
1286  * Returns zero on success, else negative errno.
1287  */
1288 int edma_start(unsigned channel)
1289 {
1290         unsigned ctlr;
1291 
1292         ctlr = EDMA_CTLR(channel);
1293         channel = EDMA_CHAN_SLOT(channel);
1294 
1295         if (channel < edma_cc[ctlr]->num_channels) {
1296                 int j = channel >> 5;
1297                 unsigned int mask = BIT(channel & 0x1f);
1298 
1299                 /* EDMA channels without event association */
1300                 if (test_bit(channel, edma_cc[ctlr]->edma_unused)) {
1301                         pr_debug("EDMA: ESR%d %08x\n", j,
1302                                 edma_shadow0_read_array(ctlr, SH_ESR, j));
1303                         edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
1304                         return 0;
1305                 }
1306 
1307                 /* EDMA channel with event association */
1308                 pr_debug("EDMA: ER%d %08x\n", j,
1309                         edma_shadow0_read_array(ctlr, SH_ER, j));
1310                 /* Clear any pending event or error */
1311                 edma_write_array(ctlr, EDMA_ECR, j, mask);
1312                 edma_write_array(ctlr, EDMA_EMCR, j, mask);
1313                 /* Clear any SER */
1314                 edma_shadow0_write_array(ctlr, SH_SECR, j, mask);
1315                 edma_shadow0_write_array(ctlr, SH_EESR, j, mask);
1316                 pr_debug("EDMA: EER%d %08x\n", j,
1317                         edma_shadow0_read_array(ctlr, SH_EER, j));
1318                 return 0;
1319         }
1320 
1321         return -EINVAL;
1322 }
1323 EXPORT_SYMBOL(edma_start);
  • Moving this to the Linux forum.
  • Sergio,

    I would suggest you to check the EDMA driver user guide and align your driver with the example EDMA driver:

    processors.wiki.ti.com/.../AM335x_EDMA_Driver's_Guide

    The example is available at the below wiki:
    processors.wiki.ti.com/.../EDMA_sample_test_application

    And can also be taken from the AM335x PSP:
    software-dl.ti.com/.../index_FDS.html

    If you need to check registers in kernel, you should first translate the physical address to virtual. You’ll need to map the physically memory to virtual memory using linux kernal ioremap system call. In example, see usb-musb.c for how the usb physical registers are map using ioremap

    static void __iomem *otg_base;

    otg_base = ioremap(OMAP34XX_HSUSB_OTG_BASE, SZ_4K);

    __raw_readl(otg_base + OTG_SYSSTATUS)

    Regards,
    Pavel
  • Hi Pavel Botev

    Let's do by parts: READING EDMA ER REGISTER:

    I did the following piece of code into my driver, but, it didn't work:

    #define EDMA3CC_BASE 0x49000000 // extracted from page 178 of SPRUH73L revision February 2015
    #define ER_OFFSET 0x1000 // extracted from page 1545 of SPRUH73L revision February 2015

    unsigned int er;
    static void __iomem *regs;

    regs = ioremap(EDMA3CC_BASE , SZ_4K);
    er = __raw_readl( regs + ER_OFFSET );
    printk(KERN_ALERT "ER = 0x%X\n", er );


    Follows what happened ( dmesg ) : ( bdq9100 = my driver name )

    [ 6.903237] Unable to handle kernel paging request at virtual address e08fb000
    [ 6.913209] pgd = de6dc000
    [ 6.918214] [e08fb000] *pgd=9f04f811, *pte=00000000, *ppte=00000000
    [ 6.927072] Internal error: Oops: 7 [#1] SMP THUMB2
    [ 6.934403] Modules linked in: bdq9100(O+) omap_rng mt7601Usta(O)
    [ 6.943112] CPU: 0 Tainted: G O (3.8.13-bone79 #1)
    [ 6.951743] PC is at bdq9100_probe+0x271/0x834 [bdq9100]
    [ 6.959600] LR is at ioremap_page_range+0x95/0xf8
    [ 6.966764] pc : [<bf88c48a>] lr : [<c0255c35>] psr: 80000133
    [ 6.966764] sp : de6d7d70 ip : 00000000 fp : c0069fc1
    [ 6.983301] r10: 00000001 r9 : de0acc80 r8 : 00000000
    [ 6.990972] r7 : de7b9190 r6 : de1d0000 r5 : de6a7c00 r4 : de1d0010
    [ 6.999996] r3 : e08fb000 r2 : bf88ed64 r1 : e08fb000 r0 : e08fa000
    [ 7.008993] Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment user
    [ 7.018805] Control: 50c5387d Table: 9e6dc019 DAC: 00000015
    [ 7.026993] Process modprobe (pid: 336, stack limit = 0xde6d6240)
    [ 7.035543] Stack: (0xde6d7d70 to 0xde6d8000)
    [ 9.239416] 7d60: 00000000 22222222 00000000 c0893bb8
    [ 9.262503] 7d80: df37cd88 de0e44c0 df37cd88 de6a7c20 df37cd88 00000000 de6d7db8 df37ce08
    [ 9.285934] 7da0: de1d4b88 c00ff927 df0494b8 c0049657 00000000 de1d0044 de1d4b88 00000000
    [ 9.305465] 7dc0: de1d0010 c094362c de1d0010 bf88ebbc 00000000 bf891001 de0acc80 00000001
    [ 9.328899] 7de0: c0069fc1 c02c82b1 c02c82a1 c02c7753 00000000 de1d0010 bf88ebbc de1d0044
    [ 9.348432] 7e00: 00000000 c02c78b3 bf88ebbc c02c7869 00000000 c02c6887 df049478 de1ecf00
    [ 9.371865] 7e20: bf88ebbc c08a8090 de0e44c0 c02c7247 bf88d688 bf88ebbc bf88ebbc de6d6000
    [ 9.391399] 7e40: c08d4180 00000000 bf891001 c02c7bb5 00000000 00400100 de6d6000 c08d4180
    [ 9.414837] 7e60: 00000000 bf891001 de0acc80 bf891009 00000000 c000867f 00000000 de3ed680
    [ 9.436324] 7e80: 00000000 00000000 00400100 bf88ec08 bf88ebfc 00000001 bf88ec44 00000001
    [ 9.459760] 7ea0: c0069fc1 c006bcf1 bf88ec08 00007fff c00690c1 e0eb7000 e0eb6fff bf88ebfc
    [ 9.479296] 7ec0: 00000000 b6eced50 de6d6000 bf88ed50 e0eb6962 c0252090 6e72656b 00006c65
    [ 9.502725] 7ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 9.526163] 7f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 9.545694] 7f20: 00000000 00000000 00000000 c07adcfc 20000033 00009973 b6edd000 b6eced50
    [ 9.569131] 7f40: 00000080 c000c9e4 de6d6000 00000000 00000000 c006c22f e0ead000 00009973
    [ 9.592570] 7f60: e0eb2b88 e0eb2a0f e0eb5c38 00003d6c 0000482c 00000000 00000000 00000000
    [ 9.612101] 7f80: 00000024 00000025 0000001c 00000019 00000015 00000000 00000000 b6f23338
    [ 9.635541] 7fa0: b6f25bd8 c000c841 00000000 b6f23338 b6edd000 00009973 b6eced50 00000002
    [ 9.659080] 7fc0: 00000000 b6f23338 b6f25bd8 00000080 00000000 b6eced50 00009973 00000000
    [ 9.682459] 7fe0: 00060000 beed0934 b6ec8b07 b6e4c6f4 80000010 b6edd000 9fefe821 9fefec21
    [ 9.693920] [<bf88c48a>] (bdq9100_probe+0x271/0x834 [bdq9100]) from [<c02c82b1>] (platform_drv_probe+0x11/0x14)
    [ 9.707271] [<c02c82b1>] (platform_drv_probe+0x11/0x14) from [<c02c7753>] (driver_probe_device+0x53/0x168)
    [ 9.720156] [<c02c7753>] (driver_probe_device+0x53/0x168) from [<c02c78b3>] (__driver_attach+0x4b/0x4c)
    [ 9.732787] [<c02c78b3>] (__driver_attach+0x4b/0x4c) from [<c02c6887>] (bus_for_each_dev+0x27/0x48)
    [ 9.745070] [<c02c6887>] (bus_for_each_dev+0x27/0x48) from [<c02c7247>] (bus_add_driver+0xe3/0x168)
    [ 9.757363] [<c02c7247>] (bus_add_driver+0xe3/0x168) from [<c02c7bb5>] (driver_register+0x3d/0xc4)
    [ 9.769591] [<c02c7bb5>] (driver_register+0x3d/0xc4) from [<bf891009>] (bdq9100_driver_init+0x8/0xf [bdq9100])
    [ 9.782938] [<bf891009>] (bdq9100_driver_init+0x8/0xf [bdq9100]) from [<c000867f>] (do_one_initcall+0x1f/0xf4)
    [ 9.796334] [<c000867f>] (do_one_initcall+0x1f/0xf4) from [<c006bcf1>] (load_module+0x10d5/0x15b0)
    [ 9.808667] [<c006bcf1>] (load_module+0x10d5/0x15b0) from [<c006c22f>] (sys_init_module+0x63/0x88)
    [ 9.821019] [<c006c22f>] (sys_init_module+0x63/0x88) from [<c000c841>] (ret_fast_syscall+0x1/0x46)
    [ 9.981263] Code: 4aa7 f500 5380 6050 (6819) 48a5
    [ 9.989442] ---[ end trace 3e97a855e1a0f221 ]---


    bdq9100 is the name of my driver.

    What is wrong with this piece of code?

    Sergio
  • Sergio Kamakura said:
    #define EDMA3CC_BASE 0x49000000 // extracted from page 178 of SPRUH73L revision February 2015
    #define ER_OFFSET 0x1000 // extracted from page 1545 of SPRUH73L revision February 2015

    unsigned int er;
    static void __iomem *regs;

    regs = ioremap(EDMA3CC_BASE , SZ_4K);
    er = __raw_readl( regs + ER_OFFSET );
    printk(KERN_ALERT "ER = 0x%X\n", er );

    Can you print the virtual address you have?

    regs = ioremap(EDMA3CC_BASE , SZ_4K);
    printk("regs = 0x%X\n);

  • Hi Pavel Botev

    Follows the virtual address of regs:

    [ 7.224638] WARPTEC: configure_edma()
    [ 7.388373] virtual addr of regs = 0xE08FA000
    [ 7.542042] Unable to handle kernel paging request at virtual address e08fb000
    [ 7.551995] pgd = de774000
    [ 7.556998] [e08fb000] *pgd=9f04f811, *pte=00000000, *ppte=00000000
    [ 7.565903] Internal error: Oops: 7 [#1] SMP THUMB2
    [ 7.573272] Modules linked in: bdq9100(O+) omap_rng mt7601Usta(O)
    [ 7.581984] CPU: 0 Tainted: G O (3.8.13-bone79 #1)
    [ 7.590588] PC is at bdq9100_probe+0x27f/0x840 [bdq9100]
    [ 7.598411] LR is at bdq9100_probe+0x27a/0x840 [bdq9100]
    [ 7.606187] pc : [<bf88c498>] lr : [<bf88c493>] psr: 60000033
    [ 7.606187] sp : dd803d70 ip : e0e05000 fp : c0069fc1
    [ 7.622587] r10: 00000001 r9 : de0dfe80 r8 : dd880990
    [ 7.630196] r7 : bf88ed8c r6 : de1d0000 r5 : de685000 r4 : de1d0010
    [ 7.639171] r3 : e08fb000 r2 : c0889f08 r1 : 80000093 r0 : 00000021
    [ 7.648101] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment user
    [ 7.657886] Control: 50c5387d Table: 9e774019 DAC: 00000015
    [ 7.666010] Process modprobe (pid: 333, stack limit = 0xdd802240)
    [ 7.674505] Stack: (0xdd803d70 to 0xdd804000)
    [ 9.255015] 3d60: 00000000 22222222 00000000 c0893bb8
    [ 9.278159] 3d80: df3ead88 de0e3940 df3ead88 de685020 df3ead88 00000000 dd803db8 df3eae08
    [ 9.301588] 3da0: de1d4b88 c00ff927 df0494b8 c0049657 00000000 de1d0044 de1d4b88 00000000
    [ 9.321117] 3dc0: de1d0010 c094362c de1d0010 bf88ebe4 00000000 bf891001 de0dfe80 00000001
    [ 9.344554] 3de0: c0069fc1 c02c82b1 c02c82a1 c02c7753 00000000 de1d0010 bf88ebe4 de1d0044
    [ 9.364085] 3e00: 00000000 c02c78b3 bf88ebe4 c02c7869 00000000 c02c6887 df049478 de1ecf00
    [ 9.387523] 3e20: bf88ebe4 c08a8090 de0e3940 c02c7247 bf88d690 bf88ebe4 bf88ebe4 dd802000
    [ 9.407055] 3e40: c08d4180 00000000 bf891001 c02c7bb5 00000000 00400100 dd802000 c08d4180
    [ 9.430489] 3e60: 00000000 bf891001 de0dfe80 bf891009 00000000 c000867f 00000000 de5c84c0
    [ 9.450019] 3e80: 00000000 00000000 00400100 bf88ec30 bf88ec24 00000001 bf88ec6c 00000001
    [ 9.473501] 3ea0: c0069fc1 c006bcf1 bf88ec30 00007fff c00690c1 e0eb7000 e0eb6fff bf88ec24
    [ 9.496896] 3ec0: 00000000 b6f58d50 dd802000 bf88ed78 e0eb699a c0252090 6e72656b 00006c65
    [ 9.516425] 3ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 9.539865] 3f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 9.563301] 3f20: 00000000 00000000 00000000 c07adcfc 20000033 000099ab b6f67000 b6f58d50
    [ 9.582832] 3f40: 00000080 c000c9e4 dd802000 00000000 00000000 c006c22f e0ead000 000099ab
    [ 9.606391] 3f60: e0eb2bb8 e0eb2a3f e0eb5c70 00003d94 00004854 00000000 00000000 00000000
    [ 9.629748] 3f80: 00000024 00000025 0000001c 00000019 00000015 00000000 00000000 b6fad338
    [ 9.649258] 3fa0: b6fafbd8 c000c841 00000000 b6fad338 b6f67000 000099ab b6f58d50 00000002
    [ 9.672770] 3fc0: 00000000 b6fad338 b6fafbd8 00000080 00000000 b6f58d50 000099ab 00000000
    [ 9.696134] 3fe0: 00060000 bec5b934 b6f52b07 b6ed66f4 80000010 b6f67000 9fefe821 9fefec21
    [ 9.707440] [<bf88c498>] (bdq9100_probe+0x27f/0x840 [bdq9100]) from [<c02c82b1>] (platform_drv_probe+0x11/0x14)
    [ 9.720739] [<c02c82b1>] (platform_drv_probe+0x11/0x14) from [<c02c7753>] (driver_probe_device+0x53/0x168)
    [ 9.733584] [<c02c7753>] (driver_probe_device+0x53/0x168) from [<c02c78b3>] (__driver_attach+0x4b/0x4c)
    [ 9.746184] [<c02c78b3>] (__driver_attach+0x4b/0x4c) from [<c02c6887>] (bus_for_each_dev+0x27/0x48)
    [ 9.758424] [<c02c6887>] (bus_for_each_dev+0x27/0x48) from [<c02c7247>] (bus_add_driver+0xe3/0x168)
    [ 9.770686] [<c02c7247>] (bus_add_driver+0xe3/0x168) from [<c02c7bb5>] (driver_register+0x3d/0xc4)
    [ 9.782867] [<c02c7bb5>] (driver_register+0x3d/0xc4) from [<bf891009>] (bdq9100_driver_init+0x8/0xf [bdq9100])
    [ 9.796194] [<bf891009>] (bdq9100_driver_init+0x8/0xf [bdq9100]) from [<c000867f>] (do_one_initcall+0x1f/0xf4)
    [ 9.809556] [<c000867f>] (do_one_initcall+0x1f/0xf4) from [<c006bcf1>] (load_module+0x10d5/0x15b0)
    [ 9.821898] [<c006bcf1>] (load_module+0x10d5/0x15b0) from [<c006c22f>] (sys_init_module+0x63/0x88)
    [ 9.834261] [<c006c22f>] (sys_init_module+0x63/0x88) from [<c000c841>] (ret_fast_syscall+0x1/0x46)
    [ 9.996916] Code: d3a7 687b f503 5380 (6819) 487e
    [ 10.005089] ---[ end trace fa6762a2a999a095 ]---

    Sergio
  • Hi Pavel Botev

    My fault.

    I forgot that offset of ER register is 0x1000. The total range necessary for access all EDM3CC registers is 0x100000 ( 0x4900_000 ~ 0x490F_FFFF ).

    So, I did this and worked:

    #define EDMA3CC_BASE 0x49000000 // extracted from page 178 of SPRUH73L revision February 2015
    #define ER_OFFSET 0x1000 // extracted from page 1545 of SPRUH73L revision February 2015

    unsigned int er;
    static void __iomem *regs;

    regs = ioremap(EDMA3CC_BASE , 0x100000 ); // SZ_4K replaced by 0x100000
    er = __raw_readl( regs + ER_OFFSET );
    printk(KERN_ALERT "ER = 0x%X\n", er );
    iounmap(regs);

    The problem is that ER = 0x00, so, I continue not understand why I can't start EDMA using edma_start().

    Sergio

  • Sergio,

    Sergio Kamakura said:
    regs = ioremap(EDMA3CC_BASE , 0x100000 ); // SZ_4K replaced by 0x100000

    These are defined in linux-kernel/include/linux/sizes.h

    #define SZ_4K                0x00001000

    #define SZ_1M                0x00100000

    Sergio Kamakura said:
    The problem is that ER = 0x00, so, I continue not understand why I can't start EDMA using edma_start().

    Which EDMA3 TPCC channel exactly you are trying to trigger manually? EDMA3 TPCC has up to 64 DMA channels and up to 8 QDMA channels.

    What will be transfer you expect, memory to memory, peripheral to memory, memory to peripheral? Where in your driver you write to ESR/ESRH register and what value you write there?

    Do you use the AM335x EDMA Driver APIs?

    Regards,
    Pavel

  • Hi Pavel Botev

    I am using channel 20, defined in dts ( DEVICE TREE ) file.

    I intend to transfer memory to memory.

    The transfer is from a video buffer FIFO, where a video field ( odd field or even field ) is stored by a video decoder through Bt601 interface and transfered to BBB ( BeagleBone Black ) memory through GPMC interface. I mean, the FIFO output is connected to GPMC and the transfer is 16 bits wide.

    This hardware part is already operating and I can capture an image through GPMC using a user space application test and using ordinary memory reads to a file. It is slow, as expected for such kind of transfer.

    But, I believe that I found the problem in my driver. I used as reference a driver from a similar video grabber board, that also uses GPMC. But, it uses DMAR ( DMA Request ) input ( AM335x GPIO0_7 pin as XDMA_EVENT_INTR2 ) to trigger the dma transfer, differently of mine, that use manual triggering. Perhaps the first and only edma_start() is actually starting the edma engine, but, it is waiting the DMAR input pulse to trigger the transfer. In my case, may be the EDMA is starting once, but, needs DMAR pulses to continue the transfer until total count is accomplished. As I don't have such pulses, the EDMA remains blocked indefinitelly.

    I will discard all EDMA routines copied from original driver and I will work in new code, using the AM335x's EDMA_TEST.c as reference, using memory to memory example.

    As soon I have news, I will post them here.

    Thank you Pavel, for now.

    Sergio
  • Hi Pavel Botev

    Do you use the AM335x EDMA Driver APIs?

     

    These AM335x EDMA Driver APIs are for kernel space?

    Do you have a link to download them, please?

    Thanks,

    Sergio

  • Sergio Kamakura said:
    These AM335x EDMA Driver APIs are for kernel space?

    Yes

    Sergio Kamakura said:
    Do you have a link to download them, please?

    These are embedded into the kernel.

    processors.wiki.ti.com/.../AM335x_EDMA_Driver's_Guide

  • Hi Pavel Botev

    Before begin to code my EDMA routines, I want to evaluate the edma_test.c kernel module that I got from your link:

    software-dl.ti.com/.../index_FDS.html

    I tried to compile against kernel 3.8.13-bone79 but unsuccessfully, due missing headers ( <mach/hardware.h>, <mach/irqs.h> and <mach/edma.h>). I tried to compile against kernel 4.1.18-ti-r52, but, unsuccessfully too. Then, I tried kernel 4.4.9-ti-r25 and no results too.

    I found that PSP 04_06_00_08 is based in kernel 3.x, so, why it does not compile in kernel 3.8.13-bone79? This example only compile in PSP 04_06_00_08?

    Oddly, the edma.h header that have some definitions, such DMA_COMPLETE, DMA_CC_ERROR, W8BIT, and so on, simply disappeared.

    How can I get an edma_test.c for actual kernel ( such 4.4.9 )?

    Sergio
  • Sergio,

    This TI EDMA demo should be compatible with TI kernel, which is available in TI SDK. The latest AM335x TI SDK is 3.00.00.04, which comes with TI kernel v4.4.12

    Regards,
    Pavel
  • Sergio Kamakura said:
    I found that PSP 04_06_00_08 is based in kernel 3.x, so, why it does not compile in kernel 3.8.13-bone79? This example only compile in PSP 04_06_00_08?

    I am not familiar with kernel 3.8.13-bone79, from where you get it? If you need to stay with that 3.8.13-bone79, you should align it with the TI kernel 3.x from the TI PSP.

    Regards,
    Pavel

  • Hi Pavel

    I got kernel 3.8.13-bone79 ( Debian Wheezy ) from Beaglebone.org:

    beagleboard.org/latest-images ( in this particular case, using an old release )

    In this moment I need to work with this kernel version ( 3.8.13, debian Wheezy ), because, as I said in previous e-mail, I am working in a driver based in another similar, that only works with 3.8.13. I did a try with other new kernel versions ( 4.1 and 4.4, debian Jessie ) but it does not compile, due several changes in header files. So, to not introduce more variables in my work, I decided to stay for now in 3.8.13 ( debian Wheezy ). Only after my driver work fine I will try more recent kernel versions.

    As a general rule, I normally use an operating example to have a secure reference. This is why I am looking for an edma_test.c example operating in 3.8.13 kernel.

    What do you mean by "you should align it with the TI kernel 3.x from the TI PSP", please?

    Sergio
  • Sergio,

    Sergio Kamakura said:
    I got kernel 3.8.13-bone79 ( Debian Wheezy ) from Beaglebone.org:

    I am not familiar with this kernel, if you need specific support for that kernel, you can use the beaglebone support:

    Sergio Kamakura said:
    What do you mean by "you should align it with the TI kernel 3.x from the TI PSP", please?

    We have llinux kernel in this TI PSP, and EDMA module should work fine with it. So you can track the differences between the beaglebone kernel and TI PSP kernel.

    Regards,
    Pavel

  • Hi Pavel

    Could you indicate a link for procedure on How to Create a bootable uSD card for linux got from TI PSP, for BBB board?

    Normally I get bin image ( Uboot, Kernel + FS ) from BeagleBone.org that is ready to burn into uSD. Is there similar one for PSP?

    Sergio
  • Hi Pavel

    Reading the AM335x PSP user's guide, I found instructions on how to burn the uSD card.

    But, this manual says that PSP doesn't include FileSystem and this must be obtained from SDK.

    I have am335x-evm-linux-sdk-src-03.00.00.04 already installed, but, could'nt find any kind of nfs.tar.gz file. Could you instruct how to get a file system from SDK?

    I intend to use this FileSystem in the AM335x-Linux-PSP-04.06.00.08 version, that has 3.2 kernel version. The FileSystem of SDK 03.00.00.04 ( latest ) will be compatible ( with PSP 04.06.00.08 )?

    Sergio
  • Sergio,

    There are two filesystems in PSDK 03.00.00.04:
    ti-processor-sdk-linux-am335x-evm-03.00.00.04/filesystem/tisdk-rootfs-image-am335x-evm.tar.gz
    ti-processor-sdk-linux-am335x-evm-03.00.00.04/filesystem/arago-base-tisdk-image-am335x-evm.tar.gz

    This directory contains two files, each of which can be used as the target filesystem.

    The tisdk-<platform>-rootfs.tar.gz is a much bigger filesystem that will contain not just base linux software but libraries, demo applications. This is the filesystem which is used to create and SD Card image or when you choose to setup NFS. This filesystem has been designed to support out of the box demos and for software development. However, this comes with the penalty of being really very large.

    The arago-base-tisdk-image-<platform>.tar.gz is a much smaller filesystem. This serves one key purpose. Its a vanilla filesystem with no TI software on that you could use in different scenarios

    Add your software and create a RAMDisk
    Add your software and burn to NAND/NOR Flash
    Run individual TI component examples in a minimal and thereby clean environment.

    Note! The arago-base-tisdk-image-<platform>.tar.gz filesystem does not contain any TI firmware, kernel objects, or libraries.

    See also the below wiki:
    processors.wiki.ti.com/.../Processor_SDK_Linux_Filesystem

    So you might try with the arago-base-tisdk-image-am335x-evm.tar.gz FS with u-boot/kernel from PSP.

    Have you tried to build the EDMA demo for ti-processor-sdk-linux-am335x-evm-03.00.00.04/board-support/linux-4.4.12 ?

    Regards,
    Pavel
  • Sergio,

    Another approach is to test the EDMA module for SDK6, which comes with linux kernel 3.2.0 and PSP04.06.00.11. If you are able to build the EDMA module for that linux kernel, you can use the FS that comes with the SDK6 package. The link to the SDK6 is below:
    software-dl.ti.com/.../index_FDS.html

    SDK6 also comes with two filesystems, just like PSDK 03.00.00.04.

    Another approach is to test the EDMA module for SDK5.05.01.00 which comes with linux kernel 3.2.0 and PSP04.06.00.08. The link to SDK5.05.01.00 is as below:
    software-dl.ti.com/.../index_FDS.html

    Regards,
    Pavel