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/CCSTUDIO: Trying to install CCS in a docker container

Part Number: CCSTUDIO
Other Parts Discussed in Thread: CC3200SDK, CC3200, UNIFLASH,

Tool/software: Code Composer Studio

Hello,

I'm trying to install the latest CCS7.3.0.00019_linux-x64 in a docker container running Ubuntu 16.04.

I have followed the instructions defined in http://processors.wiki.ti.com/index.php/Linux_Host_Support_CCSv6

I have corrected most errors showing in the logs. There still are  errors regarding glibc and glibcxx  which are not problematic according to this discussion https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/296414 .

But it still doesn't get properly installed, does any of you have an idea what I could do to complete the installation?

Can I deactivate the installation of Blackhawk which seems to be a source of issue?

I have attached a zipfile containing the logs and the Dockerfile which shows clearly all the steps done.

Dockerfile: /cfs-file/__key/communityserver-components-multipleuploadfilemanager/ba63b10f_2D00_92aa_2D00_4955_2D00_a45a_2D00_99e8fcd2afa3-330799-complete/Dockerfile

Logfiles: /cfs-file/__key/communityserver-components-multipleuploadfilemanager/ba63b10f_2D00_92aa_2D00_4955_2D00_a45a_2D00_99e8fcd2afa3-330799-complete/log.zip

  • I can't seem to get to the attachments.

    Installing CCSv7.3 on Ubuntu 16.04 should be pretty straight forward. With v7 there are actually fewer dependencies than CCSv6. The v7 instructions are here:processors.wiki.ti.com/.../Linux_Host_Support_CCSv7

    It is possible to disable the installation of the Blackhawk files. During installation there is a screen for Debug Probe support. Make sure that Blackhawk is not checked on that screen.

    I am not very familiar with docker. It sounds like a container is very similar to a virtual machine.

    Regards,
    John
  • Thank you for your reply!

    Here are the files:

    6521.install_logs.zip

    Dockerfile.txt
    FROM ubuntu:16.04
    
    #see https://askubuntu.com/questions/551840/unable-to-locate-package-libc6-dbgi386-in-docker
    
    
    #http://processors.wiki.ti.com/index.php/Linux_Host_Support_CCSv6
    
    RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y \
      libc6:i386                    \
      libx11-6:i386                 \
      libasound2:i386               \
      libatk1.0-0:i386              \
      libcairo2:i386                \
      libcups2:i386                 \
      libdbus-glib-1-2:i386         \
      libgconf-2-4:i386             \
      libgcrypt20:i386              \
      libgdk-pixbuf2.0-0:i386       \
      libgtk-3-0:i386               \
      libice6:i386                  \
      libncurses5:i386              \
      libsm6:i386                   \
      liborbit2:i386                \
      libudev1:i386                 \
      libusb-0.1-4:i386             \
      libstdc++6:i386               \
      libxt6						\
      libxt6:i386                   \
      libxtst6:i386                 \
      libgnomeui-0:i386             \
      libusb-1.0-0-dev:i386         \
      libcanberra-gtk-module:i386   \
      gtk2-engines-murrine:i386     \
      libpython2.7				    \
      unzip         				\
      wget
    
    # Install missing library
    RUN wget https://launchpad.net/ubuntu/+archive/primary/+files/libgcrypt11_1.5.3-2ubuntu4.2_amd64.deb && dpkg -i libgcrypt11_1.5.3-2ubuntu4.2_amd64.deb
    
      
    #  libc6-dbg:i386 \
    #  libc6:i386 \
    #  libc6-dbg \
    #  libx11-6:i386 \
    #  libasound2:i386 \
    #  libatk1.0-0:i386 \
    #  libcairo2:i386 \
    #  libcups2:i386\
    #  libdbus-glib-1-2:i386\
    #  libgconf-2-4:i386 \
    #  libgcrypt20:i386\
    #  libgdk-pixbuf2.0-0:i386\
    #  libgtk-3-0:i386 \
    #  libice6:i386\
    #  libncurses5:i386\
    #  libsm6:i386\
    #  liborbit2:i386\
    #  libudev1:i386 \
    #  libusb-0.1-4:i386\
    #  libstdc++6:i386\
    #  libxt6:i386 \
    #  libxt6 \
    #  libxtst6:i386 \
    #  libgnomeui-0:i386\
    #  libusb-1.0-0-dev:i386\
    #  libcanberra-gtk-module:i386\
    #  gtk2-engines-murrine:i386 \
    #  unzip\ 
    #  libpython2.7 \
    #  git
      
    
    RUN export JAVA_TOOL_OPTIONS=-Xss1280k
      
    
    #ADD automatically extracts the archive  
    ADD CCS7.3.0.00019_linux-x64.tar.gz ccs_install
    
    #Install udev http://ucsolutions.blogspot.ch/2014/06/problems-during-installation-code.html
    COPY libudev0_175-0ubuntu19_i386.deb /ccs_install/libudev0_175-0ubuntu19_i386.deb
    RUN dpkg -i /ccs_install/libudev0_175-0ubuntu19_i386.deb
    
    RUN pwd
    RUN ls
    RUN ls ccs_install
    
    #
    RUN mkdir ccs
    
    #To avoid issue with /ccs/ccsv7/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh (Currently the setup is only used for building)
    #RUN mkdir /etc/udev/rules.d
    
    # Install ccs in unattended mode
    #https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/374161
    #RUN /ccs_install/CCS7.3.0.00019_linux-x64/ccs_setup_linux64_7.3.0.00019.bin --mode unattended --prefix /ccs/
    
    # There is no issue with glibcxx https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/296414
    
    

    Yes docker is very similar to a virtual machine, except you don't have any graphical interface and the container (=docker VM) is typically lighter than a full VM. 

    This forces me to use the unattented installation mode and therefore I cannot disable the BlackHawk installation with the graphical interface. 

    I launch the install with /ccs_install/CCS7.3.0.00019_linux-x64/ccs_setup_linux64_7.3.0.00019.bin --mode unattended --prefix /ccs/

    I have just discovered the   --save-response-file option in the thread https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/417809. I'll try to remove BlackHawk using this now.

  • It is odd that the driver install script fails. You can avoid that step if you run as user, it will just prompt you to run afterwards. I see some other messages in the log that I will to to ask others about.

    Regards,
    John
  • Did you have any luck? Apparently the other messages I was wondering about in the log are related to the display and shouldn't be an issue.
  • I have tried to install it as a user but got the same behavior.

    Then I tried with another base docker image https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/ and installed it with the GUI using a vnc connection to the container. This worked fine but I'm not happy with having to use the GUI install.

    So I tried in exactly the same context but with the command  ./CCS7.3.0.00019_linux-x64/ccs_setup_linux64_7.3.0.00019.bin --mode unattended --prefix /opt/ti". This did not work.

    Do you have an idea what could change between the GUI install and the unattended?

    Here are the logs for the unattended install

    ccs_install_logs.zip

  • It is still failing on the Blackhawk install with a udev issue (udev: unrecognized service)

    Were you able to create a response file that does not include Blackhawk?
  • I have not yet tried it. Is it enough to remove EMU_BH from the attached file?

    response.txt
    CreateDesktopShortcut: Yes
    CreateQuickLaunchShortcut: Yes
    InstallDir: /ccs/
    InstallMode: Standard
    LaunchApplication: No
    edition_selection: Custom
    feature_selections: JRE P2APP ECLIPSE ECLIPSECORE P2TOOLS GMF IDE_MAIN IDE_WORKFLOW DVT_COMMON DVT_UIA DVT_VIA_CCS TIREX XULRUNNER INSTALLER IDE_CHROME IDE_TOOLS_COMMON IDE_GC TARGET_CONTENT_CORE TARGET_CONTENT_CORE_LEGACY NODEJS PINMUX IDE_MSP430 MSP430_BUILD_DEBUG MSP430_GCC_SUPPORT EMU_MSP430 DS DS_FLASH CLOUDAGENT MSP430_CGT_HELP CGT_DEFAULTLIBS_MSP430 DMED GCC_MSP430_COMPILER DVT_ENERGYTRACE MSP432_BUILD_DEBUG EMU_MSP432 EMU_MSP432_FLASH ARM_CGT_HELP CGT_DEFAULTLIBS_TMS470 IDE_ARM GCC_ARM_COMPILER DVT_TRACE EMU_TI SEGGER_J_LINK SEGGER_J_LINK_DRIVERS EMU_BH EMU_SD DEV_SUPPORT_CC26XX EMU_STELLARIS TIVA_STELLARIS_DRIVERS DEV_SUPPORT_CC32XX DEV_SUPPORT_CC3220 DEV_SUPPORT_CC32XX_COMMON DEV_SUPPORT_CC2538 IDE_C2000 EMU_C2000_FLASH EMU_C2000 GREE_C2000_SUPPORT C2000_CGT_HELP CGT_DEFAULTLIBS_C2800 TIVA_TM4C TIVA_TM4E EMU_HERCULES DEV_SUPPORT_SITARA DEV_SUPPORT_SHARED C6000_CGT_HELP CGT_DEFAULTLIBS_C6000_V8P BBONE_FTDI_DRIVERS ARM_QT IDE_C6000 DEV_SUPPORT_INTEGRA CGT_DEFAULTLIBS_C6000 DEV_SUPPORT_DAVINCI DEV_SUPPORT_OMAP DEV_SUPPORT_AUTOMOTIVE EVE_SIM_TI CGT_DEFAULTLIBS_EVE IDE_C5500 DEV_SUPPORT_C55XX DEV_SUPPORT_C6000 KEYSTONE1 KEYSTONE2 DEV_SUPPORT_MMWAVE DEV_SUPPORT_C6000MC DEV_SUPPORT_UCD31XX DEV_SUPPORT_PGA
    product_selections: {MSP430 ultra-low power MCUs} {SimpleLink? MSP432? low power + performance MCUs} {SimpleLink? CC13xx and CC26xx Wireless MCUs} {SimpleLink? Wi-Fi� CC32xx Wireless MCUs} {CC2538 IEEE 802.15.45 Wireless MCUs} {C2000 real-time MCUs} {TM4C12x ARM� Cortex�-M4F core-based MCUs} {Hercules? Safety MCUs} {Sitara? AMx Processors} {OMAP-L1x DSP + ARM9� Processor} {DaVinci (DM) Video Processors} {OMAP Processors} {TDAx Driver Assistance SoCs & Jacinto DRAx Infotainment SoCs} {C55x ultra-low-power DSP} {C6000 Power-Optimized DSP} {66AK2x multicore DSP + ARM� Processors & C66x KeyStone? multicore DSP} {mmWave Sensors} {C64x multicore DSP} {UCD Digital Power Controllers} {PGA Sensor Signal Conditioners}
    

  • Yes removing that string should do the trick.
  • That did it indeed! Thank you for the help.

    Now the installation complete without GUI and I have been able to import and start the build with command line.

    (I'll post a link to the dockerfile later if anybody's interested)

    Now I have an issue during the build:

    subdir_rules.mk:34: *** target pattern contains no '%'.  Stop.

    Which I guess is due to the windows path like: i2c_if.obj: /C:/ti/CC3200SDK_1.3.0/cc3200-sdk/example/common/i2c_if.c $(GEN_OPTS) | $(GEN_HDRS)

    What is the best way to compile the same source/project both on windows and linux? Can I change the variable using the command line?

    Or do I need to hack the .project file before import to change CC3200_SDK_ROOT to point to /opt/ti/CC3200SDK instead of /C:/ti/CC3200SDK?

  • I created a small script to modify the variable path, it nows compiles \o/

    Thanks for your help!

    If anybody's interested, I've uploaded the dockerfile to github https://github.com/sirde/ccs-v7-ci and the image to 

  • Thanks for posting the dockerfile.

    As far as the build issue, unfortunately some of our software packages are not created in a cross-platform way.  The SimpleLink SDK for CC3220 should be good but I believe the CC3200 SDK has some issues.  You should be able to change the value of the variable after importing.  It will present in the build options here:

    You will also want to check the include paths for both the Compiler and Linker.

    Regards,

    John

  • Thanks for the info, the SDK seems to cause no trouble with my setup.

    Now I'm trying to install uniflash in exactly the same way. But I get a segmentation fault:

    Error: There has been an error.

    Error running /opt/ti/uniflash_3.4/eclipse/uniflash -application

    org.eclipse.equinox.p2.director -repository

    "file://ccs_install/Uniflash_3.4.1.00012_linux/repo" -installiu

    com.ti.ccstudio.p2tool.install.feature.group -destination

    "/opt/ti/uniflash_3.4/eclipse" -nosplash: Segmentation fault

    Press [Enter] to continue:

    I have tried with various JAVA_TOOL_OPTIONS without success . I have tried both in command line only and with the gui. Any pointer?

    Here is the log:

    2555.bitrock_installer.log

    P.S. I can open a new thread if needed, but I thought that's largely related to this one.

  • We can continue on this thread.

    Can you take a look in <uniflash installdir>/eclipse/configuration and see if there any <bignumber>.log files there? Similarly there may be some additional logs in /tmp/uniflash_<guid>

    Regards,
    John
  • There is nothing in the installation folder /opt/ti, and there are no other logs in /tmp

    I've tried with the command ./uniflash_setup_3.4.1.00012.bin --debuglevel 4 --debugtrace debugtrace.log which gives the unreadable log below:

    debugtrace.log

  • The team came up with a suggestion.

    Would you be able to install UniFlash on a regular Linux machine with the same distribution. Then tar/zip the install and extract it into the container. Ideally with keeping the "install" paths the same.

    Then try to run the extracted version. There is a good chance that it still will not work but hopefully at that point we will be able to figure it out.

    Regards,
    John
  • I have tried various things:

    Installed the 3.4.1 in a virtual machine running the same ubuntu 16.04

    I got exactly the same error as when installing with docker:

    Error: There has been an error.
    Error running /opt/ti/uniflash_3.4/eclipse/uniflash -application
    org.eclipse.equinox.p2.director -repository
    "software-dl.ti.com/.../repo"
    -installiu com.ti.ccstudio.p2tool.install.feature.group -destination
    "/opt/ti/uniflash_3.4/eclipse" -nosplash: Segmentation fault (core dumped)

    Installed the 4.2.1 version in docker

    Installed finished correctly, but got this error at launch

    [105:1031/100011:ERROR:browser_main_loop.cc(162)] Running without the SUID sandbox! See code.google.com/.../LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.

    [105:1031/100011:ERROR:browser_main_loop.cc(208)] Gtk: cannot open display:
    root@f589c1e736b2:/opt/ti/uniflash_4.2.1# [107:0100/000000:ERROR:zygote_linux.cc(587)] write: Broken pipe

    Retried the 3.4.1 with more libraries

    The 4.2.1 install detected some more missing libraries, so I tried to install them and rerun the 3.4.1 install. But it didn't help.

    Do I need to install it in a physical ubuntu machine?

    Alternatively, as I'm only interested in the creation of the gang programming file at the moment, is there any other way to create it? Using ccs in command line for instance?

  • UniFlash 4.x is not going to work for you as it doesn't have CC3200 support. It has CC3220 but not CC3200 (long story).

    I have installed 3.4.1 on Ubuntu 16.04 fine. However I tried on a different Ubuntu 16.04 machine and I get the same segmentation fault as you. This machine is more updated than the other one. We are going to figure out what is going on.

    John
  • I'm glad to know you could reproduce the issue! 

  • There seems to be a compatibility issue between the x86 v1.7 JVM we're using with that version of UniFlash and Ubuntu 16.04. Could you try getting the latest 1.8 32-bit JVM from java.com:

    • untar it into a local folder
    • rename /opt/ti/uniflash/eclipse/jre to /opt/ti/uniflash/eclipse/jre.bak  (or wherever you have installed UniFlash)
    • copy the new 1.8 jvm you just untarred to ~/ti/uniflash/eclipse/jre
    • Give UniFlash a try now.  This worked for me in so far as the application now starts.

  • Thank you for the feedback.

    As I understand, the install and launch is all in one step, and when it fails at any point my /opt/ti directory is empty.

    So I've packaged the jre 8 zip in the complete Uniflash install and tried it. 

    I got this error instead:

    Error running /opt/ti/uniflash_3.4/eclipse/uniflash -application org.eclipse.equinox.p2.director -repository "file://ccs_install/uniflash/repo" -installiu com.ti.ccstudio.p2tool.install.feature.group -destination "/opt/ti/uniflash_3.4/eclipse" -nosplash: org.eclipse.equinox.p2.core.ProvisionException: Error: file://ccs_install/uniflash/repo is not a valid extension location because it already contains a standard p2 repository file.
    at org.eclipse.equinox.internal.p2.extensionlocation.ExtensionLocationMetadataRepositoryFactory.load(ExtensionLocationMetadataRepositoryFactory.java:68)

    The folder /ccs_install/uniflash/repo contains: artifacts.jar  binary  content.jar  features

    See the complete log.bitrock_installer_jre8.log

  • I am just waiting for the server to update but we have created a package that has UniFlash with the newer JRE that you should just be able to download, extract and then run UniFlash. I will send the link once it is live.

    John
  • Here is the link to the UniFlash with updated JRE archive:

    software-dl.ti.com/.../uniflash_3.4.tar.gz

    It was installed in $HOME/ti
  • Thanks for the link, I've been able to extract it and run the command line.

    But now I can not find the option that I need for the CC3200.

    I want to create a gang file programming with the FW I built:

    Update certificate, update /sys/mcuimg1.bin, update /sys/mcuimg2.bin, ... 

    And output programming.bin

    Can I do the first step?  (I don't mind hacking a bit of xml or else if needed)

  • Within the UI there is a gang programming section in the UI.  I have not used this myself.  Do you have access to a machine where you can run the UI.  It should be possible to add the images here and then export the Gang image and then use the command line tool to do the programming.

    There is more information on the command line interface here:

    http://processors.wiki.ti.com/index.php/CC3100_%26_CC3200_UniFlash#Command_Line_support

    Le me know if this is not enough information and I will try to loop in a UniFlash expert.

    http://processors.wiki.ti.com/index.php/CC3100_%26_CC3200_UniFlash_Quick_Start_Guide

    Regards,

    John

  • Yes I was able to create a setup using the GUI uniflash. But what I'd like is for every new firmware build to "package" it using the command line uniflash. For this I could not find the option with the CC3200 command line (UniflashCLI.sh). From what I understand it's possible with standard command line (UniFlash.sh).

  • Can you expand on what you mean by 'package every new firmware build using command line'?

    You can create and edit a session in the GUI, and save it to be used in the command line.

    There is no direct way to edit the parameters (like the path to mcuimg) in the created session from command line, except for simple overrides like the com port and format settings. We also do not support generating an gang image from command line; this will need to be done from the GUI.

    Thanks.
  • I understand I can use the GUI. But I wanted a fully automated solution for our automated tests: 

    • Set the mcuimg1,2,3. 
    • Set the Cert/1.crt
    • Set a few other custom files
    • Create a gang programming file

    I'll lhave a look at the possibilities other than Uniflash.