TI中文支持网
TI专业的中文技术问题搜集分享网站

关于am3359的suspend问题

内核:linux 4.4.12

问题出现:

echo "mem"  >  /sys/power/state

什么都没有显示 所以观察kernel/power/main.c 发现

ti提供的bsp中的kernel/power/suspend.c 中的suspend_set_ops函数并未执行 故而echo "mem"  >  /sys/power/state时没有显示相关的命令

追踪代码得知suspend_set_ops函数在内核的drivers/soc/ti/pm33xx.c里调用

但是这个驱动并没有编译到内核去 所以我就想办法自己编译这个驱动然后insmod

后来发现这个驱动是依赖于WKUP_M3_IPC && TI_EMIF_SRAM

Kconfig文件

config AMX3_PM
        tristate "AMx3 Power Management"
        depends on SOC_AM33XX || SOC_AM43XX
        depends on WKUP_M3_IPC && TI_EMIF_SRAM && RTC_DRV_OMAP
        help
          Enable power management on AM335x and AM437x. Required for suspend to mem
          and standby states on both AM335x and AM437x platforms and for deeper cpuidle
          c-states on AM335x. Also required for rtc and ddr in self-refresh low
          power mode on AM437x platforms.

自行编译时会出现错误

WARNING: "ti_emif_copy_pm_function_table" [/home/edisongao/pm33xx/pm33xx.ko] undefined!
WARNING: "wkup_m3_ipc_get" [/home/edisongao/pm33xx/pm33xx.ko] undefined!
WARNING: "wkup_m3_ipc_put" [/home/edisongao/pm33xx/pm33xx.ko] undefined!

此类的错误

而且insmod的时候 出现以下错误

root@am335x-evm:/# insmod pm33xx.koinsmod: ERROR: could not insert module pm33xx.ko: Invalid parameters

这是我自行解决问题的步骤以及遇到的错误

根据ti的官网中的介绍 http://processors.wiki.ti.com/index.php/AM335x_Linux_Power_Management_User_Guide#Suspend_.26_Resume

发现am335x是通过 am335x-pm-firmware.bin这个文件来实现的

但是这个文件我尝试在内核make menuconfig的时候

...
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in the kernel binary
(am335x-pm-firmware.bin) External firmware blobs to build into the kernel binary
(firmware) Firmware blobs root directory

然后编译重新下载到开发板发现并没有出现解决问题 AM335x Linux Power Management User Guide里的是linux 3.2.0的内核了
这里使用的是4.4.12的内核 怀疑方法不是这样 但是查找相关的描述 并没有查到怎么操作 望告知

Edison Gao:

│ Symbol: AMX3_PM [=n] │
│ Type : tristate │
│ Prompt: AMx3 Power Management │
│ Location: │
│ -> Device Drivers │
│ -> SOC (System On Chip) specific Drivers │
│ (1) -> TI SOC drivers support (SOC_TI [=y]) │
│ Defined at drivers/soc/ti/Kconfig:53 │
│ Depends on: SOC_TI [=y] && (SOC_AM33XX [=y] || SOC_AM43XX [=n]) && WKUP_M3_IPC [=m] && TI_EMIF_SRAM [=m] && RTC_DRV_OMAP [=n]

根据这个配置
SOC_TI [=y] && (SOC_AM33XX [=y] || SOC_AM43XX [=n]) && WKUP_M3_IPC [=m] && TI_EMIF_SRAM [=m] && RTC_DRV_OMAP [=n]
都选上去了 但是
menuconfig还是没有这个AMx3 Power Management选项 这是为什么 Kconfig里面是有这个的

SOC_TI [=y] && (SOC_AM33XX [=y] || SOC_AM43XX [=n]) && WKUP_M3_IPC [=m] && TI_EMIF_SRAM [=m] && RTC_DRV_OMAP [=n]

Jian Zhou:

回复 Edison Gao:

Linux 4.4内核的power management请参考:

http://processors.wiki.ti.com/index.php/Linux_Core_Power_Management_User%27s_Guide_(v4.4)

赞(0)
未经允许不得转载:TI中文支持网 » 关于am3359的suspend问题
分享到: 更多 (0)