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.

[参考译文] RTOS:检测 EPI RAM 是否存在

Guru**** 2611705 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/771186/rtos-detecting-epi-ram-presence

工具/软件:TI-RTOS

您好!

我正在寻找任何检测 EPI SDRAM 是否存在的解决方案。 我将以下代码放入不存在 RAM 的器件中、并且无法将任何新代码上载到目标中。 当我点击调试时、CCS 显示: 连接到目标时出错

uint16_t * start =(uint16_t *) 0x60000000;
uint16_t startVal = start[SDRAM_START_ADDRESS]; 

EK-TM4C12EXL
TI 18.12.1.LTS
RTOS 2.16.0.08
XDC:2.32.0.06 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试在初始时执行非阻塞式读操作、并使用软件超时循环来检查是否完成。 这将防止 CPU 在读取不存在的存储器时挂起。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能给我一个有关非阻塞式读/写操作的示例吗? 还是链接? 这个话题对我来说非常新...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    数据表第11.3.2节提供了有关非阻塞式读操作的信息。 但是、查看 TivaWare 中的 EPI 驱动程序应该会使其更加简单。 配置 EPI 后、调用:

     EPINonBlockingReadConfigure();
     EPINonBlockingReadStart();

    然后在循环中尝试调用 EPINonBlockingReadAvail(),直到它返回非零值。 根据您的接口、如果连接了外部存储器、则需要很少的循环。 如果循环超时,调用 EPINonBlockingReadStop()以中止非阻塞式读操作。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题。 很抱歉、当我想要"回复"按钮时、意外点击"TI 认为已解决"按钮。 请告诉我您在实施此操作时是否遇到任何问题。 此外、您是否能够执行"解锁"序列并恢复您的器件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还没有。 我还不知道如何解锁 launchpad。 你有什么指南吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还没有。 我不知道如何解锁 Launchpad。 你有什么指南吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅本文档第20页开始的第5.3节:
    www.ti.com/.../spma075.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢您的帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    以下是我的测试代码:

    uint8_t isRAMPresent(){
    
    
    uint8_t hasRAM = 0;
    
    //
    // Ping 设备
    //
    
    
    
    EPINONBlockingReadConfigure (EPI0_BASE、0、EPI_NbCONFIG_SIZE、0);
    EPINONBlockingReadStart (EPI0_BASE、0、10);
    
    
    uint8_t readAvail = 0;
    uint32_t Trials = 4096;
    uint32_t noReads = 0;
    while (trials){
    
    
    if (EPINONBlockingReadAvail (EPI0_BASE)> 0){
    中断;
    }
    
    试验--;
    }
    
    
    EPINONBlockingReadStop (EPI0_BASE、0);
    
    返回 hasRAM;
    
    } 

    系统中没有 RAM 优先级、并且在第一次调用后循环中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Daniel、您好!
    我的建议是基于这样一个假设:最初您的器件悬挂在对 EPI 的读取操作上。 根据 EPI 的配置以及未连接存储器时管脚的状态、读操作可能会停止。 通过配置相应 EPI 引脚上的拉电阻、您可能能够使操作更加一致。 另一种方法可能是进行非阻塞式写操作、然后进行非阻塞式读操作、以验证是否确实有 SDRAM。