Eshtaartha Basu

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 117 total)
  • Author
    Posts
  • in reply to: RPMsg framework Help #14971
    Eshtaartha Basu
    Moderator

      We carefully reviewed the remoteproc initialization log which was shared previously.

      The line “[00000.000][INFO ]Cortex-M4 boot successful with STM32Cube FW version: v1.6.0” indicates that M4 firmware was built using STM32CubeMP1 Firmware v1.6.0. “OSD32MP1-BRK OpenSTLinux | Version: 3.0.1” official image is not compatible with “STM32CubeMP1 Firmware v1.6.0”

      Please rebuild the M4 firmware using STM32CubeMP1 Firmware v1.4.0 and try again.
      (STM32CubeMP1 FW v1.4.0 – https://github.com/STMicroelectronics/STM32CubeMP1/tree/1.4.0)

      We also re-validated the operation of RPMSG framework using “OpenAMP_TTY_echo” project:
      STM32CubeMP1-1.4.0/Projects/STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_TTY_echo

      Validation screenshot attached.

       

      in reply to: Using UART #14958
      Eshtaartha Basu
      Moderator

        Arcady,

        The device tree snippet posted doesn’t look correct. By referencing “uart0”, “uart1”, “uart2” without preceding “&”, you’re re-defining the UARTx peripheral definition instead of referencing and updating existing base definition.

        The base UARTx device tree definitions are already present in the lower level DTS files (one of the many “include” files). For example:

        uart1: serial@48022000 {
                       compatible = “ti,am3352-uart”, “ti,omap3-uart”;
                       ti,hwmods = “uart2”;
                       clockfrequency = <48000000>;
                       reg = <0x48022000 0x2000>;
                       interrupts = <73>;
                       status = “disabled”;
                       dmas = <&edma 28 0>, <&edma 29 0>;
                       dmanames = “tx”, “rx”;
            };

         

        To reference the above definition, enable the peripheral and update pinmux, you need to just refer the existing node’s name with “&” prefix as follows:

        &uart1 {

        pinctrl-names = “default”;
        pinctrl-0 = <&uart1_pins>;
        status = “okay”;

        };

         

        After applying the above fixes and building your DTB, you can double check how the final UARTx node looks like (base definition + your custom updates) by “disassembling” your DTB blob as shown in the link below. This is the fastest way to figure out if your custom updates are actually being reflected in the final DTB.
        https://stackoverflow.com/questions/21670967/how-to-compile-dts-linux-device-tree-source-files-to-dtb

         

         

        in reply to: RPMsg framework Help #14947
        Eshtaartha Basu
        Moderator

          Hello c spengler,

          To help you better, we would need more information about your software build environment. Please provide the version numbers for the following:

          1. Which SDK from Octavo Systems are you using?
          2. CubeIDE version?
          3. CubeFW version?
          4. OpenSTLinux Developer Package version?
          5. Cube Programmer version?

          If you have put together a custom yocto project:
          6. U-Boot version?
          7. TF-A version?
          8. Kernel Version?

          in reply to: Which regulator controls MMC3 IO voltage? #14927
          Eshtaartha Basu
          Moderator

            Doug Springer,

            We need some more information on your use case to help you better.

            1. Are you using an official OSD335x-SM board or a custom version of it?
            1.a If this is a custom board, are all the VDDSHVx pins tied to 3.3V?
            1.b Do you have any pull ups on MMC3 pins?

            2. It’ll be very helpful if you can share your full device tree files and at least the MMC3 interface, VDDSHV connections part of Schematics.

            in reply to: Unable access SPI NOR flash in Linux user space #14890
            Eshtaartha Basu
            Moderator

              Doug Springer,

              Can you please share your full DT files as attachments? This will give us all the info needed to try re-creating the issue and identifying the root cause.

              Meanwhile, please let us know if you have already tried implementing the steps suggested by Jeremie FRANCOIS to resolve a similar problem here – https://octavosystems.com/forums/topic/spi-nor-from-u-boot/#post-6713

               

              in reply to: Memory bus width #14888
              Eshtaartha Basu
              Moderator

                FLeblanc OTI,

                Yes, OSDZU3 DDR bus width is 32 bit.

                in reply to: QSPI boot on OSDZU3EG1-2G-IFA #14786
                Eshtaartha Basu
                Moderator

                  There is a typo in the response you listed. As shown in the “Product Number Information” section of the OSDZU3 Datasheet (screenshot attached) and “VCCO_PSIO_500” section of the OSDZU3 datasheet (screenshot attached):

                  OSDZU3EG1-2G-xFA uses NOR QSPI with 3.3V IO. QSPI is connected to the XCZU3 through Bank 500 I/O and this requires Bank 500 to use 3.3V IO. eMMC interface is also on Bank 500. So, OSDZU3EG1-2G-xFA production parts support QSPI boot and does not support eMMC boot (eMMC boot is only supported with 1.8V IO).

                  OSDZU3EG1-2G-xFB uses NOR QSPI with 1.8V IO. This requires Bank 500 IO to be 1.8V as well. As a result, OSDZU3EG1-2G-xFB production parts support both QSPI and eMMC boot.

                  Note: If you intend to use an external QSPI in addition to the QSPI integrated within the OSDZU3 SiP, please make sure to match the part number and IO voltage.

                  in reply to: M4 Debugging with IAR workbench #14697
                  Eshtaartha Basu
                  Moderator

                    Hello Craig Kleinrichert,

                    M4 supports 2 debug modes:

                    1. Via JTAG/SWD (ST-link) in Engineering Mode using STM32 Cube IDE
                    2. Via Linux Core in Production Mode using STM32 CubeIDE

                    We have not validated the IAR workbench flow.

                    The following tutorial videos from ST provide further clarity:
                    1. STM32MP1 Tips & Tricks – 04 How to debug M4 in production mode with STM32CubeIDE – https://www.youtube.com/watch?v=YIhzzgJmop0

                    2. STM32MP1 Tips & Tricks – 03 How to debug M4 in engineering mode with STM32CubeIDE – https://www.youtube.com/watch?v=HX9rO8IukeI

                    The important thing to keep in mind is that when you’re trying to debug in Production mode, it is mandatory to properly assign resources like clocks, interrupts and other interfaces (GPIO/I2C/SPI) to M4 in the Linux Device Tree. Otherwise, resources are assigned to A7 by default. A good example for this is demonstrated in STM32MP157C-DK2 platform’s boot process. During boot process, DK2 platform will ask the user to select one of the boot modes:

                    Select the boot mode

                    Depending on the selection, the platform pulls a different device tree and boots up. Among the above options, option #1 is the Default option (does not support M4 debug) but option #3 allows you debug M4 in production mode. The device trees referenced above corresponding to each boot mode are available as part of OpenSTLinux Developer Package – https://wiki.st.com/stm32mpu-ecosystem-v3/wiki/STM32MP1_Developer_Package_-_Linux_kernel#Archives. I have also attached the device tree sources for all three boot modes to this thread for quick reference.

                    Observe the resource allocation differences between “stm32mp157c-dk2.dts” and “stm32mp157c-dk2-m4-examples.dts” as captured here – https://www.diffchecker.com/zRWjSmbQ/. Similar modifications may be needed to your custom device tree to assign resources for M4 and debug it in production mode.

                    Depending on your M4 use case, the above videos and device tree references should help you configure your device for M4 use and debug in production mode.

                    in reply to: OSD335x-SM #14630
                    Eshtaartha Basu
                    Moderator

                      Hello Lianne,

                      BeagleBone Black-Wireless uses OSD335x SiP (not the OSD335x-SM) as described here – https://www.beagleboard.org/blog/2016-09-26-meet-beaglebone-black-wireless.

                      The processor integrated within OSD335x is AM335x – listed under “Supporting Feature List” of the above link.

                      For detailed information on MCSPI, please refer to section “Multichannel Serial Port Interface (McSPI).” of the AM335x Technical Reference Manual (TRM) here – https://www.ti.com/lit/ug/spruh73p/spruh73p.pdf. The TRM should be referred for info on any other functionality of AM335x as well.

                      The DMA + MCASP demos discussed in this thread should help you get started  – https://e2e.ti.com/support/processors-group/processors/f/processors-forum/827625/ccs-am3358-dma-usage

                       

                      in reply to: Linux Kirkstone 5.15 #14523
                      Eshtaartha Basu
                      Moderator

                        Hello gil_he,

                        We do provide meta-layer for Kirkstone support – https://github.com/octavosystems/meta-octavo-osd32mp1/tree/kirkstone

                        The README has all the information required to build and use the layer.

                        in reply to: Weston desktop on Display Port with Petalinux 2023.1 BSP #14233
                        Eshtaartha Basu
                        Moderator

                          Hello  FLeblanc OTI,

                          Once you create a project using the OSDZU3 Petalinux 2023.1 BSP, you can find an if/else statement in “weston.env” file under “meta-osdzu3” layer at:
                          <your_bsp_project_dir>/project-spec/meta-osdzu3/recipes-graphics/wayland/weston-init/weston.env. The function helps choose between LVDS and DP outputs. For debugging, you could modify this function to your liking and see how things change. Screenshots attached.

                          However, the recommended approach for long term modifications to the behavior is to create your own custom meta-user layer, add the layer to the project and override the graphics settings of meta-osdzu3 from your layer. Your own custom user layer would help you modify several other settings of the project as well, all under one layer, without touching/modifying the official layers underneath.

                          Attachments:
                          in reply to: Waking up from sleep. #13705
                          Eshtaartha Basu
                          Moderator

                            Hello Carel,

                            Asserting nPONKEY and WAKEUP (PC13) do not work in your use case because your PMIC is in ALTERNATE (Low Power) mode and not in OFF state/NO_SUPPLY state since PWR_ON/PMIC_PWRCTRL pin is asserted by RTC.

                            As indicated by PMIC datasheet, the STPMIC1 offers 2 independent POWER_ON modes called MAIN and ALTERNATE.
                            Switching between these modes is driven by the application processor through PWRCTRL pin.

                            See highlighted sentences of the attached screenshots from the official documentation for more information. If you have access to PWR_ON/PMIC_PWRCTRL pin on your board, you can probe it to see how its state changes between “sleep” and “wake-up”.

                            in reply to: Anyone know the bandwidth of the TSC_ADC channel? #12097
                            Eshtaartha Basu
                            Moderator

                              Hello JohnDuq,

                              Are you using Linux OS or barebone code? Hope this helps (see response by “seva titov”) – https://stackoverflow.com/questions/25796901/increase-beaglebone-black-adc-sampling-rate#:~:text=Sampling%20rate%20of%20AM335x%20ADC%20is%20200K%20(link).

                              in reply to: OSD32MP153C-512M-BAA OSC32_IN #12096
                              Eshtaartha Basu
                              Moderator

                                Hello gil_he,

                                External oscillators are generally more accurate and have less jitter compared to internal ones. If timing precision is not a concern, internal oscillator can be used keeping tolerances in mind.

                                If RTC is not required, LSE oscillator is not necessary. You can leave its pins floating as recommending here – https://octavosystems.com/app_notes/osd32mp15x-schematic-checklist/#Reset%20and%20Clock

                                in reply to: SD Boot failure, Good PMIC And Clock #12095
                                Eshtaartha Basu
                                Moderator

                                  Hello amcfarland,

                                  Glad to know that you were able to resolve the issue. Moving forward, we recommend updating your device tree to accurately capture any new hardware or other hardware modifications. You can use this app note as a starting point for device tree updates – https://octavosystems.com/app_notes/osd335x-design-tutorial/osd335x-lesson-2-minimal-linux-boot/linux-device-tree/.

                                Viewing 15 posts - 1 through 15 (of 117 total)