static ssize_t store_update_fw(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int tmp; union power_supply_propval vbus; struct mtk_charger *info = NULL; if (NULL == dev_chg_psy) { dev_chg_psy = power_supply_get_by_name("mtk-master-charger"); power_supply_get_property(dev_chg_psy, POWER_SUPPLY_PROP_VOLTAGE_NOW, &vbus); } else power_supply_get_property(dev_chg_psy, POWER_SUPPLY_PROP_VOLTAGE_NOW, &vbus); info = (struct mtk_charger *)power_supply_get_drvdata(dev_chg_psy); tmp = simple_strtoul(buf, NULL, 0); if (tmp != 0) { if (vbus.intval < 3000) { info->otg_flag = 1; charger_dev_enable_otg(info->chg1_dev,1); mdelay(100); power_supply_get_property(dev_chg_psy, POWER_SUPPLY_PROP_VOLTAGE_NOW, &vbus); } update_firmware(); mdelay(500); if ( update_firmware() == CPS_WLS_SUCCESS && info->otg_flag == 1 && vbus.intval > 3000 ) { info->otg_flag = 0; charger_dev_enable_otg(info->chg1_dev,0); power_supply_get_property(dev_chg_psy, POWER_SUPPLY_PROP_VOLTAGE_NOW, &vbus); } } return count; }运行此函数,会引其update_firmware()函数中request_firmware报错,请帮忙分析原因
时间: 2023-09-12 13:06:44 浏览: 89
浅谈int8_t int64_t size_t ssize_t的相关问题(详解)
您好!根据您提供的代码,我们可以看到在 `store_update_fw` 函数中调用了 `update_firmware()` 函数,但是没有提供 `update_firmware()` 函数的实现代码。根据您的描述,报错是由 `request_firmware` 引起的。
`request_firmware` 函数用于从文件系统中请求固件文件,并将其加载到内存中。它需要正确的固件文件路径和文件名来加载固件。如果找不到指定的固件文件或者路径错误,就会产生错误。因此,您需要确保 `update_firmware()` 函数中的 `request_firmware` 函数调用的参数是正确的。
您可以检查以下几个方面:
1. 确保固件文件存在。请检查固件文件的路径和文件名是否正确,并且确保文件存在于指定的位置。您可以通过在代码中打印路径来验证路径是否正确。
2. 确保文件权限正确。请确保固件文件的权限允许访问。您可以使用 `ls -l` 命令来查看固件文件的权限,并确保您的代码有足够的权限来读取该文件。
3. 确保文件系统正确挂载。如果固件文件所在的文件系统没有正确挂载,就无法访问该文件。请确保文件系统已经正确挂载,并且可以正常访问。
4. 确保固件文件名正确。请确保您在 `request_firmware` 函数中指定的固件文件名与实际文件名一致。注意大小写敏感。
如果您仍然无法解决问题,请提供 `update_firmware` 函数的实现代码,以便我们更进一步地分析问题。
阅读全文