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.

CCS/SW-EK-TM4C129EXL: Simple. How to locate Includes?

Part Number: SW-EK-TM4C129EXL
Other Parts Discussed in Thread: EK-TM4C129EXL, ENERGIA, TM4C129ENCPDT

Tool/software: Code Composer Studio

Simple one for the experts. This is yet another CCSv7 hair-puller:

Trying to send output to the UART, based on hello example for TM4C129EXL... hello example works fine.

I do have a pathname set up to SW-TM4C-2.1.4.178/examples/boards/ek-tm4c129exl 

In my new little test code, uart.h is found, but uartstdio.h is not. Hmmm.......

#include "driverlib/uart.h"

#include "utils/uartstdio.h"

  • Good day, Lou

    Don't get too desperate! There are yet much worse include battles on your life to come!

    For this particular case, might you have changed the original TivaWare folder structure? Folder "driverlib" and folder "utils" both reside at the same level, and it is weird that the compiler can resolve one but not the other...

    If you are patient enough to read this page, particularly the second half of it, I have noted the "overall settings" that worked for me after a lot of pain and learning... I trust you will be able to access it, and feel free to let me know if it is still confusing or can be improved.

    docs.google.com/.../1Hx6VONMLDriDeg4XeBcxwMbyuMK-v2BTrIQEj4DA4nA

    Regards

    Bruno

  • Bruno Saraiva said:
    For this particular case, might you have changed the original TivaWare folder structure? Folder "driverlib" and folder "utils" both reside at the same level, and it is weird that the compiler can resolve one but not the other...

    Yes, both are at the same level - no changes to original structure, as decompressed on install.

    Yes, your logic on this - 'it is weird' - is precisely the conclusion I arrived at myself.

    Surmising how I may be getting off the reservation in this case: My CCS project imported from an Energia test is insisting on using the GCC toolchain in CCS. Any attempt to switch to the TI LTS Compiler results in: The board-ID 'null' is not recognized. It is either invalid, or is not supported by Energia v18.0. OK, so have to research where 'board-id' is stored.

    My over-arching take on all this? i would have expected a learning curve with any new architecture/IDE - certainly when taking on both simultaneously! But I'm wasting an awful lot of time on the pedestrian stuff here - and it's been weeks. This really affects productivity; I find myself all over the map just trying to get any simple experiment to work...

    This is just the latest example. What would be a simple "-I /path/to/your/stuff" in another environment is a full day of research in this one.

    Bruno, thanks for your response. Will read your doc.

  • Feel your pain - yet might such "result from" - or at least be amplified by - your admittance of, "energia?"

    You appear to being (very) close to having "outgrown that crutch" - and its excise from your efforts may enhance your "on-going" efforts.

    To further, "make this case" -  "Forum Search Box" reveals that (often) - even vendor staff, "Shy from "e's" use" - direct posters to (that) forum..."

    There likely is (some) merit in reviewing "e's code examples" - extracting general methods - yet the attempt to "blend" ("e" & vendor's API)  leads - too often - to (just) the many pitfalls you report...

  • Hi,

     Normally in CCS if you press ctrl key and left-click on the #include "utils/uartstdio.h" it will open the uartstdio.h file for you. If you do that does it find the uartstdio.h file? In the project directory, if you go to <your project>->Includes->C:ti/TivaWare_C_Series-2.1.4.178->utils do you see the uartstdio.h file?

      Normally I have seen other posters with the problem during linking when the uartstdio.obj is not found/compiled. If this is the case you need to make sure the uartdtdio.c is either linked or copied to your project directory.

  • Tks for the feedback. Yes, am indeed arriving at the same excision conclusion.

    In fact, I have no ongoing interest in Energia at all. It was intended to be a springboard onto bigger, better IDE(s). We do have a collected body of work on Energia (and Arduino) which simply works. These are nothing like production-level projects, but they've served to quickly prototype various elements of our overall project.

    Original task was one of edification: What is the transfer path between Energia and CCS? With the effort invested in this, it just feels like the proverbial chasse au dahu.

    I'm not gonna blend. Am diving in the deep end to understand The TI Way.

  • Good that - yet even while (proverbial) "chasse au dahu" out-distances the combined understanding of this reporter & crack staff.

    Blend-free may represent your movement to, "Proceeding by Refinement" - and when accompanied by "KISS" - most always yields the shortest, easiest & fastest - "Path to Success!"      Allez mon ami!

  • Charles,

    Thanks for your efforts here...

    Charles Tsai said:
    in CCS if you press ctrl key and left-click on the #include "utils/uartstdio.h" it will open the uartstdio.h file for you

    Working on Mac, the right-click will present a popup menu. Among the options is Open Declaration (F3) - I assume this is what you're referring to? According to that approach, most of my includes were not find-able. ( This seems odd, as the compiler provided no errors hinting at this... )

    Anyway, the key bit was: including both specific path in my #includes: 
    .../SW-TM4C-2.1.4.178/examples/boards/ek-tm4c129exl  -- to the board-specific stuff  - as well as -
    .../SW-TM4C-2.1.4.178  -- to the entire TivaWare archive

    'drivers' are located in the first.
    'driverlib', 'inc', 'utils' and others are in the second, of course.

    and explicitly copied uartstdio.c into the project, per your suggestion.

    I also threw #include "inc/tm4c129encpdt.h" into my setup. Why the heck not, right?

    This line will not compile:

    // Configure the device pins.
    // PinoutSet(false, false);

    But I am certainly not smart enough to understand why!

    In any case, after a lot of dancing, I've now got it compiling - and sending a little output to UART, even without the PinoutSet... Your response at least got me on the right track.

    Yay. Baby Steps!

  • Do let the record reveal that, "Only one here" (consistently) pushes for "KISS" - which begets (limited - yet well focused - such steps!)