This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Unable to run the neon instructions in startup_Cortex-R52

Hi,

I am planning to execute few neon add instructions using startup_Cortex-R52 example project. I have created assembly file with neon instructions and added it to project. I have modified the target settings to use -march "armv8-r", mfpu to "neon" and float-abi to "Hardware(Software FPO Linkage)".

Is there any startup code that I need to add for enabling neon extension. Let me know how can I proceed regarding this.

Thanks,

Praveen. 

Parents
  • Hi Praveen

    To fix the assembler errors, add "-x assembler-with-cpp" into the Miscellaneous settings for Arm Assembler 6.

    Depending on how much code and RW data you've added, you may see data aborts occurring inside __scatterload_copy (and main() not being reached) due to the MPU CODE region exceeding its upper limit.  You can fix that by increasing the size of the MPU region in startup.s, or moving the enabling of the MPU to after scatterloading has completed, e.g. inside main().

    Hope this helps

    Stephen

Reply
  • Hi Praveen

    To fix the assembler errors, add "-x assembler-with-cpp" into the Miscellaneous settings for Arm Assembler 6.

    Depending on how much code and RW data you've added, you may see data aborts occurring inside __scatterload_copy (and main() not being reached) due to the MPU CODE region exceeding its upper limit.  You can fix that by increasing the size of the MPU region in startup.s, or moving the enabling of the MPU to after scatterloading has completed, e.g. inside main().

    Hope this helps

    Stephen

Children
  • Hi Stephen,

    After adding the "-x assembler-with-cpp" I am seeing below link error.

    armlink.exe --info=sizes -o "startup_Cortex-R52.axf" ./doubleelements.o ./main.o ./sorts.o ./startup.o
    Error: L6218E: Undefined symbol Image$$ARM_LIB_HEAP$$Base (referred from startup.o).
    Error: L6218E: Undefined symbol Image$$ARM_LIB_STACK$$ZI$$Limit (referred from startup.o).
    Error: L6218E: Undefined symbol Image$$CODE$$Base (referred from startup.o).
    Error: L6218E: Undefined symbol Image$$CODE$$Limit (referred from startup.o).
    Error: L6218E: Undefined symbol Image$$DATA$$Base (referred from startup.o).
    Error: L6218E: Undefined symbol Image$$DATA$$ZI$$Limit (referred from startup.o).

    ARM_LIB_HEAP is already defined in scatter.scat. Is there any other project that I could use for cortex-r52 + neon. Let me know if you have any working project available

    Thanks,

    Praveen.

  • Hi Praveen

    Your Arm DS project build appears to have lost some essential tool options, in particular, the name of the scatter file and the image entry point in the Arm Linker 6 > Image Layout settings.

    For the link-step, change your current:
    armlink.exe --info=totals -o "startup_Cortex-R52.axf" ./doubleelements.o ./main.o ./sorts.o ./startup.o
    so that it becomes:
    armlink.exe --entry=Start --scatter="../scatter.scat" --info=totals -o "../startup_Cortex-R52.axf"  ./doubleelements.o ./main.o ./sorts.o ./startup.o


    Hope this helps

    Stephen

  • Thanks Stephen . This really helped alot.

  • Hi Stephen,

    Also I am trying to compile .cpp extensiopn files(main.c --> main.cpp ..). But .cpp files are not picked up for compilation and I am seeing error main not found.

    My usecase is, I have .cpp based source code which I need to include in this project and create  .axf. Is this workflow possible? 

    (To be more specific about my usecase, I am trying to include to include arm compute library to this startup project and create an app.)

    Thanks,

    Praveen.

  • Hi Praveen

    That's strange - renaming main.c to main.cpp works for me with the startup_Cortex-R52 example supplied, after fixing up any call-outs (name mangling, etc) from the C++ file to extern C or assembler files.

    However, if the bulk of your application will be C++, then you must create a new C++ project.  The startup_Cortex-R52 example supplied is only based on a C project template, not C++.

    To create a new C++ project, use File > New > Project, then expand C/C++ and select "C++ Project".  Then copy across all the project settings (processor, fpu, "-x assembler-with-cpp", --entry=Start --scatter, etc) from your existing project to the new project.

    If you need more help with this interesting project, I suggest you open an official Support case with Arm, using the "Support > Open a Support Case" option at the top of this page.

    Hope this helps

    Stephen

  • Hi Stephen,

    Thanks for suggestion I have raised a  support case .

    I want to know if there is a quick fix for below problem.

    I have created C++ project and created .axf , however I am seeing issues while trying to run. It is not coming to main from "Start". Debug configurations are similar to the startup_cortex-r52.Attached project for your referenceACLPrototype.zip