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.

How to setup an ARM assembly language only project in CCS using MCU TM4C129X

Other Parts Discussed in Thread: TM4C1294NCPDT

All,

Please could someone help me setup a pure ARM assembly language project in CCS using the MCU TM4C129X Connected Development Kit? I can't find a definitive source on how to do this properly. Also, how do I debug the image using CCS?

lag

  • Hello lag,

    Ideally, this is a question for the Code Composer experts in the Code Composer E2E but I see you have already done this and were directed here. I think their initial answer provides some guidance related to the CCS setup of the project.

    For TM4C you would need to provide specific content/asm files that include functionality as included in the startup_ccs,c file relative to interrupt vectoring as well as associated code for the Reset vector, NMI, etc.

    As far as debugging the file, you should be able to debug as usual using the ASM listings as your source. i.e., you shouldn't loos the capability to set break points, step over, single step, etc. If all else fails, you could use the dissassembly window to debug.

    I would also urge you to continue searching and reviewing content in the CCS forum for helpful hints on setting up the tool.
  • Might the absence of such "definitive sources" signal that you are "culling yourself" quite far from the herd?

    Indeed there are times (and places) where ASM proves best - but for an entire project - seems inefficient at best - wasteful of your resource at worst.

    As successful small, tech biz owner we'd never/ever approve of such an effort. Our doors remain open by our meeting deadlines - by solving "real-world" problems - "not" by adding undue complexity.

    As always - never is the requirement for - or justification in support of such "extra effort" provided.

    You may wish to think of the "extra work-load" such effort places upon forum staff. If many/most posters sought ASM (or DRM) forum response would ratchet down quite quickly - can that be good? Plain vanilla "C" enabled my small group to take past tech firm public - ASM (only) never received ANY consideration...
  • I have 14 years of software development experience, and I have valid reasons for doing this, and it's not a waste of time. So, please keep your unwanted opinions to yourself unless you have something to add to the solution of the question. If you think it is a waste of your time, then ignore the question. But, to say my question is not "justified", and a "waste" is insulting, rude, and uncalled for! For this, I am going to file a complaint to the moderator because of your response above!
  • Those "valid" reasons remain unstated - do they not?

    Have you (yet) to consider the time/effort expenditure by first one forum - and now the second - in providing you such "special" guidance?

    Waste is very much in common usage - is not insulting, rude nor uncalled for. (the hostility w/in your post (may) so qualify...)

    I stand completely by my earlier comments - often vendor staff has advised "Exactly the same!" (your forum search for "DRM" will quickly confirm)
  • Wow Really? Then that must be changed! I am sure that TI management will have a different take on this matter!
  • The greater "forum good" should receive (some) consideration. This vendor acquired the predecessor firm (LMI) primarily due to the vast Driver Library - all of it (but for one small example) written entirely in "C." A major selling point of ARM is that interrupts may be written entirely in "C" - such proves a "big deal" in ARM's great success.

    You are of course free to, "choose your poison." My attempt was to alert you to the relative rarity of your request (especially so for an entire project!) Vendor management is very much aware of the power & overwhelming use of "C" - so much so that past code examples w/in "DRM" (which is easier than ASM) are being abandoned! The entire "Peripheral Driver Library" is "C" based - but for a (very few) and (very brief) shifts to ASM.

    I wish you well - I've provided insight as to how/why I justify my viewpoint - facts line up very much in favor of "C."
  • Why tell me something I already know ! You know what they say when someone makes an assumption! It seams that you missed my point from the begining. I am not asking for your opinion and I am not here to debate assembly vs high level languages, but all I am asking is for someone to point me to some definitive source where I can setup CCS correctly for ARM assembly programming for the MCU TM4C129X Connected Development Kit. Is that so hard to do? Isn't this what this community forum is for?
  • It would appear cb1 touched upon a sore spot. You missed the most important part of his observations.

    The road less traveled is less well maintained, has fewer guides and less chance of help if and when you run into trouble (such as breaking an axle on that rough road). In this part of the world at least some roads are marked as travel at your own risk, road not maintained.

    That observation applies not only applies to assembly but also to other languages even if they can arguably offer better facilities for assuring correctness. Ada and Eiffel come to mind.

    Finally a quick note on the portion that so seems to annoy you. Even 35 years ago choosing to build a commercial project only in assembly was questionable. Since then both compilers and micros have improved to the point that assembly only projects are as scarce as hen's teeth outside of perhaps 4 bit processors.

    The help available for someone working outside the vast majority is necessarily limited. Scarce resources, both from the manufacturer and from the community will be allocated where the help can be of use to the most people. Although a sufficiently interesting problem may attract the attention of the community.

    Robert
  • A community that answered only the direct question asked would be sterile and fruitless. Deserted by the community such fora prove of little help and have long delayed responses in my experience. A little anarchy appears to stimulate fruitful discussion, digression plows intellectual furrows.

    Robert
  • No, not a sore spot, but just a completely wrong assumption regarding my post. Yours and cbt-'s point has nothing to do, or is indirectly related to what I am trying to accomplish. It's just wrong to say my post was a waste or unjustified!
  • cb1- said:
    for an entire project - seems inefficient at best - wasteful of your resource at worst.

    Here's the (real) quote.   Only you have claimed (improperly) that, "waste" targeted your post.   (your - and other's - "time/effort" are (very) likely sacrificed at the altar of "ASM and ASM's Only" unrelenting demand.  

    And (still) the requirement for ASM (only) sits unexplained/unjustified - how does that motivate skilled persons to respond?   (i.e. you've displayed little effort to "sell" your post - which likely encourages the best response...)

    As always - the unnecessary & excessively narrow "demands" upon first one - and now two forums - appears not to be a concern of this poster...

  • lag said:
    but all I am asking is for someone to point me to some definitive source where I can setup CCS correctly for ARM assembly programming for the MCU TM4C129X Connected Development Kit. Is that so hard to do? Isn't this what this community forum is for?

    Lag,

    I believe I have already addressed this question in my first reply to your post. In addition, there are several threads on this same topic in the CCS E2E as I also made reference too. Please let me know if you have attempted and not been able to get a project setup and running. Note, follow all of the normal procedures regarding include files/dependencies if you are going to utilize multiple asm files. 

  • Chuck,

    Thanks for all the help in this matter! I have found the solution to my request " How to setup an ARM assembly project in Code Composer Studio using an TM4C129X". I came by this a last July, and I decided to post it now since this issue has not been addressed completely, etc..

    It took me awhile to find it, and I am posting it here for others who have this requirement for doing ARM assembly only code in CCS.

    This solution comes by a blog post by R. Angeli: "How to Create an Assembly-Only Project for TIVA Launchpad in Code Composer" 3/4/2015, "h_t_t_p://rawelec.blogspot.com/2015/03/how-to-create-assembly-only-project-for.html".

    The solution is the following:

    System Requirements:

    1. Code Composer  Studio (I am using version 6.1.3)

    2. Code Composer ARM compiler 15.1.2.4.LTS.

    To create a ARM assembly only project that compiles and runs:

    1. New->CCS Project

    2. CCS Project->Target: Tiva TM4C1294NCPDT

    3.CCS Project->Connection: Stellaris In-Circuit Debug Interface

    4.CCS Project->Project Name: "Name of your project"

    5. CCS Project->Compiler version: T1 v15.12.4.LTS (I believe TI v5.1.10 works too)

    6. CCS Project->Project template and examples->Empty Project (with main.c) ... yes this is correct ... do not use "Empty Assembly-only Project" ... Its counter intuitive but this is critical in the setup of your assembly program to compile and work!

    7. CCS Project->click "Finish."

    8. Project Explorer->Select "Name of your project"-> delete "main.c" file from project folder.

    9. Project Explorer-> right click on the "Name of your project" and select new->File.

    10. New File-> Filename: name the file "main.asm."

    11. New File-> click "Finish."

    12. add the following to your "main.asm" file

    .global  main                          ; makes main accessible from outside this file.

    .thumb                                    ; use thumb, duh

    .data                                       ; set memory location to SRAM

    ; put your variables here

    .text                                         ; set memory location to flash

    main:

    ; code goes here

    13. And that's it.

    14. Also, see the following document for TI's assembly language reference and compiler commands etc.

    ARM Assembly Language Tools
    v15.12.0.LTS
    User's Guide

    Document Number: SPNU1180

    15. All the credit for this solution goes to R. Angeli (see above)

    16. On R. Angeli" site is a complete assembly program called BlinkyASM for the TM4C1294NCPDT that compiles and runs on the MCU using this method above!

    -Cheers

    LAG

  • Three things here deserve note:

    • poster's initial request occurred 24 June 2016.   Nearly EIGHT Months have (now) passed!
    • the "Like" attached to poster's 15 Feb 2017 post was, "Self-Awarded!"
    • Never has any justification for such, "ASM Only" implementation been attempted.

    Poster's "id/handle" appears (very) well chosen - does it not?

    Your time/effort invested in this (long) investigation IS appreciated - may well prove of  value - I hereby thank you for that.    

    Still - the comments of both poster Robert & myself - emphasizing the "quite predictable" RARITY of such (minority) focused resource - have been very well proven - have they not?