TI E2E Community
MSP430 Ultra-Low Power 16-bit Microcontroller Forum
"MSP-EXP430F5438_User_Experience" project failed to build in CCS 5.1
hello,I have two questions. One is regarding "MSP-EXP430F5438_User_Experience" and the other is regarding "executing code from RAM".1. "MSP-EXP430F5438_User_Experience" I am trying to build "MSP-EXP430F5438_User_Experience" project on CCS but fail. I set mC to msp430f5438A and build.how ever, I get the following Warnings:1.1. #10062-D entry-point symbol "_c_int00" undefined.1.2. #10202-D no suitable entry-point found; setting to 0.1.3.#10207-D automatic RTS selection: resolving index library "libc.a" to.1.4. #10366-D automatic library build: using library.I am setting workspace to this location: "C:\...\slac227j\MSP-EXP430F5438(A) Example Software"and project to this location: "C:\...\slac227j\MSP-EXP430F5438(A) Example Software\CCS".However, when I create new project and copying all relevant file, the project is built there are no errors but i get the following run-time error when running: "No source available for "0xfffa"" in halLcdSetContrast()->halLcdSendCommand().this error keep poping up and there is no indication in the board.In "Project properties"->"General" I set Compiler version to "TI v4.0.0". before that it was 3.2. "executing code from RAM"I read in the FLASH section that flash write should be used different when code is executed from RAM and when it is executed fromFLASH. "CUSTOM_BSL_APP" uses #ifdef INVOKE_BSL_WITHOUT_RESET.How can I set code to be executed from RAM?I saw in out.txt that first line is "@5c00" which tells the BSL to write to address 0x5c00 in FLASH.0x5c00 is main code memory "Bank 0".So if I want the code to be executed in RAM, I should set the adress to "@001C00" (RAM sector 0)?Where do I set it? in my case, it won't fit. Thank you,
ngsoft user1.2. #10202-D no suitable entry-point found; setting to 0.
This often happens if the project doesn't include code that contains the 'main' function. Or doesn't for some reason load the standard boot code.It's also possible that moving your workspace didn't move some required libraries from the original workspace.You should import a project into your workspace rather than moving the workspace to the project.
2. indeed. The flash controller obviously cannot provide code to the CPU when actively writing to the flash. So if the flash writing code is in flash (of course not the location that is currently erased/written), the CPU gets a dummy isntruciton that lets it 'jump-in-place' until the current write is done. THen the CPU will continue as if nothing happened and can write the next byte.If code is executed from ram, no dummy instrucitons are generated and the code has to check for the busy bit. However, it may then use the block write mode where the flash is inaccessible all the time until a complete block is written. This is much faster, but cannot be used (obviously) if the code runs from flash.
To put code in ram, you can simply add a pragma or attribute to the function that places it in initialized ram area. Such as _ramfunc, or specifying the segment. However, this method is compiler specific.
You cannot simply define a start addres in ram for the function to be placed. In this case, teh function would be stored in ram adn vanish on power-off. It needs to be restored from flash to ram by the startup code, just like the init values of your global variables.
_____________________________________Before posting bug reports or ask for help, do at least quick scan over this article. It applies to any kind of problem reporting. On any forum. And/or look here.If you cannot discuss your problem in the public, feel free to start a private conversation: click on my name and then 'start conversation'. But please do so only if you really cannot do it in a public thread, as I usually read all threads. And I prefer to answer where others can profit from it (or contribute to it) too.
Thank you for your question.Regarding my first issue.I used TI's slac227j sample before creating new project and copying all files and dependencies.I am using CCS v5.1. maybe this is the reason? maybe the sample works on older version of CCS and compiler?I saw that it uses compiler version 3 while CCS 5.1 has compiler version 4.
I added screenshot of the project properties and the warning:
1. automatic library build: using library2. automatic RTS selection: resolving index library "libc.a" to3. entry-point symbol "_c_int00" undefined4. Invalid project path: Missing project folder or file: \MSP-EXP430F5438_User_Experience_16KB\F5XX_6XX_Core_Lib\hal_UCS.c for Include path.5. Invalid project path: Missing project folder or file: \MSP-EXP430F5438_User_Experience_16KB\F5XX_6XX_Core_Lib\hal_UCS.c for Include path. 6. no suitable entry-point found; setting to 07. This project was created using a version of compiler that is not currently installed: 3.3.0 [MSP430]. Another version of the compiler will be used during build: 4.0.0. Please install the compiler of the required version, or migrate the project to one of the available compiler versions.
Message 4/5 and 7 tell yoou what's going on.
first, the original project was created for an older compiler version. 'older compiler' doesn't just mean there is a newer compiler.exe file, but the whole IDE, including compiler parameters, default paths, maybe more, has been changed.Possibly even the linker scripts and program entry points.
There is a chance that the code will simple not build with the new compiler because it may contain version-specific tweaks.
Also, the project seems to contain an invalid path setting for includes. It i spossible that with copying 'all' files from teh original project, you also replaced the new deault path informations in teh freshly created project, turining the new project into a clone of the old instead of makeing a new project a new project with the code of the old.
It is a known issue that the project files contain absolute pathes rather than relative ones, so you simply cannot move a project. If a project was created in c:\xyz, it has to stay thereand won't run anymore if you move it to d:\zyx
I think there was a trick to import a project into your workspace with adjusting the path information, but I don't remember how to do it.The othe rway is to create a new project, copy only the code files (.c/.h etc.) and completely rewrite the project properties where necessary.
You can look into the settings of the original project and see what difference to the new projects ones is a required project specific difference and what depends on the installation.
P.s.: in the above properties, ther eis a tab 'entry/exit hook options'. Your missing entry-point symbol might be related to thsi setting.
I don' tuse CCS or IAR mayself, so I can only copy what i read in this forum over the last years. And add some own ideas/guesses. But i cannot give you detailed answers here.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.