编译starterware的bootloader工程报错

编译starterware的bootloader工程报错

此问题尚无答案
All Replies
  • 秀才600分

    1.使用的是ccs6.1.2版本,编译器配置为GNU v4.9.3,目标芯片是am4378

    starterware包被放在SYSBIOSSDK-IND-SITARA软件包中

    http://www.ti.com.cn/tool/cn/sysbiossdk-ind-sitara

    2.向ccs工程中导入bootloader工程,依照提示又导入依赖的6个工程:

    依照上图中的要求,逐个修改各依赖工程的编译配置

    3.编译bootloader工程,结果报错:

    **** Build of configuration am43xx_boot_mmcsd_debug for project bootloader ****

    "D:\\ti\\ccsv6\\utils\\bin\\gmake" -j 4 -s -k all
    'Building file: D:/ti/starterware/examples/mmcsd/hsmmcsd_app_pol.c'
    'Building file: D:/ti/starterware/examples/gpio/gpio_app.c'
    'Building file: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform.c'
    'Building file: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform_ddr.c'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    'Finished building: D:/ti/starterware/examples/gpio/gpio_app.c'
    'Finished building: D:/ti/starterware/examples/mmcsd/hsmmcsd_app_pol.c'
    'Finished building: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform.c'
    'Finished building: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform_ddr.c'
    ' '
    ' '
    ' '
    ' '
    'Building file: D:/ti/starterware/bootloader/src/sbl_copy.c'
    'Building file: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform_pll.c'
    'Building file: D:/ti/starterware/bootloader/src/sbl_main.c'
    'Building file: D:/ti/starterware/bootloader/src/sbl_mmcsd.c'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    'Invoking: GNU Compiler'
    D:/ti/starterware/bootloader/src/sbl_main.c: In function 'main':
    D:/ti/starterware/bootloader/src/sbl_main.c:88:14: warning: variable 'status' set but not used [-Wunused-but-set-variable]
    uint32_t status;
    ^
    'Finished building: D:/ti/starterware/bootloader/src/sbl_copy.c'
    'Finished building: D:/ti/starterware/bootloader/src/sbl_main.c'
    'Finished building: D:/ti/starterware/bootloader/src/sbl_mmcsd.c'
    'Finished building: D:/ti/starterware/bootloader/src/am43xx/sbl_am43xx_platform_pll.c'
    ' '
    ' '
    ' '
    ' '
    'Building target: ../../../binary/bootloader/bin/am43xx-evm/ccs/bootloader_boot_mmcsd_a9host_debug.out'
    'Invoking: GNU Linker'
    d:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe:../../../examples/gcc/am43xx_boot_ccs.lds:50: warning: redeclaration of memory region `DDR0'
    d:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: ../../../binary/bootloader/bin/am43xx-evm/ccs/bootloader_boot_mmcsd_a9host_debug.out section `.stack' will not fit in region `OCMCRAM'
    d:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: region `OCMCRAM' overflowed by 61784 bytes
    collect2.exe: error: ld returned 1 exit status
    gmake: *** [../../../binary/bootloader/bin/am43xx-evm/ccs/bootloader_boot_mmcsd_a9host_debug.out] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

    请问这是什么原因啊

  • 榜眼24315分

    你改了工程中的boot.cmd文件了吗?还是说你在这个工程中加入了大量的自定义代码,引起了整个编译出来的boot size超出了限定?

    d:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: region `OCMCRAM' overflowed by 61784 bytes

  • 秀才600分

      你好,我没有修改任何文件。cmd文件需要修改吗?

  • 榜眼24315分

    不用修改啊。你的意思是你现在只是在编译我们原版的文件,也没做过任何修改,就出现该问题了是吗?

  • 秀才600分

     是的,我的操作步骤就像帖子里说的那样

    另外,其实我并没有在工程目录中看到cmd文件

  • 状元120150分

    是否有参考过下面的帖子?

    https://e2e.ti.com/support/embedded/starterware/f/790/p/595113/2191189

  • 秀才600分

     你好,参考那个帖子,我也发现自己的bootloader工程有两个lds文件。

    A)当移除am4378.lds,编译能正常通过,但是生成的.out没法load,提示说:

    B)当移除am43xx_boot_ccs.lds,则编译依然会报错,提示说:

    请问我该怎么改动才能顺利编译,并且load生成的.out文件进行调试

  • 榜眼43220分

    把你的CCS工具升级一下试试。

  • 秀才600分

    查看了下am43xx.lds和am43xx_boot_ccs.lds的内容

    1)MEMORY定义部分:

    am43xx.lds

    am43xx_boot_ccs.lds

    后者的OCMCRAM定义有问题,256K的大小,却写成了0x2FC00

    起始地址也有出入,我查看了TRM,OCMC就应该是从0x40300000

    2)但是0x402F4000这个数值也并空穴来风,因为TRM上也指出了,下载到片内RAM上的的镜像存放地址,是可以从0x402F4000这个地址开始的

    3)修改了am43xx_boot_ccs.lds中的OCMCRAM定义后,重编译并load工程,果然不再出问题。但还是有个问题让我很困惑,未修改之前在load时,有如下报错:

    为什么它会在0x402F0074的地方提示无法写入,明明预设的0x402F4000本身就在其后面,已经略过了这个地址啊?

  • 秀才600分

    请问上面的问题,谁见过吗

  • 榜眼43220分

    那个图片不是显示0x402F0000到0x402F4000是不可以访问的么?

  • 秀才600分

     您好,我的意思是:在am43xx_boot_ccs.lds中,默认的MEMORY就是从0x402F4000开始的。

    地址0x402F0074在0x402F4000之前,压根儿就不在MEMORY范围之内,为啥load代码时他要蹦出来报个错?

  • 榜眼43220分

    0x402F0074这段空间是不能访问的。

  • 秀才600分

    您好,MEMORY起始地址设置成0x402F4000时,0x402F0074在其之前,因此不在MEMORY中,不知为什么会访问到它呢?