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.

[参考译文] Linux/am3352:GPMC 8位非多路复用模式

Guru**** 2555280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609586/linux-am3352-gpmc-8-bit-non-muliplex-mode

器件型号:AM3352

工具/软件:Linux

高 Biser:

我使用的是具有以下配置的旧版本内核

静态结构 pinmux_config GPMC_DR_PIN_mux[]={
{"GPMC_ad0.GPMC_ad0"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_ad1.GPMC_ad1"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_ad2.GPMC_ad2"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_ad3.GPMC_ad3"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_AD4.GPMC_AD4"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_ad5.GPMC_ad5"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_ad6.GPMC_ad6"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"GPMC_AD7.GPMC_AD7"、OMAP-MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}、
{"mmc0_data1.GPMC_A22"、OMAP-MUX_MODE1 | AM33XX_PIN_OUTPUT}、
{"mmc0_data0.gpMC_A23"、OMAP-MUX_MODE1 | AM33XX_PIN_OUTPUT}、
{"mmc0_clk.GPMC_A24"、OMAP-MUX_MODE1 | AM33XX_PIN_OUTPUT}、
{"GPMC_csn0.GPMC_csn0"、OMAP-MUX_MODE0 | AM33XX_PULL_DISA}、
{"GPMC_BEN0_cle。GPMC_BEN0_cle "、OMAP-MUX_MODE0 | AM33XX_PULL_DISA}、
{"GPMC_BEN1.GPMC_BEN1"、OMAP-MUX_MODE0 | AM33XX_PULL_DISA}、
{"GPMC_oen_ren。GPMC_oen_ren "、OMAP-MUX_MODE0 | AM33XX_PULL_DISA}、
{"GPMC_WN.GPMC_Wen"、OMAP-MUX_MODE0 | AM33XX_PULL_DISA}、

{NULL、0}、
};

然后我可以看到 gpmcs0的 config7寄存器为0x42,它将分配硬件地址0x2000000。

然后 CONFIG1为0。

当我使用地址以内核模式或用户模式写入数据时,如以下方法:

我确实看到了数据线路 GPMC_AD0至 GPMC_AD7的滚动。

对于(j = 0;j < 0xF0000000;j++){
对于(I = 0;I < 0x5;I++){
reg_addr=p+(i << 22);
if (i%2)
iowrite8 (0x5c、reg_addr);
否则 iowrite8 (0xa3、reg_addr);

mdelay (1)

但我看不到地址行 A22 A23 A24卷、您能帮我解决吗?

此致

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

    您的内核版本是什么? 首先、您必须检查 A22、A23和 A24的引脚多路复用设置是否未被其他引脚多路复用设置覆盖。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经检查过它没有被其他 pinmux 覆盖。我的内核版本是旧版本的 Linux 3.2.0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="LIANG WANG102707"]for (j = 0;j < 0xF0000000;j++){
    对于(I = 0;I < 0x5;I++){
    reg_addr=p+(i << 22);
    if (i%2)
    iowrite8 (0x5c、reg_addr);
    否则 iowrite8 (0xa3、reg_addr);

    mdelay (1)
    }[/报价]

    我 在这里只看到一个右括号"}"。 不应该是两个?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是问题、因为我只复制部分代码。编译器将为这些类型的故障输出错误。
    问题是地址线不起作用的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请转储这些引脚的 pinmux 寄存器值并进行仔细检查。 同时检查 GPMC_CONFIG 寄存器中的 LIMITEDADDRESS=0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    高 Biser:
    该位的含义是什么?GPMC_CONFIG 为0x12,因此该位被置位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有限地址器件支持:
    0h =无效。 GPMC 控制所有地址。
    1h = A26-A11在外部存储器访问期间不会被修改。

    您必须将此位设置为0h。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    高 Biser:
    我使用的是一个旧的 TRM 版本 F、没有这个位描述、清除这个位后、它现在运行正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴它能正常工作、但您应该定期更新您的 TRM。 您可以在产品页面上设置通知以通知您更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Biser:

    我还发现了一个问题。为什么 be0是低电平。

    我想只有当 CS 变为低电平时、它才会很低

    当我之前使用16位时,当 CS 为低电平时,它一直处于低电平。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BE0状态未在 CS 有效区域之外定义。 在8位器件上、该信号无关紧要。