• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Digital Signal Processors (DSP) » OMAP™ Processors » OMAP-L13x, AM1x and C674x Processors Forum » AM1808 reset lockup issue at 96MHz OPP
Share
OMAP™ Processors
  • Forums
  • Announcements
Options
  • Subscribe via RSS
Resources
  • OMAP-L1x DSP+ARM9™-based Processors Product Folder
  • OMAP3525/30 DSP+ARM Cortex™-A8-based SOCs Product Folder

  • Top OMAPL Wiki Links
  • OMAPL3x Schematic Review Checklist
  • OMAPL13x Boot resources

  • OMAPL Document Resources
  • OMAPL137 Technical reference manual
  • OMAPL138 Technical reference manual
  • OMAPL Boot loader App Notes
  • AM1808 reset lockup issue at 96MHz OPP

    AM1808 reset lockup issue at 96MHz OPP

    This question is answered
    Gabriele Oberhammer
    Posted by Gabriele Oberhammer
    on Apr 24 2012 10:38 AM
    Prodigy90 points

    We are facing a reset problem on our custom AM1808 board designed using an AM1808 EVM as reference.
    We are using UBL code shipped with ti-sdk-am180x-evm-05.02.00.00  SDK which sets ARM and DDR clocks to 456MHz and 150MHz respectively.
    Cpuidle and Cpufreq are enabled and we are using the userspace governor.


    Here comes the problem: if we set the operating frequency to 96MHz we are unable to reset the board, neither via console reboot command
    nor via hardware reset (!).
    It seems that the device resets but then remains stuck somewhere in the boot process in ROM or UBL because nothing is displayed
    on the console.

    If we substitute the UBL with an old version (dumped from the EVM spi flash) which sets the initial ARM clock to 300MHz there is no problem resetting
    the board even at 96MHz.

    We think this is what happens:

    - On first boot the PMIC starts with a default core voltage of 1.2V with is enough for the core to bootstrap at 456MHz
    - UBL boots U-UBOOT which boots the kernel, everything ok.
    - Then we set the operating frequency to 96MHz (echo 96000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed) and the governor
    then instructs the PMIC to lower the core voltage to 1.0V
    - We issue a reset (via reboot command or hardware button reset)
    - The ARM resets BUT the PMIC is still suppling 1.0V to the core
    - Part of the UBL code wich sets the ARM clock to 456MHz is executed ...but the ARM core is unable to start operation at 456MHz with that voltage and the boot got stuck somewhere (Maybe PLL is not able to get a lock?)


    The following points seems to back the above explanation of the problem:

    - When we use an UBL code which sets the initial clock at 300Mhz the board is able to reset without problems even at 96MHz
    We guess that at 300MHz 1.0 volts are sufficient for the ARM to bootstrap.

    - We patched the 96MHz opp in da850.c to fix the PMIC voltage to 1.2 volt:
    static const struct da850_opp da850_opp_96 = {
        .freq        = 96000,
        .prediv        = 1,
        .mult        = 20,
        .postdiv    = 5,
        //.cvdd_min    = 1000000,
        //.cvdd_max    = 1050000,
        .cvdd_min    = 1200000,    // <------
        .cvdd_max    = 1200000,    // <------
    };
    and as expected with this 'fix' we were are able to reset.


    Questions:

    1. Can you confirm that this is an expected behavior and that the correct solution is to
    rebuild UBL with a different operating point with a lower ARM clock ?

    2. Regarding question 1, we tried to change the UBL operating point as described here:
    http://processors.wiki.ti.com/index.php/OMAPL1:_Changing_the_Operating_Point
    but in our 'include/device.h' file there are no #define DEVICE_OPP_* macros as stated in the wiki page.
    So instead we patched the function 'DEVICE_init()' in the file 'ti-sdk-am180x-evm-05.02.00.00/host-tools/flash_utils/OMAP-L138_FlashAndBootUtils_2_31/OMAP-L138/Common/src/device.c' this way:

    Uint32 DEVICE_init()
    {
      ....
      ....
      ....
      // System PLL Setup
      if (status == E_PASS)
      {
      #if defined(AM1808)
        // CPU(s) at 456 MHz
        // status |= DEVICE_PLL0Init(0, 18, 0, 0, 0, 18, 8);
        status |= DEVICE_PLL0Init(0, 24, 0, 1, 0, 11, 5);         // <--------  patch to force 300 MHz
      #elif defined(AM1810)
        // CPU(s) at 300 MHz
        status |= DEVICE_PLL0Init(0, 24, 0, 1, 0, 11, 5);    
      #else
        // CPU(s) at 300 MHz
        status |= DEVICE_PLL0Init(0, 24, 0, 1, 0, 11, 5);
      #endif  
      }
    ....
    ....

    And again this solves the issue, but is this a correct approach?


    Waiting for your response, thanks in advance. Gabriele.

    AM1808 reset boot opp 96mhz PMIC
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • jc-ti
      Posted by jc-ti
      on Apr 30 2012 09:48 AM
      Mastermind27555 points

      Does the UBL not configure the PMIC via I2C commands to 1.3V? Unless the PMIC defaults to 1.3V out of reset, the UBL would have to configure the PMIC even after power on before changing the PLL to 456 MHz.

      Jeff

      ----------------------------------------------------------------------------------------------------------

      Please click the Verify Answer button on this post if it answers your question.
      ----------------------------------------------------------------------------------------------------------

      Useful Links:
      OMAP-L1x/C674x/AM18x Debug GEL File

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Gabriele Oberhammer
      Posted by Gabriele Oberhammer
      on May 11 2012 03:12 AM
      Prodigy90 points

      jc-ti


      Does the UBL not configure the PMIC via I2C commands to 1.3V?



      Nope! I can confirm that after setting the OPP to 96MHz and rebooting the core voltage is still at 1.0v.

      Let's name <utils> the directory 'ti-sdk-am180x-evm-05.02.00.00/host-tools/flash_utils/OMAP-L138_FlashAndBootUtils_2_31/' where the SDK installer put the code.

      I checked the startup code in '<utils>/common/ubl/src/device.c' and 'common/ubl/src/ubl.c' and find no code related to PMIC setup or I2C.

      So i searched all the sources and found a file named '<utils>/OMAP-L138/common/src/tps65070.c' which contains a series of TPS65070_* functions to set the PMIC operating point, but this file is not compiled and I grepped through all the sources in '<utils>'  and none of this functions is used anywhere.

      Do I need to use a more recent version of the flash_utils? Is the 2.31 versions supplied with the SDK PSP 3.21.00.04 outdated/bugged/incomplete or am I missing something?

      Thanks!

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Gabriele Oberhammer
      Posted by Gabriele Oberhammer
      on May 18 2012 04:41 AM
      Prodigy90 points

      Nobody can comment or give advice for this?

      Am1808 not being able to reboot (or reset) from 96MHz opp with the standard shipped UBL code is a really serous issue from my point of view...  :-/

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Mukul Bhatnagar
      Posted by Mukul Bhatnagar
      on May 18 2012 07:48 AM
      Suggested Answer
      Mastermind24640 points

      Gabriele

      I have forwarded your query to the AM18xx SDK team. I would recommend if the question is not addressed, please also escalate through your local TI field support team, providing information on the end application etc.

      Regards

      Mukul

       

       

      Don't forget to verify answers to your forum questions by using the green "Verify Answer" button.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Gabriele Oberhammer
      Posted by Gabriele Oberhammer
      on Jun 04 2012 11:27 AM
      Verified Answer
      Verified by Gabriele Oberhammer
      Prodigy90 points
      ubl.patch.tar.gz

      I will respond to my own question for the benefit of all.

      I found that since a certain version of UBL, the code to set the OPP in the PMIC via I2C at boot was removed (I don't understand why, maybe not everyone uses a TPS to power the AM1808/L138...)

      The latest UBL version in which I was able to found such code is in the package 'armubl-03.20.00.14.tar.gz'.

      So i forward-ported that code to a more recent version of UBL and everithng works flawless since then.

      I've attached a patch to apply against the 'OMAP-L138_FlashAndBootUtils_2_31_a.tar.gz' source code, but I guess you can adapt it to any recent UBL version.

      I hope it will be useful for others suffering same issues :-)

      PLEASE NOTE: I'm not a TI FAE and this is NOT a TI approved patch, so use it at your risk (beware that it may even damage your CPU!).

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use