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.

AM335X linux-3.14.43内核加载am335x-pm-firmware.elf文件失败



我下载了am335x最新的开发套件源码am335x-evm-sdk-src-01.00.00.03.tar.gz,里面内核是3.14.43版本,使用的编译器是gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux,用buildroot制作了自己的文件系统。系统启动后,会出现以下问题:

[ 62.246381] remoteproc0: failed to load am335x-pm-firmware.elf
[ 62.252680] remoteproc0: powering up wkup_m3
[ 62.272740] wkup_m3 44d00000.wkup_m3: rproc_boot failed

如果挂载的是从SDK套件提供的文件系统,则没有该问题,然后我发现该文件在/lib/firmware下,于是我将整个firmware文件放在了我的文件系统相应目录下,但我自己的文件系统依然出现该问题。我想请教一下,这是不是制作文件系统的编译器不同导致的?如果我要使用自己的文件系统,应该如何获得相应的am335x-pm-firmware.elf文件呢?急,求回复,谢谢!

  • 应该是编译器不同导致的问题。请问为什么不用我们的SDK自带的文件系统呢?

  • 非常感谢您的回复!我们的产品早就做好了,在3.2版本的内核上运行,文件系统是根据我们的需求做的(搭建好了各种服务)。目前想升级一下内核版本,增加一些功能,用你们的文件系统需要修改的地方太多,很麻烦。您能告诉我如何得到符合自己的am335x-pm-firmware.elf文件吗?或者,如果没有这个文件,对系统有什么影响?

  • 这个文件是启动后加在到芯片内部M3用于做睡眠唤醒的,你的产品需要睡眠唤醒功能么?

    你之前用的3.2内核,也是自己做的文件系统然后把这个elf文件从TI SDK的文件系统中拷贝过去的么?

  • 睡眠唤醒功能是需要的。3.2版本的用的是am335x-pm-firmware.bin文件,并且是直接编译到内核中的,很显然新版本的内核对这一块做了升级。话说TI有没有提供这方面的说明?我找了很久也没找到。如果是加载到M3的,那应该跟编译器无关吧?毕竟不是在内核里执行的,那我做的文件系统或者内核要怎么修改才能解决这个问题呢?

  • 那你现在编译你自己的文件系统用的是TI最新SDK里的交叉编译工具么?

  • 遇到类似问题:

    我从 http://arago-project.org/git/projects/?p=am33x-cm3.git;a=shortlog;h=refs/heads/master 下载编译了,放进文件系统。

    会出现resource table 解析出错,

    [ 5.181791] remoteproc0: wkup_m3 is available
    [ 5.186971] remoteproc0: Note: remoteproc is still under development and considered experimental.
    [ 5.196379] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [ 5.209364] remoteproc0: rproc_fw_config_virtio   //自己加的打印信息
    [ 5.214440] remoteproc0: can not find resource table   //自己加的打印信息
    [ 5.221569] remoteproc0: powering up wkup_m3
    [ 5.245536] wkup_m3 44d00000.wkup_m3: rproc_boot failed

    static void rproc_fw_config_virtio(const struct firmware *fw, void *context)
    {
    struct rproc *rproc = context;
    struct resource_table *table;
    int ret, tablesz;

    dev_err(&rproc->dev,"rproc_fw_config_virtio \n");//mitch 08 24
    if (rproc_fw_sanity_check(rproc, fw) < 0)
    goto out;

    /* look for the resource table */
    table = rproc_find_rsc_table(rproc, fw, &tablesz);
    if (!table)
    {
    dev_err(&rproc->dev,"can not find resource table \n");//mitch 08 24
    goto out;
    }

    elf 文件编译后需要加其它信息吗?帮忙分析。

  • 用的交叉编译器和编译内核的一样,都是gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux,这个是TI官方推荐的吧

  • 您好,请问.ti-processor-sdk-linux-335x-evm-01.00.00.03/filesystem/tisdk-rootfs-image-am335x-evm.tar.gz 这个SDK包用的哪个版本的交叉编译器

     

  • .ti-processor-sdk-linux-335x-evm-01.00.00.03 这个里面有自带的编译器,您给出的这个是个文件系统压缩包

  • 很抱歉,自带的编译器没有找到啊,还有编译器版本和QT库版本有关吗,谢谢啊

  • 你解压以后就可以找到了

    编译器版本和QT库版本没有必然关系,但是整个编译环境的编译器版本最好统一,要不然会有很多莫名其妙的问题

  • 您好,我现在遇到跟你一模一样的问题

    sdk8 用自己的文件系统,现也会弹出下面的错误:

    [ 62.246381] remoteproc0: failed to load am335x-pm-firmware.elf
    [ 62.252680] remoteproc0: powering up wkup_m3
    [ 62.272740] wkup_m3 44d00000.wkup_m3: rproc_boot failed

    请问您解决了么?

  • 估计这个是因为你们的内核少了一个文件am335x-pm-firmware.bin, 在firmware