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

microsemi smartfusion keil and softconsole

The hex file ouput of keil and Softconsole are different.

After loading the keil hex file into flashpro and programming it to a2f-eval-kit, there is no output displayed on UART.

But the functionality is proper with softconsole hex file.

From what i have read, both of them produce intel hex file as output.

How to get the same output as that of softconsole using Keil.

Thanks

  • You mean this: https://www.microsemi.com/product-directory/design-tools/4879-softconsole ?

    Note that's a Microsemi thing - nothing to do with Keil.

    But, according to the above-linked page, it used GCC - an entirely different compiler - so it is entirely to be expected that the Hex files will be different.

    If a Softconsole-generated executable works, I guess that must show that your hardware works.

    Are you using exactly the same source files in your Keil project?

    If your Keil-generated executable doesn't work, and the source files are the same, that suggests that the problem lies in your Keil Project setup.

    Have you tried using the debugger to see where it is failing ?

    You will need to refer to the Microsemi documentation for instructions on how to correctly configure a project for their product.

    Even if your source files are the same, the startup files are likely to be different.

    And, of course, this is an FPGA.

    Keil knows nothing about FPGAs - so, again, you will have to study the Microsemi documentation for how to combine the microcontroller executable with the rest of the FPGA config.

  • Yes. Softconsole is a product from microsemi.

    it used GCC

    Yes. And Keil by default uses ARMCC compiler. Softconsole takes (.ld ) file as linker script. Keil takes a scatter file(.sct)

    If a Softconsole-generated executable works, I guess that must show that your hardware works

    yes. softconsole project works.so hardware is right.

    If your Keil-generated executable doesn't work, and the source files are the same, that suggests that the problem lies in your Keil Project setup.

    toolsets (compilers,linkers,loaders..) were different in keil and softconsole. So I changed the toolset to GNU (GCC,ld..)(Keil has the provision to do so) which is what is used by softconsole. Keil throws an error saying it cannot recognize file format (.lib)

    Have you tried using the debugger to see where it is failing ?

    No.I haven't

    You will need to refer to the Microsemi documentation for instructions on how to correctly configure a project for their product.

    Even if your source files are the same, the startup files are likely to be different.

    And, of course, this is an FPGA.

    Keil knows nothing about FPGAs - so, again, you will have to study the Microsemi documentation for how to combine the microcontroller executable with the rest of the FPGA config.

    Libero is used to configure IDE (softconsole,keil,IAR..) and i followed the process showed in documentation, which automatically generates a keil project with default toolset.

  • Keil uses different toolset (ARMCC.) while softconsole uses GNU(GCC,ld..) So I changed the settings in Keil to GNU.But keil throws an error saying it can't recognize the file format (.lib).

  • Again, you need to study the Microsemi documentation for how to properly configure & use Keil for the parts you are using.

    I changed the settings in Keil to GNU

    You're not going to get far with just making random changes!

    If SoftConsole works, why not just use it - especially if you're not going to take advantage of the ARM compiler anyhow?!

    Again, this is an FPGA - so there's a lot more to the development & deployment than just the microcontroller executable code. So, whatever you do, you're still going to have to be doing an amount of "post processing" on the Keil output to get it into the form required by the FPGA.

    Presumably, SoftConsole does all this for you. 

  • Step#1 fully understand the working end-to-end process, once you understand that you'll be in a position to determine what steps are required or missing from the process that doesn't work as expected.

    For example does the code get placed at the right location, does the RAM and stack get handled the same.

    The .HEX files are bound to differ, but the placement of code/data should be consistent, and meet the expectations of the hardware.

    Prerequisites would be an ability to digest the technical documentation for all components, and the diagnostic skills to be able to apply or leverage the knowledge gained.

  • i followed the process showed in documentation

    Then you need to contact Microsemi for any corrections and/or updates to their documentation!

    Did you see the "Important Notes" at the end of the linked SoftConsole page?

    It says:

    "Please read the release notes for the relevant version of SoftConsole to be aware of all relevant features, known issues, troubleshooting tips etc"

    Have you done that - in particular, applying the "troubleshooting tips" ?

    There is also a 'Support' link at that top of that page.

  • Have you tried using the debugger to see where it is failing ?

    No.I haven't

    Why not ?

    There is a lot more to software development than just writing code!

    It is your job to test & debug your code - it's no use just throwing up your hands, saying "it doesn't work" - and expecting others to fix it for you.

    How To Debug

    You have a big advantage here, as you have an example that works, and one that doesn't - so you can compare & contrast to see where the non-working one differs ...