Code composer error

9.1. InstallationВ¶ 9.1.1. General Tips for Installing CCSВ¶ Clean out all prior failed or incomplete installations (by deleting the install directory) before attempting a new one to the same directory. In Windows, use Shift+Del and in Linux and MacOS use rm -Rf on the install directory. If you plan to install two versions side-by-side, […]

Содержание

  1. 9.1. Installation¶
  2. 9.1.1. General Tips for Installing CCS¶
  3. 9.1.2. Installation Error Related to Missing MSVC Redistributable Libraries¶
  4. 9.1.2.1. Windows 7В¶
  5. 9.1.3. Installation Fails when «Installing Eclipse»В¶
  6. 9.1.4. Installation Fails with Error About Permissions on Temporary Folder¶
  7. 9.1.5. MacOS Installation Freezes or Prompts for Proxy Information¶
  8. 9.1.6. Clearing Out An Existing Installation¶
  9. 9.2. Startup¶
  10. 9.2.1. JVM Max Heap Size is Too High or Too Low¶
  11. 9.2.2. Failed to Create the Java Virtual Machine¶
  12. 9.2.3. Antivirus or Other Security Software¶
  13. 9.2.4. Missing MSVC Redistributable Libraries¶
  14. 9.2.5. Corrupt Workspace Folder¶
  15. 9.2.6. «com/ti/dvt/energytrace» ErrorsВ¶
  16. 9.3. Updates¶
  17. 9.3.1. No Update Sites Found¶
  18. 9.3.2. CCS App Center Not Connecting¶
  19. 9.3.3. Out of Memory Error When Installing Add-ons from CCS App Center¶
  20. 9.3.4. Error: Computing size has encountered a problem¶
  21. 9.3.5. Updates fail with No repository found or Connection reset or artifact for binary not available errors¶
  22. 9.4. General IDE¶
  23. 9.4.1. Reset the Perspective¶
  24. 9.4.2. Use the -clean Argument When Calling «ccstudio(.exe)»В¶
  25. 9.4.3. Clean the Workspace (or try using a new one)В¶
  26. 9.4.4. Heap and JVM settings¶
  27. 9.4.5. GTK3 (for CCS Linux)В¶
  28. 9.4.6. Failed to create the part’s controls Errors (for CCS Linux)В¶
  29. 9.5. Resource Explorer¶
  30. 9.5.1. Connection Issues¶
  31. 9.5.1.1. Check your Internet Connection¶
  32. 9.5.1.2. Check the Proxy Setting¶
  33. 9.5.1.3. Clear the Resource Explorer Cache¶
  34. 9.5.1.4. Clear the CCS Browser Cache¶
  35. 9.5.1.5. Check for Running Processes¶
  36. 9.5.1.6. Logs¶
  37. 9.6. Project Management and Build¶
  38. 9.7. Debug¶
  39. 9.7.1. JTAG Connectivity Issues¶
  40. 9.7.2. Data Verification Issues¶
  41. 9.7.3. Delete the debug launch configuration¶
  42. 9.7.4. Delete the .launch File¶
  43. 9.7.5. Delete Target Cache Files¶
  44. 9.7.6. CCS Freezes During Debug¶
  45. 9.7.7. Hardware Trace Issues¶
  46. 9.7.8. RTOS Analyzer Issues¶
  47. 9.8. Getting Support¶
  48. 9.9. Diagnostic Logs¶

9.1. Installation¶

9.1.1. General Tips for Installing CCS¶

  • Clean out all prior failed or incomplete installations (by deleting the install directory) before attempting a new one to the same directory. In Windows, use Shift+Del and in Linux and MacOS use rm -Rf on the install directory.
  • If you plan to install two versions side-by-side, always use different workspaces. Sharing a workspace between two versions may cause severe impact in project building and debugging.
  • Disable anti-virus (certain anti-virus software is known to cause problems). If it cannot be disabled, try the off-line installer instead of web installer.
  • It is recommend to have a username that does not have any non-alphanumeric characters, and that you are installing CCS to a directory that does not have any non-alphanumeric characters.

A temporary directory using the username is created during installation, and Eclipse is unable to handle some non-alphanumeric characters. If your username does have non-alphanumeric characters, please create a temporary admin user for installing CCS.

CCS (on Windows) has a dependency on some Microsoft runtime libraries. These libraries should be installed by the CCS installer. However there are some cases where these libraries fail to get installed properly. In this case, the installer may fail with an error message that points to a log file inside a workspace.

Some message in the log may have errors such as: — java.lang.UnsatisfiedLinkError: C:ticcs930ccsccs_baseDebugServerbinLibraryLoader.dll: Can’t find dependent libraries — java.lang.UnsatisfiedLinkError: C:ticcs1020ccsccs_baseDebugServerbinLibraryLoader.dll: %1 is not a valid Win32 application

Try installing the latest 64 bit runtime for VS 2019. You can get it from:

9.1.2.1. Windows 7В¶

Another reason for the above issue could be if you are running Windows 7 and the Windows patches are not up to date

To check if you are missing Windows patches, please run the following command in the command prompt: WMIC QFE|find «KB2999226»

It should return information on the updates. If it returns nothing, it is likely that you’re missing the service pack update that’s required to run the MSVC Runtime. You could get the Windows update by downloading from here or by following the procedure here After installing the Windows update, you can proceed with installing CCS into a clean directory.

9.1.3. Installation Fails when «Installing Eclipse»В¶

If the installation fails when installing eclipse with the message: Failed to install eclipse. Cannot recover from this error., take a look at the install log and search for _JAVA_OPTIONS. If this environment variable is set, it may interfere with the Eclipse installation.

The workaround is to temporarily unset the variable, then delete the contents of your aborted installation and try reinstalling CCS. The variable can be reset after the installation is complete.

9.1.4. Installation Fails with Error About Permissions on Temporary Folder¶

If CCS installation fails with the following error, it means that the system temporary folder does not have the required permissions, OR that the username, and thereby temporary directory, has non-alphanumeric characters.

First ensure that the username, and thereby temporary directory, does not have any non-alphanumeric characters. See the General Tips for Installing CCS section for more information.

Next, make sure that the system TEMP directory has correct permissions. The CCS installer needs to be able to write to a temporary location and execute programs from it. By default, it uses the system temporary directory %TEMP% but if that directory does not have the right permissions, the installation will fail with the above error.

The solution is to:

  • Make sure the system temporary directory has full permissions, or
  • If you cannot change permissions on the system TEMP directory, then run the installer on a Windows command prompt with the —temp parameter (as indicated in the message) and specify a different temp directory that has full permissions (it could be any folder that you create on your machine). For example: —temp c:mytemp

9.1.5. MacOS Installation Freezes or Prompts for Proxy Information¶

When installing CCS on MacOS Sierra, if the installation freezes or prompts for proxy information (ie. appears to require internet connection even with the off-line installer), the reason may be due to a new security feature called «Gatekeeper Path Randomization» (or «app translocation», as it’s called on the API level) introduced in MacOS Sierra. (more info at this link).

A workaround is to run the following command before invoking the installer: xattr -r -d com.apple.quarantine ccs_setup_7.1.0.00016.app

9.1.6. Clearing Out An Existing Installation¶

To uninstall a failed CCS, delete the entire ccsv[x] folder. Keep in mind this will erase the install information of other CCS versions you may have installed in parallel. If in doubt, check the date and time of each directory and delete the one that matches your attempt of install.

If you need to completely wipe all information from all versions of CCS ever installed in your system, delete all workspace directories created and all directories in the locations below:

In Windows, if the complete removal of JTAG debugger device drivers is necessary, you must follow a more thorough procedure:

  1. Check this typical procedure to remove device drivers using the Device Manager, but keep in mind you will have to enable the option Show hidden devices under the menu View to display all JTAG debuggers ever connected to your PC.
  2. With this enabled, in the directory tree look for the branches that start with Blackhawk, SD USB Based Debug Tools, Stellaris Device Firmware Upgrade, Stellaris In-Circuit Debug Interface, Texas Instruments Emulators and Texas Instruments Debug Probes.
  3. For every item inside these branches, right-click and select Uninstall. Also, check the box near Delete the driver software for this device.
  4. Also, when expanding the branch Ports, check for any relevant entries that mention one or more TI targets such as CC3200LP Dual Port, MSP Application UART1, XDS, Stellaris, etc. Repeat step 3 above for each entry.
  5. Similar thing with the branch Universal Serial Bus Controllers.

9.2. Startup¶

There are several other potential cases that would prevent CCS from starting up:

9.2.1. JVM Max Heap Size is Too High or Too Low¶

Sometimes the default size for the CCS JVM max heap size is either too high or too low. In those cases, it can prevent CCS from starting up. To resolve this, try adjusting the max heap size. See the Heap and JVM settings section for more information.

9.2.2. Failed to Create the Java Virtual Machine¶

This issue is usually related to java virtual memory size. Try lowering the max heap size. See the Heap and JVM settings section for more information.

9.2.3. Antivirus or Other Security Software¶

Some antivirus/security software are more aggressive than others and may block CCS for starting up. Try disabling it and see if that allows CCS to start. If so, it may be necessary to add some exception to the software to allow CCS to run properly.

9.2.4. Missing MSVC Redistributable Libraries¶

CCS (on Windows) has a dependency on some Microsoft runtime libraries. These libraries should be installed by the CCS installer. However there are some cases where these libraries fail to get installed properly, are corrupted, or conflict with other libraries. When this happens, CCS will fail to start. Sometimes the below errors will be reported:

The workaround is to try reinstalling the libraries. First uninstall the MSVC Redistributables (32 bit versions) using Add/Remove Programs. Then download and install those libraries from Microsoft’s download site.

These types of errors may also occur during installation if you are running Windows 7 and the Windows patches are not up to date. In this case the errors will be reported in the .log file in the workspace folder.

To determine if you are missing Windows updates, please run the following command in the command prompt: WMIC QFE|find «KB2999226»

It should return information on the updates. If it returns nothing, it is likely that you’re missing the update that’s required to run the MSVC Runtime. You could get the update by downloading from here or by following the procedure here.

9.2.5. Corrupt Workspace Folder¶

Sometimes the cached data inside the workspace folder can get corrupted, preventing CCS from starting up. Cleaning the workspace can help. See the General IDE section for tips on how to clean the workspace folder.

If CCS reports an error during launch regarding com/ti/dvt/energytrace/af/PowerActivity , com/ti/dvt/energytrace/views/Dashboard , or similar, try deleting the files in [WORKSPACE FOLDER].metadata.pluginscom.ti.dvt.energytrace and restarting CCS.

9.3. Updates¶

9.3.1. No Update Sites Found¶

In some cases, when looking for updates (menu Help в†’ Check for Updates or Install New Software), the error «No repository found» can appear. This is due to the fact the list of CCS update sites gets erased, thereby not listing any available updates. The exact reason that triggers that is still unknown, but the solution is simple: to restore the list, request an update bookmarks file for your CCS version on the (TI Support Forums. Then go to CCS menu Window в†’ Preferences в†’ Install/Update в†’ Available Software Sites, click on Import, browse to the bookmarks file and click Ok.

9.3.2. CCS App Center Not Connecting¶

Under certain circumstances the CCS App Center may refuse to connect to its online repository and return the following error message: We are sorry, we cannot access the CCS App Center server. Please check your internet connection and press the ‘Reload’ button in this page.

The reason for that is not yet fully characterized, but it may be due to several conditions discussed in the e2e forum threads below:

9.3.3. Out of Memory Error When Installing Add-ons from CCS App Center¶

In some cases, when installing Add-ons from App Center (usually TI-RTOS for MSP43x or TivaC), the following error may occur:

To resolve this, try adjusting the max heap size. See the Heap and JVM settings section for more information.

9.3.4. Error: Computing size has encountered a problem¶

After installing updates through CCS Updates Available dialog, when prompting to restart CCS, a dialog regarding an internal error being encountered during «Computing Size» may occur. In this case, try deleting the two directories below:

  • [CCS INSTALL DIR]/ccsv[x]/eclipse/p2/org.eclipse.equinox.p2.core/cache
  • [CCS INSTALL DIR]/ccsv[x]/eclipse/p2/org.eclipse.equinox.p2.repository/cache

9.3.5. Updates fail with No repository found or Connection reset or artifact for binary not available errors¶

In some cases, CCS updates may fail with these types of errors:

If this happens, try the following steps:

  1. Exit out of CCS
  2. Delete the two directories below:
  • [CCS INSTALL DIR]/ccsv[x]/eclipse/p2/org.eclipse.equinox.p2.core/cache
  • [CCS INSTALL DIR]/ccsv[x]/eclipse/p2/org.eclipse.equinox.p2.repository/cache
  1. Start CCS and go to menu Help в†’ Install New Software
  2. From the drop down list of available software sites, select the software that you were trying to update earlier (for example, Code Generation Tools or TI C2000 Device Support as in the above two cases)
  3. Uncheck the box Contact all available sites during install to find required software at the bottom of the pane
  4. Proceed with installing the update

If the above steps do not help, try the tips in this page.

If your network requires a proxy server to be used, then make sure it is configured correctly. Check the reference below for additional details:

For CCS Linux only: The above issue can also occur if CCS was installed under sudo (or similar).

9.4. General IDE¶

CCS is based on the Eclipse open source framework and when experiencing various odd/corrupted behavior (missing menu options, «blank» views, plug-ins are missing or no longer behave properly, random crashes, etc), common tips on cleaning up your Eclipse environment also apply to CCS. Some of these tips are in the sections below:

9.4.1. Reset the Perspective¶

If the issue is strange GUI appearance (missing menu options or strange/empty looking views), often just resetting the perspective can resolve this. This can be done by selecting Window в†’ Reset Perspective

9.4.2. Use the -clean Argument When Calling «ccstudio(.exe)»В¶

CCS is launched by running the .ccsv[x]eclipseccstudio(.exe) executable. This is what is called when using the CCS desktop shortcut. However, ccstudio(.exe) can be called with some command line arguments. One of them is -clean . When calling ccstudio(.exe) with -clean , it will clean out cached data by the IDE and plug-ins upon launching CCS. Sometimes this cached data can get corrupted over time and cleaning it out can fix many problems. Note that launching CCS with -clean will cause the launch time to be slower so it is not recommend to use it every time but only when needed. For an example in Windows, to add the -clean option simply right-click on the CCS desktop shortcut, select Properties and select Shortcut tab; in the Target field, add -clean as a suffix. Example (Windows): C:ticcsv8eclipseccstudio.exe -clean .

9.4.3. Clean the Workspace (or try using a new one)В¶

CCS stores various information in a folder called .metadata located in the user’s workspace. The contents of this folder can get corrupted over time, causing various instability and strange behavior. Using a new workspace or cleaning the old workspace often helps resolve these issues. To use a new workspace, simply select a new workspace location (File в†’ Switch Workspace). If you wish to clean the old workspace, the simplest way to do this is to delete the .metadata folder in the workspace. This will essentially reset the workspace and restore the environment to the default behavior. All projects that were in the workspace will need to be re-imported into CCS, even though they are still physically in the workspace folder. Also note that any modified preference settings will be lost (set back to the default setting). If you wish to avoid resetting those preferences, export the preferences to a file (outside the workspace) by selecting File в†’ Export. в†’ General в†’ Preferences в†’ To preference file before deleting the workspace. Once the workspace has been cleaned, those preferences can be imported back into CCS by selecting File в†’ Import. в†’ General в†’ Preferences в†’ From preference file.

9.4.4. Heap and JVM settings¶

Usually messages such as Low Memory, Insufficient Heap, or Failed to create the Java Virtual Machine are related to the Java Virtual Machine (JVM) memory settings.

These settings are stored in the ccstudio.ini file located in the below path:

  • [CCS_INSTALL_DIR]/ccsv[x]/eclipse/ccstudio.ini (Linux and Windows)
  • [CCS_INSTALL_DIR]/ccsv[x]/eclipse/Eclipse.app/Contents/Eclipse/ccstudio.ini (macOS)

The file contains two important parameters for memory management: -Xms and -Xmx. The current default values of these two options are -Xms128m and -Xmx2048m (this may vary depending on the CCS version).

The flag -Xmx specifies the maximum memory allocation pool for a Java virtual machine (JVM), while -Xms specifies the initial memory allocation pool. This means the JVM will be started with -Xms amount of memory and will be able to use a maximum of -Xmx amount of memory.

There is also an eclipse.ini file in the same directory which also defines the same parameters. Modifying the eclipse.ini file will have no impact since it is not used by CCS.

If memory usage issues are occurring, some of the tips below can help understand and analyze its root cause:

  • To help monitor the heap usage, enable the heap monitor. Go to menu Window в†’ Preferences в†’ General в†’ Show heap status.
  • If there is too much heap memory being used, a clean up can be done by manually running the garbage collector (a small trash can icon on the heap monitor) or increase its size by closing CCS and increasing the -Xmx2048m parameter to a higher value in the file ccstudio.ini.

CCS versions (on Windows) prior to CCS 9.x were 32-bit application, and hence limited by the 32-bit JVM that uses up to 2GB of available RAM. Hence increasing -Xmx too much can reduce the available memory for other CCS operations (debugger, etc.). In those scenarios, it is not recommended to increase the max heap size greater than 1024m (-Xmx1024m). For 64-bit CCS versions, the maximum heap size can be higher (assuming there is enough available system memory). A range from 1536-2048 is recommended. Starting with CCS 9.3.0, the default maximum heap size is set to 2048m. Also, avoid increasing the -Xms as it can reduce the available heap that can be freed. Note that all CCS versions for Linux and macOS are 64-bit application.

  • If the project uses RTSC/TI-RTOS, sometimes opening the .cfg file on the Gconf utility tool can use quite a lot of heap.
  • If the project is very large, the indexer can use quite a lot of heap memory while indexing everything. The heap usage should get back to manageable levels as soon as this process finishes.
  • If the target configuration has a very large number of devices in the same scan chain, the heap can be excessively used.
  • Physical memory on the host matters. Although most of the systems nowadays have at least 8GB of RAM, a lower amount can be prone to problems.

On systems that do not meet the recommended 8GB of RAM, a large maximum heap size value can potentially cause overall system performance issues. Check the -Xmx and make sure the value is a reasonable one that will not consume too much of the whole system memory. What this value is will depend on the system, and some experimentation may be required to find the best setting.

Unfortunately memory usage is very difficult to minimize due to the thorough mapping performed by the Indexer or the added features on the debugger (Register views, etc.). One attempt to reduce this is to disable certain cores to be shown when the debugger is launched (done via the Debug Configurations settings), or disable the indexer or reduce its scope. To do this, right click on the Project в†’ Properties в†’ C/C++ General в†’ Indexer. Before accessing this option, make sure to click on the Show Advanced Settings link at the bottom of the properties dialog box.

9.4.5. GTK3 (for CCS Linux)В¶

There are several known compatibility issues between some versions of CCS Linux and GTK3. This incompatibility can cause various views to flicker, or display incomplete/empty content. To work around this issue, set the SWT_GTK3 environment variable to and then launch CCS.

Open a terminal and type:

then (in the terminal), browse to [CCS INSTALL DIR]/ccs/eclipse and run ./ccstudio .

9.4.6. Failed to create the part’s controls Errors (for CCS Linux)В¶

This error may appear when opening one of the jxbrowser based views (Resource Explorer, Getting Started, App Center, etc). The most common cause of this error is some missing dependencies by the jxbrowser libraries. Try running ldd on the libaries in [CCS INSTALL DIR]/ccs/eclipse/configuration/.jxbrowser-chromium-lib to find any missing dependencies that must be resolved.

9.5. Resource Explorer¶

9.5.1. Connection Issues¶

9.5.1.1. Check your Internet Connection¶

A poor internet connection may cause Resource Explorer to timeout when attempting to sync with the server. Try again when you have more bandwidth available.

9.5.1.2. Check the Proxy Setting¶

If Resource Explorer is unable to connect to the internet it may be an issue with the proxy setting. Ensure the setting is correct by performing the following steps:

  1. Open the Preferences dialog (menu Window в†’ Preferences)
  2. Type proxy in the search box
  3. Select Network Connections
  4. Under Active Provide, select Native
  5. Click OK
  6. Close and restart CCS twice

9.5.1.3. Clear the Resource Explorer Cache¶

  • All versions: Try deleting the tirex-localserver-[version] folder in C:Users[username]ti and restarting CCS.
  • CCS version 9.3 and greater: In addition to the above, try also cleaning the workspace: Clean the Workspace (or try using a new one)

9.5.1.4. Clear the CCS Browser Cache¶

Try deleting both the:

  • Chromium browser user cache folder [WORKSPACE FOLDER DIR]/.jxbrowser.userdata
  • Chromium browser system cache folder [CCS INSTALL DIR]/ccs/eclipse/configuration.jxbrowser.bin

9.5.1.5. Check for Running Processes¶

Another potential issue is that if there is an extra «node» process running. Close Resource Explorer. Check Task Manager or Activity Monitor and look for node. If one is running, kill it. Start Resource Explorer.

9.5.1.6. Logs¶

9.6. Project Management and Build¶

For errors encountered during project import or build, refer to this troubleshooting page: Project Import and Build errors in CCS.

9.7. Debug¶

For issues encountered during a debug session (launching a debug session, target connectivity issues, crashes experienced during debugging, etc), see/try the following below. Note that cleaning the workspace can also help resolve debugger issues.

9.7.1. JTAG Connectivity Issues¶

If an error happened during the process of launching the debugger or any JTAG specific issues, see: Debugging JTAG Connectivity Problems.

If running CCS on a Linux host, please make sure the driver install script is run as superuser using sudo after installation. See: CCS Linux Host Support.

9.7.2. Data Verification Issues¶

If a data verification error occurs when loading a program, see: Troubleshooting CCS — Data Verification Errors.

9.7.3. Delete the debug launch configuration¶

A launch configuration is a configuration file that Eclipse creates when a debug session is started — it caches the information on which target configuration to use, target options and several other settings. To delete the debug launch configuration, Go to menu Run в†’ Debug Configurations. and under Code Composer Studio — Device Debugging, select the name of your launch configuration and delete it.

9.7.4. Delete the .launch File¶

The .launch file is created when the Debug button is used to start a debug session for the project (and not independently from the Target Configurations view). To delete the file, open a file browser or a terminal and go to the project directory and check if a directory called .launches exists. If so, delete the file inside it. It typically has the extension .launch.

9.7.5. Delete Target Cache Files¶

CCS has a utility called fsclean that removes the most important cache files. This utility is typically installed under [CCS INSTALL FOLDER]/ccsv[x]/ccs_base/common/bin .

The cache files removed by fsclean are saved in a user and CCS installation specific location:

  • Windows: the location is: C:Users[username]AppDataLocalTexas InstrumentsCCS[CCSV[x] INSTALL FOLDER] .
  • Linux/OSX: there is a hidden directory named .ti/[CCSV[x]INSTALL FOLDER]/0/0 and located in the user area. The location is

Trace cache files are usually saved in similar locations:

  • Windows: the location is: C:Users[username].TI-trace
  • Linux/OSX: there is a hidden directory named .TI-trace and located in the user area. The location is

9.7.6. CCS Freezes During Debug¶

CCS may sometimes freeze due to something in the system itself (PC, USB issues, video card issues, etc.).

In other occasions, it may appear frozen when it is waiting for a JTAG debug operation to complete. This can be caused by a communications failure between the host and the target, or due to the application software running on the target that causes the JTAG debugger to lose sync with the connected core and keep retrying the operation.

In these cases it is recommended to follow the sequence below to try to pinpoint the source of the issue:

  1. Turn off the board. The JTAG debugger will detect a power failure if it is still «alive» and usually indicates an issue with the running application on the target. CCS control is recovered.
  2. Unplug the JTAG debugger from the USB port. CCS will detect the JTAG debugger is non-existing anymore and may indicate an issue with the JTAG debugger itself. CCS control is recovered.
  3. Kill CCS from the Task Manager/using the console. This indicates the issue is on CCS itself, either caused by an internal error or by the interactions between itself and the JTAG debugger. Also, keep in mind that CCS may need some time to recover after unplugging the JTAG debugger, but that rarely goes longer than 30 seconds.

9.7.7. Hardware Trace Issues¶

For general UI issues such as trace views not opening or displaying any data, try clearing the target cache files as mentioned in section Delete Target Cache Files and also cleaning the workspace folder as mentioned in section Clean the Workspace (or try using a new one).

In some cases, the older trace tools (Statistical Function Profiling, Interrupt Profiling, etc.) may refuse to open when selecting it from the menu. This problem can persist across CCS restarts. One thing to try is deleting the appropriate subfolder in the DVT folder of the current workspace ( [WORKSPACE FOLDER DIR]/dvt/CCSAnalysis/[TOOL] ). This can even be done while CCS is running.

In cases where trace data is successfully collected but the corresponding graph view is empty, reopen the graph view by going to the Trace Viewer view and pressing the Analyze button to select the relevant graph.

9.7.8. RTOS Analyzer Issues¶

For general UI issues such as various views not opening or displaying any data, try clearing the target cache files as mentioned in section Delete Target Cache Files and also cleaning the workspace folder as mentioned in section Clean the Workspace (or try using a new one).

In some cases, the various views (Printf and Error Logs, Execution Analysis, etc.) may refuse to open when selecting it from the menu. This problem can persist across CCS restarts. One thing to try is deleting the DVT folder of the current workspace ( [WORKSPACE FOLDER DIR]/dvt ). This can even be done while CCS is running.

9.8. Getting Support¶

If the troubleshooting tips mentioned above do not help resolve the issue, please contact CCS Support. When contacting a CCS support personnel, it is always very helpful to provide any Diagnostic Logs associated with the issue.

9.9. Diagnostic Logs¶

Diagnostic logs are often generated when an issue occurs with CCS. These logs can contain valuable information pertaining to the root cause of the issue. The information in these logs can be a bit cryptic, hence it is recommended to provide these logs to TI support personnel when Getting Support. For more information on these logs, please see the article: CCS Diagnostic Logs.

Источник

  • General
  • Package not found
  • Package is not updating to the expected version
  • Dependencies on the root package
  • Network timeout issues, curl error
  • Package not found in a Jenkins-build
  • I have a dependency which contains a «repositories» definition in its composer.json, but it seems to be ignored.
  • I have locked a dependency to a specific commit but get unexpected results.
  • Need to override a package version
  • Figuring out where a config value came from
  • Memory limit errors
  • Xdebug impact on Composer
  • «The system cannot find the path specified» (Windows)
  • API rate limit and OAuth tokens
  • proc_open(): fork failed errors
  • proc_open(): failed to open stream errors (Windows)
  • Degraded Mode
  • Operation timed out (IPv6 issues)
  • Composer hangs with SSH ControlMaster
  • Zip archives are not unpacked correctly.
  • Disabling the pool optimizer

This is a list of common pitfalls on using Composer, and how to avoid them.

General#

  1. When facing any kind of problems using Composer, be sure to work with the
    latest version
    . See self-update for details.

  2. Before asking anyone, run composer diagnose to check
    for common problems. If it all checks out, proceed to the next steps.

  3. Make sure you have no problems with your setup by running the installer’s
    checks via curl -sS https://getcomposer.org/installer | php -- --check.

  4. Try clearing Composer’s cache by running composer clear-cache.

  5. Ensure you’re installing vendors straight from your composer.json via
    rm -rf vendor && composer update -v when troubleshooting, excluding any
    possible interferences with existing vendor installations or composer.lock
    entries.

Package not found#

  1. Double-check you don’t have typos in your composer.json or repository
    branches and tag names.

  2. Be sure to set the right
    minimum-stability
    . To get started or be
    sure this is no issue, set minimum-stability to «dev».

  3. Packages not coming from Packagist should
    always be defined in the root package (the package depending on all
    vendors).

  4. Use the same vendor and package name throughout all branches and tags of
    your repository, especially when maintaining a third party fork and using
    replace.

  5. If you are updating to a recently published version of a package, be aware that
    Packagist has a delay of up to 1 minute before new packages are visible to Composer.

  6. If you are updating a single package, it may depend on newer versions itself.
    In this case add the --with-dependencies argument or add all dependencies which
    need an update to the command.

Package is not updating to the expected version#

Try running php composer.phar why-not [package-name] [expected-version].

Dependencies on the root package#

When your root package depends on a package which ends up depending (directly or
indirectly) back on the root package itself, issues can occur in two cases:

  1. During development, if you are on a branch like dev-main and the branch has no
    branch-alias defined, and the dependency on the root package
    requires version ^2.0 for example, the dev-main version will not satisfy it.
    The best solution here is to make sure you first define a branch alias.

  2. In CI (Continuous Integration) runs, the problem might be that Composer is not able
    to detect the version of the root package properly. If it is a git clone it is
    generally alright and Composer will detect the version of the current branch,
    but some CIs do shallow clones so that process can fail when testing pull requests
    and feature branches. In these cases the branch alias may then not be recognized.
    The best solution is to define the version you are on via an environment variable
    called COMPOSER_ROOT_VERSION. You set it to dev-main for example to define
    the root package’s version as dev-main.
    Use for example: COMPOSER_ROOT_VERSION=dev-main composer install to export
    the variable only for the call to composer, or you can define it globally in the
    CI env vars.

Network timeout issues, curl error#

If you see something along the lines of:

Failed to download * curl error 28 while downloading * Operation timed out after 300000 milliseconds

It means your network is probably so slow that a request took over 300seconds to complete. This is the
minimum timeout Composer will use, but you can increase it by increasing the default_socket_timeout
value in your php.ini to something higher.

Package not found in a Jenkins-build#

  1. Check the «Package not found» item above.

  2. The git-clone / checkout within Jenkins leaves the branch in a «detached HEAD»-state. As
    a result, Composer may not able to identify the version of the current checked out branch
    and may not be able to resolve a dependency on the root package.
    To solve this problem, you can use the «Additional Behaviours» -> «Check out to specific local
    branch» in your Git-settings for your Jenkins-job, where your «local branch» shall be the same
    branch as you are checking out. Using this, the checkout will not be in detached state any more
    and the dependency on the root package should become satisfied.

I have a dependency which contains a «repositories» definition in its composer.json, but it seems to be ignored.#

The repositories configuration property is defined as root-only. It is not inherited. You can read more about the reasons behind this in the «why can’t
Composer load repositories recursively?» article.
The simplest work-around to this limitation, is moving or duplicating the repositories definition into your root
composer.json.

I have locked a dependency to a specific commit but get unexpected results.#

While Composer supports locking dependencies to a specific commit using the #commit-ref syntax, there are certain
caveats that one should take into account. The most important one is documented, but
frequently overlooked:

Note: While this is convenient at times, it should not be how you use
packages in the long term because it comes with a technical limitation. The
composer.json metadata will still be read from the branch name you specify
before the hash. Because of that in some cases it will not be a practical
workaround, and you should always try to switch to tagged releases as soon
as you can.

There is no simple work-around to this limitation. It is therefore strongly recommended that you do not use it.

Need to override a package version#

Let’s say your project depends on package A, which in turn depends on a specific
version of package B (say 0.1). But you need a different version of said package B (say 0.11).

You can fix this by aliasing version 0.11 to 0.1:

composer.json:

{
    "require": {
        "A": "0.2",
        "B": "0.11 as 0.1"
    }
}

See aliases for more information.

Figuring out where a config value came from#

Use php composer.phar config --list --source to see where each config value originated from.

Memory limit errors#

The first thing to do is to make sure you are running Composer 2, and if possible 2.2.0 or above.

Composer 1 used much more memory and upgrading to the latest version will give you much better and faster results.

Composer may sometimes fail on some commands with this message:

PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>

In this case, the PHP memory_limit should be increased.

Note: Composer internally increases the memory_limit to 1.5G.

To get the current memory_limit value, run:

php -r "echo ini_get('memory_limit').PHP_EOL;"

Try increasing the limit in your php.ini file (ex. /etc/php5/cli/php.ini for
Debian-like systems):

; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1

Composer also respects a memory limit defined by the COMPOSER_MEMORY_LIMIT environment variable:

COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>

Or, you can increase the limit with a command-line argument:

php -d memory_limit=-1 composer.phar <...>

This issue can also happen on cPanel instances, when the shell fork bomb protection is activated. For more information, see the documentation of the fork bomb feature on the cPanel site.

Xdebug impact on Composer#

To improve performance when the Xdebug extension is enabled, Composer automatically restarts PHP without it.
You can override this behavior by using an environment variable: COMPOSER_ALLOW_XDEBUG=1.

Composer will always show a warning if Xdebug is being used, but you can override this with an environment variable:
COMPOSER_DISABLE_XDEBUG_WARN=1. If you see this warning unexpectedly, then the restart process has failed:
please report this issue.

«The system cannot find the path specified» (Windows)#

  1. Open regedit.
  2. Search for an AutoRun key inside HKEY_LOCAL_MACHINESoftwareMicrosoftCommand Processor,
    HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
    or HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftCommand Processor.
  3. Check if it contains any path to a non-existent file, if it’s the case, remove them.

API rate limit and OAuth tokens#

Because of GitHub’s rate limits on their API it can happen that Composer prompts
for authentication asking your username and password so it can go ahead with its work.

If you would prefer not to provide your GitHub credentials to Composer you can
manually create a token using the procedure documented here.

Now Composer should install/update without asking for authentication.

proc_open(): fork failed errors#

If Composer shows proc_open() fork failed on some commands:

PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar

This could be happening because the VPS runs out of memory and has no Swap space enabled.

free -m
total used free shared buffers cached
Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0

To enable the swap you can use for example:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/bin/chmod 0600 /var/swap.1
/sbin/swapon /var/swap.1

You can make a permanent swap file following this tutorial.

proc_open(): failed to open stream errors (Windows)#

If Composer shows proc_open(NUL) errors on Windows:

proc_open(NUL): failed to open stream: No such file or directory

This could be happening because you are working in a OneDrive directory and
using a version of PHP that does not support the file system semantics of this
service. The issue was fixed in PHP 7.2.23 and 7.3.10.

Alternatively it could be because the Windows Null Service is not enabled. For
more information, see this issue.

Degraded Mode#

Due to some intermittent issues on Travis and other systems, we introduced a
degraded network mode which helps Composer finish successfully but disables
a few optimizations. This is enabled automatically when an issue is first
detected. If you see this issue sporadically you probably don’t have to worry
(a slow or overloaded network can also cause those time outs), but if it
appears repeatedly you might want to look at the options below to identify
and resolve it.

If you have been pointed to this page, you want to check a few things:

  • If you are using ESET antivirus, go in «Advanced Settings» and disable «HTTP-scanner»
    under «web access protection»
  • If you are using IPv6, try disabling it. If that solves your issues, get in touch
    with your ISP or server host, the problem is not at the Packagist level but in the
    routing rules between you and Packagist (i.e. the internet at large). The best way to get
    these fixed is to raise awareness to the network engineers that have the power to fix it.
    Take a look at the next section for IPv6 workarounds.
  • If none of the above helped, please report the error.

Operation timed out (IPv6 issues)#

You may run into errors if IPv6 is not configured correctly. A common error is:

The "https://getcomposer.org/version" file could not be downloaded: failed to
open stream: Operation timed out

We recommend you fix your IPv6 setup. If that is not possible, you can try the
following workarounds:

Workaround Linux:

On linux, it seems that running this command helps to make ipv4 traffic have a
higher priority than ipv6, which is a better alternative than disabling ipv6 entirely:

sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"

Workaround Windows:

On windows the only way is to disable ipv6 entirely I am afraid (either in windows or in your home router).

Workaround Mac OS X:

Get name of your network device:

networksetup -listallnetworkservices

Disable IPv6 on that device (in this case «Wi-Fi»):

networksetup -setv6off Wi-Fi

Run Composer …

You can enable IPv6 again with:

networksetup -setv6automatic Wi-Fi

That said, if this fixes your problem, please talk to your ISP about it to
try to resolve the routing errors. That’s the best way to get things resolved
for everyone.

Composer hangs with SSH ControlMaster#

When you try to install packages from a Git repository and you use the ControlMaster
setting for your SSH connection, Composer might hang endlessly and you see a sh
process in the defunct state in your process list.

The reason for this is a SSH Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1988

As a workaround, open a SSH connection to your Git host before running Composer:

ssh -t git@mygitserver.tld
php composer.phar update

See also https://github.com/composer/composer/issues/4180 for more information.

Zip archives are not unpacked correctly.#

Composer can unpack zipballs using either a system-provided unzip or 7z (7-Zip) utility, or PHP’s
native ZipArchive class. On OSes where ZIP files can contain permissions and symlinks, we recommend
installing unzip or 7z as these features are not supported by ZipArchive.

Disabling the pool optimizer#

In Composer, the Pool class contains all the packages that are relevant for the dependency
resolving process. That is what is used to generate all the rules which are then
passed on to the dependency solver.
In order to improve performance, Composer tries to optimize this Pool by removing useless
package information early on.

If all goes well, you should never notice any issues with it but in case you run into
an unexpected result such as an unresolvable set of dependencies or conflicts where you
think Composer is wrong, you might want to disable the optimizer by using the environment
variable COMPOSER_POOL_OPTIMIZER and run the update again like so:

COMPOSER_POOL_OPTIMIZER=0 php composer.phar update

Now double check if the result is still the same. It will take significantly longer and use
a lot more memory to run the dependency resolving process.

If the result is different, you likely hit a problem in the pool optimizer.
Please report this issue so it can be fixed.

Found a typo? Something is wrong in this documentation?
Fork and edit it!

compiler version : TI v15.12.1.LTS

Family : ARM

Varient : Tiva TM4C123GH6PM

When try to build c++ class in main.c It is giving below error

**** Build of configuration Debug__TI for project Lab1 ****

"C:\ti\ccsv6\utils\bin\gmake" -k all 
'Building file: ../Generic.cpp'
'Invoking: ARM Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/include" -g --gcc --define=ccs="ccs" --define=PART_TM4C123GH6PM --diag_wrap=off --diag_warning=225 --display_error_number --abi=eabi --preproc_with_compile --preproc_dependency="Generic.d"  "../Generic.cpp"
'Finished building: ../Generic.cpp'
' '
'Building file: ../main.c'
'Invoking: ARM Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/include" -g --gcc --define=ccs="ccs" --define=PART_TM4C123GH6PM --diag_wrap=off --diag_warning=225 --display_error_number --abi=eabi --preproc_with_compile --preproc_dependency="main.d"  "../main.c"

>> Compilation failure
subdir_rules.mk:14: recipe for target 'main.obj' failed
"..Generic.h", line 11: error #20: identifier "class" is undefined
"..Generic.h", line 11: error #66: expected a ";"
"..Generic.h", line 15: warning #12-D: parsing restarts here after previous syntax error
"../main.c", line 6: error #20: identifier "generic" is undefined
3 errors detected in the compilation of "../main.c".
gmake: *** [main.obj] Error 1
'Building file: ../tm4c123gh6pm_startup_ccs.c'
'Invoking: ARM Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/include" -g --gcc --define=ccs="ccs" --define=PART_TM4C123GH6PM --diag_wrap=off --diag_warning=225 --display_error_number --abi=eabi --preproc_with_compile --preproc_dependency="tm4c123gh6pm_startup_ccs.d"  "../tm4c123gh6pm_startup_ccs.c"
'Finished building: ../tm4c123gh6pm_startup_ccs.c'
' '
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

class details are :

main.c

#include "Generic.h"

int main(void) {

    Generic *generic;
    return 0;
}

Generic.cpp

#include "Generic.h"

Generic::Generic() {
    // TODO Auto-generated constructor stub

}

Generic::~Generic() {
    // TODO Auto-generated destructor stub
}

Generic.h

#ifndef GENERIC_H_
#define GENERIC_H_

class Generic {
public:
    Generic();
    virtual ~Generic();
};

#endif /* GENERIC_H_ */

I am not sure whether we need to make main.c to main.cpp. If that is so then which make file need to updated for main.cpp

Any help on c++ compilation for ARM

Во время установки Code Composer Studio версии 3.3 возникают две ошибки:

  • Error 1920. Service ‘drpkiont’ (drpkiont) failed to start. Verify that you have sufficient privilege to start system services.

  • Error 1920. Service ‘XDSFast1_ISA_Bus_Driver’ (xdsfast1) failed to start. Verify that you have sufficient privilege to start system services.

Вот что написано в официальном FAQ:

If the errors you see are:
Error 1920: Service «drpkiant» (drpkiant) failed to start. Verify that you have sufficient privileges to start system service.
Error 1920: Service “XDSFast1_ISA_Bus_Drivers” (xdsfast1) failed to start. Verify that you have sufficient privileges to start system service.
Just ignore the service errors then install CCSv3.3.

То есть следует проигнорировать эти ошибки, нажав на кнопку «Ignore» для каждой ошибки.

Несколько заметок

Совет в http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3138.aspx:

I think the ‘DRPKIONT’ issue has something to do with XDS560 windows drivers not installing properly. If you are not using the TI XDS560 emulator, you can try a custom install and not install the drivers for it. That may help.

НЕ помогает. Более того, даже если не устанавливать компонент «Host PCI Drivers» это никак не поможет.

Есть также совет http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/85072/319084.aspx#319084:

I found a way to install CCStudio 3.3 in windows 7 64 bits.

  • First, I installed CCStudio 4.2.
  • Second, I desinstalled CCStudio 4.2, but, for some reason, a configuration remains that allows the other installation
  • Third, I Installed CCStudio 3.3 (Installation reported some errors, but I can compile and download to the board)
  • Finally, Run software as administrator

I can use the software normally.

Сводится к тому, что 1) установить CCS 4.2; 2) удалить CSS 4.2; 3) установить CSS 3.3. Но я его не проверял.

Работаю на framework’е Laravel 5. Добавляю пакет например "laravelcollective/html": "5.1.*" в composer.json, потом делаю composer install. А composer вводит мне:

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Nothing to install or update
Generating autoload files
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader

То есть ничего не устанавливает! Попробовал composer self-update не помогло. Потом composer update, добавил пакет в composer.json, потом еще раз попробовал composer install, никаких изменений все еще та же ошибка/информация вводится.

Раньше такого не было. Как исправить ситуацию?!

P.S. Пока что устанавливаю пакеты через composer requier <some_package_name> в terminal’е.

UPD:
Не которые предлагают выполнить команды composer update и composer requier, ни видно что они не очень поняли что я уже это делал. То есть:

  • Создал проект через laravel new <project_name>
  • Добавил в composer.json пакет "laravelcollective/html": "5.1.*"
  • Выполнил команду composer install, выводил то что я уже написал выше!
  • Потом удалил пакет из composer.json и выполнил composer update
  • Все прошло успешно
  • Потом опять добавил пакет в composer.json и выполнил composer install
  • Все те же сообщении
  • Потом опять удалил пакет из composer.json
  • Добавил пакет через composer requier, все прошло успешно
  • Потом другой пакет добавил в composer.json (barryvdh/laravel-debugbar), и выполнил команду composer install
  • Все те же сообщении…

hi ,

I am trying to interface an  msp430f169 with a miniSD and i have this errors:

#10010 errors encountered during linking; » project  » not built

#10234-D unresolved symbols remain 

unresolved symbol main, first referenced in C:ticcsv6toolscompilermsp430_4.3.1librts430_eabi.lib<boot.obj>

 i used this code:

// ***********************************************************




#include "msp430x16x.h"






// SPI port definitions              // Adjust the values for the chosen
#define MMC_PxSEL         P5SEL      // interfaces, according to the pin
#define MMC_PxDIR         P5DIR      // assignments indicated in the
#define MMC_PxIN          P5IN       // chosen MSP430 device datasheet.
#define MMC_PxOUT         P5OUT
#define MMC_SIMO          0x02
#define MMC_SOMI          0x04
#define MMC_UCLK          0x08
#define SPI_SER_INTF      SER_INTF_USCIB0  // Interface to MMC
// Chip Select
#define MMC_CS_PxOUT      P5OUT
#define MMC_CS_PxDIR      P5DIR
#define MMC_CS            0x01
#define halSPITXDONE  (U0TCTL&TXEPT)
// Card Detect
#define MMC_CD_PxIN       P5IN
#define MMC_CD_PxDIR      P5DIR
#define MMC_CD            0x40
#define CS_LOW()    MMC_CS_PxOUT &= ~MMC_CS               // Card Select
#define CS_HIGH()   while(!halSPITXDONE); MMC_CS_PxOUT |= MMC_CS  // Card Deselect


#define DUMMY_CHAR 0xFF


// Function Prototypes
void halSPISetup (void);
unsigned char spiSendByte(const unsigned char data);
unsigned char spiReadFrame(unsigned char* pBuffer, unsigned int size);
unsigned char spiSendFrame(unsigned char* pBuffer, unsigned int size);


// macro defines
#define HIGH(a) ((a>>8)&0xFF)               // high byte from word
#define LOW(a)  (a&0xFF)                    // low byte from word


#define DUMMY 0xff


// Tokens (necessary  because at NPO/IDLE (and CS active) only 0xff is on the data/command line)
#define MMC_START_DATA_BLOCK_TOKEN          0xfe   // Data token start byte, Start Single Block Read
#define MMC_START_DATA_MULTIPLE_BLOCK_READ  0xfe   // Data token start byte, Start Multiple Block Read
#define MMC_START_DATA_BLOCK_WRITE          0xfe   // Data token start byte, Start Single Block Write
#define MMC_START_DATA_MULTIPLE_BLOCK_WRITE 0xfc   // Data token start byte, Start Multiple Block Write
#define MMC_STOP_DATA_MULTIPLE_BLOCK_WRITE  0xfd   // Data toke stop byte, Stop Multiple Block Write




// an affirmative R1 response (no errors)
#define MMC_R1_RESPONSE       0x00




// this variable will be used to track the current block length
// this allows the block length to be set only when needed
// unsigned long _BlockLength = 0;


// error/success codes
#define MMC_SUCCESS           0x00
#define MMC_BLOCK_SET_ERROR   0x01
#define MMC_RESPONSE_ERROR    0x02
#define MMC_DATA_TOKEN_ERROR  0x03
#define MMC_INIT_ERROR        0x04
#define MMC_CRC_ERROR         0x10
#define MMC_WRITE_ERROR       0x11
#define MMC_OTHER_ERROR       0x12
#define MMC_TIMEOUT_ERROR     0xFF




// commands: first bit 0 (start bit), second 1 (transmission bit); CMD-number + 0ffsett 0x40
#define MMC_GO_IDLE_STATE          0x40     //CMD0
#define MMC_SEND_OP_COND           0x41     //CMD1
#define MMC_READ_CSD               0x49     //CMD9
#define MMC_SEND_CID               0x4a     //CMD10
#define MMC_STOP_TRANSMISSION      0x4c     //CMD12
#define MMC_SEND_STATUS            0x4d     //CMD13
#define MMC_SET_BLOCKLEN           0x50     //CMD16 Set block length for next read/write
#define MMC_READ_SINGLE_BLOCK      0x51     //CMD17 Read block from memory
#define MMC_READ_MULTIPLE_BLOCK    0x52     //CMD18
#define MMC_CMD_WRITEBLOCK         0x54     //CMD20 Write block to memory
#define MMC_WRITE_BLOCK            0x58     //CMD24
#define MMC_WRITE_MULTIPLE_BLOCK   0x59     //CMD25
#define MMC_WRITE_CSD              0x5b     //CMD27 PROGRAM_CSD
#define MMC_SET_WRITE_PROT         0x5c     //CMD28
#define MMC_CLR_WRITE_PROT         0x5d     //CMD29
#define MMC_SEND_WRITE_PROT        0x5e     //CMD30
#define MMC_TAG_SECTOR_START       0x60     //CMD32
#define MMC_TAG_SECTOR_END         0x61     //CMD33
#define MMC_UNTAG_SECTOR           0x62     //CMD34
#define MMC_TAG_EREASE_GROUP_START 0x63     //CMD35
#define MMC_TAG_EREASE_GROUP_END   0x64     //CMD36
#define MMC_UNTAG_EREASE_GROUP     0x65     //CMD37
#define MMC_EREASE                 0x66     //CMD38
#define MMC_READ_OCR               0x67     //CMD39
#define MMC_CRC_ON_OFF             0x68     //CMD40














//#define withDMA




// Function Prototypes
char mmcGetResponse(void);
char mmcGetXXResponse(const char resp);
char mmcCheckBusy(void);
char mmcGoIdle();


// Varialbes
char mmc_buffer[512] = { 0 };               // Buffer for mmc i/o for data and registers


// Initialize MMC card
char  mmcInit(void)
{
  //raise CS and MOSI for 80 clock cycles
  //SendByte(0xff) 10 times with CS high
  //RAISE CS
  int i;


  // Port x Function           Dir       On/Off
  //         mmcCS         Out       0 - Active 1 - none Active
  //         Dout          Out       0 - off    1 - On -> init in SPI_Init
  //         Din           Inp       0 - off    1 - On -> init in SPI_Init
  //         Clk           Out       -                 -> init in SPI_Init
  //         mmcCD         In        0 - card inserted


  // Init Port for MMC (default high)
  MMC_PxOUT |= MMC_SIMO + MMC_UCLK;
  MMC_PxDIR |= MMC_SIMO + MMC_UCLK;




  // Chip Select
  MMC_CS_PxOUT |= MMC_CS;
  MMC_CS_PxDIR |= MMC_CS;


  // Card Detect
  MMC_CD_PxDIR &=  ~MMC_CD;


  // Init SPI Module
  halSPISetup();


  // Enable secondary function
#if SPI_SER_INTF != SER_INTF_BITBANG
  MMC_PxSEL |= MMC_SIMO + MMC_SOMI + MMC_UCLK;
#endif


  //initialization sequence on PowerUp
  CS_HIGH();
  for(i=0;i<=9;i++)
    spiSendByte(DUMMY_CHAR);


  return (mmcGoIdle());
}




// set MMC in Idle mode
char mmcGoIdle()
{
  char response=0x01;
  CS_LOW();


  //Send Command 0 to put MMC in SPI mode
  mmcSendCmd(MMC_GO_IDLE_STATE,0,0x95);
  //Now wait for READY RESPONSE
  if(mmcGetResponse()!=0x01)
    return MMC_INIT_ERROR;


  while(response==0x01)
  {
    CS_HIGH();
    spiSendByte(DUMMY_CHAR);
    CS_LOW();
    mmcSendCmd(MMC_SEND_OP_COND,0x00,0xff);
    response=mmcGetResponse();
  }
  CS_HIGH();
  spiSendByte(DUMMY_CHAR);
  return (MMC_SUCCESS);
}


// mmc Get Responce
char mmcGetResponse(void)
{
  //Response comes 1-8bytes after command
  //the first bit will be a 0
  //followed by an error code
  //data will be 0xff until response
  int i=0;


  char response;


  while(i<=64)
  {
    response=spiSendByte(DUMMY_CHAR);
    if(response==0x00)break;
    if(response==0x01)break;
    i++;
  }
  return response;
}


char mmcGetXXResponse(const char resp)
{
  //Response comes 1-8bytes after command
  //the first bit will be a 0
  //followed by an error code
  //data will be 0xff until response
  int i=0;


  char response;


  while(i<=1000)
  {
    response=spiSendByte(DUMMY_CHAR);
    if(response==resp)break;
    i++;
  }
  return response;
}


// Check if MMC card is still busy
char mmcCheckBusy(void)
{
  //Response comes 1-8bytes after command
  //the first bit will be a 0
  //followed by an error code
  //data will be 0xff until response
  int i=0;


  char response;
  char rvalue;
  while(i<=64)
  {
    response=spiSendByte(DUMMY_CHAR);
    response &= 0x1f;
    switch(response)
    {
      case 0x05: rvalue=MMC_SUCCESS;break;
      case 0x0b: return(MMC_CRC_ERROR);
      case 0x0d: return(MMC_WRITE_ERROR);
      default:
        rvalue = MMC_OTHER_ERROR;
        break;
    }
    if(rvalue==MMC_SUCCESS)break;
    i++;
  }
  i=0;
  do
  {
    response=spiSendByte(DUMMY_CHAR);
    i++;
  }while(response==0);
  return response;
}
// The card will respond with a standard response token followed by a data
// block suffixed with a 16 bit CRC.


// read a size Byte big block beginning at the address.
char mmcReadBlock(const unsigned long address, const unsigned long count, unsigned char *pBuffer)
{
  char rvalue = MMC_RESPONSE_ERROR;


  // Set the block length to read
  if (mmcSetBlockLength (count) == MMC_SUCCESS)   // block length could be set
  {
    // CS = LOW (on)
    CS_LOW ();
    // send read command MMC_READ_SINGLE_BLOCK=CMD17
    mmcSendCmd (MMC_READ_SINGLE_BLOCK,address, 0xFF);
    // Send 8 Clock pulses of delay, check if the MMC acknowledged the read block command
    // it will do this by sending an affirmative response
    // in the R1 format (0x00 is no errors)
    if (mmcGetResponse() == 0x00)
    {
      // now look for the data token to signify the start of
      // the data
      if (mmcGetXXResponse(MMC_START_DATA_BLOCK_TOKEN) == MMC_START_DATA_BLOCK_TOKEN)
      {
        // clock the actual data transfer and receive the bytes; spi_read automatically finds the Data Block
        spiReadFrame(pBuffer, count);
        // get CRC bytes (not really needed by us, but required by MMC)
        spiSendByte(DUMMY_CHAR);
        spiSendByte(DUMMY_CHAR);
        rvalue = MMC_SUCCESS;
      }
      else
      {
        // the data token was never received
        rvalue = MMC_DATA_TOKEN_ERROR;      // 3
      }
    }
    else
    {
      // the MMC never acknowledge the read command
      rvalue = MMC_RESPONSE_ERROR;          // 2
    }
  }
  else
  {
    rvalue = MMC_BLOCK_SET_ERROR;           // 1
  }
  CS_HIGH ();
  spiSendByte(DUMMY_CHAR);
  return rvalue;
}// mmc_read_block






//char mmcWriteBlock (const unsigned long address)
char mmcWriteBlock (const unsigned long address, const unsigned long count, unsigned char *pBuffer)
{
  char rvalue = MMC_RESPONSE_ERROR;         // MMC_SUCCESS;
  //  char c = 0x00;


  // Set the block length to read
  if (mmcSetBlockLength (count) == MMC_SUCCESS)   // block length could be set
  {
    // CS = LOW (on)
    CS_LOW ();
    // send write command
    mmcSendCmd (MMC_WRITE_BLOCK,address, 0xFF);


    // check if the MMC acknowledged the write block command
    // it will do this by sending an affirmative response
    // in the R1 format (0x00 is no errors)
    if (mmcGetXXResponse(MMC_R1_RESPONSE) == MMC_R1_RESPONSE)
    {
      spiSendByte(DUMMY_CHAR);
      // send the data token to signify the start of the data
      spiSendByte(0xfe);
      // clock the actual data transfer and transmitt the bytes


      spiSendFrame(pBuffer, count);


      // put CRC bytes (not really needed by us, but required by MMC)
      spiSendByte(DUMMY_CHAR);
      spiSendByte(DUMMY_CHAR);
      // read the data response xxx0<status>1 : status 010: Data accected, status 101: Data
      //   rejected due to a crc error, status 110: Data rejected due to a Write error.
      mmcCheckBusy();
      rvalue = MMC_SUCCESS;
    }
    else
    {
      // the MMC never acknowledge the write command
      rvalue = MMC_RESPONSE_ERROR;   // 2
    }
  }
  else
  {
    rvalue = MMC_BLOCK_SET_ERROR;   // 1
  }
  // give the MMC the required clocks to finish up what ever it needs to do
  //  for (i = 0; i < 9; ++i)
  //    spiSendByte(0xff);


  CS_HIGH ();
  // Send 8 Clock pulses of delay.
  spiSendByte(DUMMY_CHAR);
  return rvalue;
} // mmc_write_block




// send command to MMC
void mmcSendCmd (const char cmd, unsigned long data, const char crc)
{
  unsigned char frame[6];
  char temp;
  int i;
  frame[0]=(cmd|0x40);
  for(i=3;i>=0;i--){
    temp=(char)(data>>(8*i));
    frame[4-i]=(temp);
  }
  frame[5]=(crc);
  spiSendFrame(frame,6);
}




//--------------- set blocklength 2^n ------------------------------------------------------
char mmcSetBlockLength (const unsigned long blocklength)
{
  // CS = LOW (on)
  CS_LOW ();
  // Set the block length to read
  mmcSendCmd(MMC_SET_BLOCKLEN, blocklength, 0xFF);


  // get response from MMC - make sure that its 0x00 (R1 ok response format)
  if(mmcGetResponse()!=0x00)
  { mmcInit();
    mmcSendCmd(MMC_SET_BLOCKLEN, blocklength, 0xFF);
    mmcGetResponse();
  }


  CS_HIGH ();


  // Send 8 Clock pulses of delay.
  spiSendByte(DUMMY_CHAR);


  return MMC_SUCCESS;
} // Set block_length




// Reading the contents of the CSD and CID registers in SPI mode is a simple
// read-block transaction.
char mmcReadRegister (const char cmd_register, const unsigned char length, unsigned char *pBuffer)
{
  char uc = 0;
  char rvalue = MMC_TIMEOUT_ERROR;


  if (mmcSetBlockLength (length) == MMC_SUCCESS)
  {
    CS_LOW ();
    // CRC not used: 0xff as last byte
    mmcSendCmd(cmd_register, 0x000000, 0xff);


    // wait for response
    // in the R1 format (0x00 is no errors)
    if (mmcGetResponse() == 0x00)
    {
      if (mmcGetXXResponse(0xfe)== 0xfe)
        for (uc = 0; uc < length; uc++)
          pBuffer[uc] = spiSendByte(DUMMY_CHAR);  //mmc_buffer[uc] = spiSendByte(0xff);
      // get CRC bytes (not really needed by us, but required by MMC)
      spiSendByte(DUMMY_CHAR);
      spiSendByte(DUMMY_CHAR);
      rvalue = MMC_SUCCESS;
    }
    else
      rvalue = MMC_RESPONSE_ERROR;
    // CS = HIGH (off)
    CS_HIGH ();


    // Send 8 Clock pulses of delay.
    spiSendByte(DUMMY_CHAR);
  }
  CS_HIGH ();
  return rvalue;
} // mmc_read_register


#include "math.h"


unsigned long mmcReadCardSize(void)
{
  // Read contents of Card Specific Data (CSD)


  unsigned long MMC_CardSize;
  unsigned short i,      // index
                 j,      // index
                 b,      // temporary variable
                 response,   // MMC response to command
                 mmc_C_SIZE;


  unsigned char mmc_READ_BL_LEN,  // Read block length
                mmc_C_SIZE_MULT;


  CS_LOW ();


  spiSendByte(MMC_READ_CSD);   // CMD 9
  for(i=4; i>0; i--)      // Send four dummy bytes
    spiSendByte(0);
  spiSendByte(DUMMY_CHAR);   // Send CRC byte


  response = mmcGetResponse();


  // data transmission always starts with 0xFE
  b = spiSendByte(DUMMY_CHAR);


  if( !response )
  {
    while (b != 0xFE) b = spiSendByte(DUMMY_CHAR);
    // bits 127:87
    for(j=5; j>0; j--)          // Host must keep the clock running for at
      b = spiSendByte(DUMMY_CHAR);


    // 4 bits of READ_BL_LEN
    // bits 84:80
    b =spiSendByte(DUMMY_CHAR);  // lower 4 bits of CCC and
    mmc_READ_BL_LEN = b & 0x0F;
    b = spiSendByte(DUMMY_CHAR);
    // bits 73:62  C_Size
    // xxCC CCCC CCCC CC
    mmc_C_SIZE = (b & 0x03) << 10;
    b = spiSendByte(DUMMY_CHAR);
    mmc_C_SIZE += b << 2;
    b = spiSendByte(DUMMY_CHAR);
    mmc_C_SIZE += b >> 6;
    // bits 55:53
    b = spiSendByte(DUMMY_CHAR);
    // bits 49:47
    mmc_C_SIZE_MULT = (b & 0x03) << 1;
    b = spiSendByte(DUMMY_CHAR);
    mmc_C_SIZE_MULT += b >> 7;
    // bits 41:37
    b = spiSendByte(DUMMY_CHAR);
    b = spiSendByte(DUMMY_CHAR);
    b = spiSendByte(DUMMY_CHAR);
    b = spiSendByte(DUMMY_CHAR);
    b = spiSendByte(DUMMY_CHAR);
  }


  for(j=4; j>0; j--)          // Host must keep the clock running for at
    b = spiSendByte(DUMMY_CHAR);  // least Ncr (max = 4 bytes) cycles after
                               // the card response is received
  b = spiSendByte(DUMMY_CHAR);
  CS_LOW ();


  MMC_CardSize = (mmc_C_SIZE + 1);
  // power function with base 2 is better with a loop
  // i = (pow(2,mmc_C_SIZE_MULT+2)+0.5);
  for(i = 2,j=mmc_C_SIZE_MULT+2; j>1; j--)
    i <<= 1;
  MMC_CardSize *= i;
  // power function with base 2 is better with a loop
  //i = (pow(2,mmc_READ_BL_LEN)+0.5);
  for(i = 2,j=mmc_READ_BL_LEN; j>1; j--)
    i <<= 1;
  MMC_CardSize *= i;


  return (MMC_CardSize);


}




char mmcPing(void)
{
  if (!(MMC_CD_PxIN & MMC_CD))
    return (MMC_SUCCESS);
  else
    return (MMC_INIT_ERROR);
}
#ifdef withDMA
#ifdef __IAR_SYSTEMS_ICC__
#pragma vector = DACDMA_VECTOR
__interrupt void DMA_isr(void)
#endif


#ifdef __TI_COMPILER_VERSION__
__interrupt void DMA_isr(void);
DMA_ISR(DMA_isr)
__interrupt void DMA_isr(void)
#endif
{
  DMA0CTL &= ~(DMAIFG);
  LPM3_EXIT;
}
#endif








//---------------------------------------------------------------------

i don’t what it mean ?have you solution for this problem??

  1. Общее
  2. Пакет не найден
  3. Пакет не найден на travis-ci.org
  4. Пакет, не найденный в Jenkins-build
  5. У меня есть зависимость, которая содержит определение «репозитории» в своем composer.json, но, похоже, это игнорируется.
  6. Я заблокировал зависимость от конкретной фиксации, но получил неожиданные результаты.
  7. Необходимо переопределить версию пакета
  8. Ошибки памяти
  9. Влияние Xdebug на Composer
  10. «Система не может найти указанный путь» (Windows)
  11. Ограничение скорости API и токены OAuth
  12. proc_open (): ошибки форка
  13. Режим деградации
  14. Тайм-аут операции (проблемы IPv6)
  15. Композитор зависает с SSH ControlMaster
  16. Zip-архивы не распаковываются должным образом.

Это список распространенных ошибок при использовании Composer и как их избежать.

Общее #

  1. Прежде чем спрашивать кого-либо, запустите composer diagnose для проверки общих проблем. Если все прошло успешно, переходите к следующим шагам.
  2. При работе с любыми проблемами с помощью Composer обязательно работайте с последней версией. Подробнее см. Самообновление.
  3. Убедитесь, что у вас нет проблем с настройкой, выполнив проверки установщика с помощью curl -sS https://getcomposer.org/installer | php -- --check.
  4. Убедитесь, что вы устанавливаете vendor’ы прямо из вашего composer.json через rm -rf vendor && composer update -v при устранении неполадок, исключая любые возможные помехи существующим установкам поставщиков или записи composer.lock.
  5. Попробуйте очистить кэш Composer, запустив composer clear-cache.

Пакет не найден #

  1. Дважды проверьте, что у вас нет опечаток в ваших папках composer.json или репозиториях и именах тегов.
  2. Обязательно установите правильный minimum-stability. Чтобы начать работу или убедиться, что это не проблема, установите minimum-stability в «dev».
  3. Пакеты, не входящие в Packagist, всегда должны быть определены в корневом пакете (пакет зависит от всех поставщиков).
  4. Используйте один и тот же vendor и имя пакета во всех филиалах и тэгах вашего репозитория, особенно при поддержке сторонней вилки и использовании replace.
  5. Если вы обновляете недавно опубликованную версию пакета, помните, что у Packagist есть задержка до 1 минуты, прежде чем новые компонеты будут видны Composer.
  6. Если вы обновляете один пакет, это может зависеть от более новых версий. В этом случае добавьте аргумент --with-dependencies или добавьте все зависимости, которым необходимо обновить команду.

Пакет не найден на travis-ci.org #

  1. Проверьте элемент «Пакет не найден» выше.
  2. Если тестируемый пакет является зависимостью одной из его зависимостей (циклической зависимости), проблема может заключаться в том, что Composer не может правильно определить версию пакета. Если это git-клон, он, как правило, в порядке, и Composer определит версию текущей ветви, но travis делает мелкие клоны, так что процесс может потерпеть неудачу при тестировании запросов на отрыв и ветвей функций в целом. Лучшим решением является определение версии, с которой вы работаете, через переменную среды COMPOSER_ROOT_VERSION. Например, вы устанавливаете его в dev-master, чтобы определить версию корневого пакета как dev-master. Использование: before_script: COMPOSER_ROOT_VERSION=dev-master composer install для экспорта переменной для вызова композитора.

Пакет, не найденный в Jenkins-build #

  1. Проверьте элемент «Пакет не найден» выше.
  2. Причина сбоя похожа на проблему, которая может возникнуть на travis-ci.org: git-clone / checkout внутри Jenkins оставляет ветку в состоянии «отдельная HEAD». В результате, Composer не может определить версию текущей выделенной ветви и может не решить циклическую зависимость. Чтобы решить эту проблему, вы можете использовать «Дополнительные поведения» -> «Отъезд в конкретную локальную ветвь» в ваших настройках Git для вашего Jenkins-job, где ваш «локальный филиал» должен быть той же веткой, с которой вы проверяете . Используя это, проверка больше не будет находиться в состоянии отсоединения, и циклическая зависимость распознается правильно.

У меня есть зависимость, которая содержит определение «репозитории» в своем composer.json, но, похоже, это игнорируется. #

Свойство конфигурации repositories определяется как [root-only] (../04-schema.md#root-package). Он не наследуется. Вы можете больше узнать о причинах этого в статье «Почему репозиторий загрузок не может быть реконструирован composer’ом?». Самое простое решение этого ограничения — перемещение или дублирование определения repositories в ваш корневой composer.json.

Я заблокировал зависимость от конкретной фиксации, но получил неожиданные результаты. #

Хотя Composer поддерживает блокировку зависимостей для конкретного коммита с использованием синтаксиса #commit-ref, есть определенные предостережения, которые следует учитывать. Наиболее важный из них документирован, но часто упускается из виду:

Примечание. Хотя иногда это удобно, не следует использовать пакеты в долгосрочной перспективе, потому что это связано с техническим ограничением. Метаданные composer.json будут по-прежнему считываться из имени ветви, указанной вами до хеша. Из-за этого в некоторых случаях это не будет практическим решением, и вы всегда должны попытаться переключиться на отмеченные выпуски, как только сможете.

Для этого ограничения просто не обойтись. Поэтому настоятельно рекомендуется не использовать его.

Необходимо переопределить версию пакета #

Допустим, ваш проект зависит от пакета A, который, в свою очередь, зависит от конкретной версии пакета B (скажем, 0,1). Но вам нужна другая версия упомянутого пакета B (скажем, 0.11).

Вы можете исправить это путем псевдонимов версии 0.11 до 0.1:

Composer.json:

{
 "require": {
 "A": "0.2",
 "B": "0.11 as 0.1"
 }
}

См. Псевдонимы для получения дополнительной информации.

Ошибки ограничения памяти #

Иногда композитор может сбой в некоторых командах с этим сообщением:

PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>

В этом случае PHP memory_limit должен быть увеличен.

Примечание. Композитор внутренне увеличивает memory_limit до 1.5G.

Чтобы получить текущее значение memory_limit, запустите:

php -r "echo ini_get('memory_limit').PHP_EOL;"

Попробуйте увеличить лимит в вашем файле php.ini (например, /etc/php5/cli/php.ini для Debian-подобных систем):

; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1

Или вы можете увеличить лимит с помощью аргумента командной строки:

php -d memory_limit=-1 composer.phar <...>

Эта проблема также может возникнуть в экземплярах cPanel, когда активирована защита корпуса от ракеты-носителя. Для получения дополнительной информации см. Документацию о функции fork bomb на сайте cPanel.

Влияние Xdebug на Composer #

Для повышения производительности при включенном расширении xdebug Composer автоматически перезапускает PHP без него. Вы можете переопределить это поведение, используя переменную среды: COMPOSER_ALLOW_XDEBUG=1.

Composer всегда будет показывать предупреждение, если используется xdebug, но вы можете переопределить его с помощью переменной окружения: COMPOSER_DISABLE_XDEBUG_WARN=1. Если вы видите это предупреждение неожиданно, значит, процесс перезагрузки не выполнен: сообщите об этой проблеме.

«Система не может найти указанный путь» («The system cannot find the path specified») (Windows) #

  1. Открыть regedit.
  2. Найдите ключ автозапуска внутри HKEY_LOCAL_MACHINESoftwareMicrosoftCommand Processor, HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor или HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftCommand Processor.
  3. Проверьте, содержит ли он какой-либо путь к несуществующему файлу, если это так, просто удалите их.

Ограничение скорости API и токены OAuth #

Из-за ограничений скорости GitHub в их API может случиться, что Composer предложит вам аутентификацию с запросом вашего имени пользователя и пароля, чтобы он мог продолжить работу.

Если вы не хотите предоставлять свои учетные данные GitHub для Composer, вы можете вручную создать токен, используя следующую процедуру:

  1. Создайте токен OAuth в GitHub. Узнайте больше об этом.
  2. Добавьте его в конфигурацию, которая запущена composer config -g github-oauth.github.com

Теперь Composer должен установить / обновить без запроса аутентификации.

proc_open (): fork failed errors #

Если компилятор показывает, что функция proc_open () fork вышла из строя по некоторым командам:

PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar

Это может происходить из-за нехватки памяти в VPS и отсутствия свободного пространства подкачки.

free -m

total used free shared buffers cached
Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0

Чтобы включить обмен, вы можете использовать, например:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

Вы можете создать постоянный файл подкачки после этого руководства.

Деградированный режим #

Из-за некоторых неустойчивых проблем в Travis и других системах мы ввели деградированный сетевой режим, который помогает Composer успешно завершиться, но отключает несколько оптимизаций. Это автоматически включается при обнаружении проблемы. Если вы видите эту проблему спорадически, вам, вероятно, не нужно беспокоиться (медленная или перегруженная сеть также может вызывать те тайм-ауты), но если она появляется неоднократно, вы можете посмотреть на варианты ниже, чтобы определить и решить проблему.

Если вы были указаны на этой странице, вы хотите проверить несколько вещей:

  • Если вы используете антивирус ESET, перейдите в «Дополнительные настройки» и отключите «HTTP-сканер» в разделе «Защита веб-доступа»
  • Если вы используете IPv6, попробуйте отключить его. Если это решит ваши проблемы, свяжитесь со своим провайдером или сервером, проблема не в уровне Packagist, а в правилах маршрутизации между вами и Packagist (то есть интернетом в целом). Лучший способ получить эти исправления — повысить осведомленность сетевых инженеров, которые могут исправить это. Взгляните на следующий раздел обходных решений IPv6.
  • Если ничего из перечисленного не помогло, сообщите об ошибке.

Тайм-аут операции (проблемы IPv6) #

Вы можете столкнуться с ошибками, если IPv6 настроен неправильно. Общая ошибка:

The "https://getcomposer.org/version" file could not be downloaded: failed to
open stream: Operation timed out

Мы рекомендуем исправить настройку вашего IPv6. Если это невозможно, вы можете попробовать следующие обходные пути:

Обходной путь Linux:

На linux кажется, что запуск этой команды помогает сделать ipv4-трафик более высоким, чем у ipv6, что является лучшей альтернативой, чем полное отключение ipv6:

sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"

Обходные Windows:

На окнах единственный способ — полностью отключить ipv6, боюсь (в окнах или в вашем домашнем маршрутизаторе).

Обходной путь Mac OS X:

Получить имя своего сетевого устройства:

networksetup -listallnetworkservices

Отключить IPv6 на этом устройстве (в данном случае «Wi-Fi»):

networksetup -setv6off Wi-Fi

Запустить композитор …

Вы можете снова включить IPv6:

networksetup -setv6automatic Wi-Fi

Тем не менее, если это устраняет вашу проблему, обратитесь к своему провайдеру Интернета, чтобы попытаться устранить ошибки маршрутизации. Это лучший способ добиться успеха для всех.

Композитор зависает с SSH ControlMaster #

Когда вы пытаетесь установить пакеты из репозитория Git и используете параметр ControlMaster для вашего SSH-соединения, Composer может просто зависнуть бесконечно, и вы увидите sh процесс в defunct состоянии в вашем списке процессов.

Причиной этого является ошибка SSH: https://bugzilla.mindrot.org/show_bug.cgi?id=1988.

В качестве обходного пути откройте SSH-соединение с вашим узлом Git перед запуском Composer:

ssh -t git@mygitserver.tld
composer update

См. Также https://github.com/composer/composer/issues/4180 для получения дополнительной информации.

Zip-архивы не распакованы правильно. #

Composer может распаковать zipballs, используя либо системную утилиту unzip, либо собственный класс ZipArchive PHP. Класс ZipArchive является предпочтительным для Windows. В других операционных системах, где ZIP-файлы могут содержать разрешения и символические ссылки, предпочтительнее использовать утилиту unzip. Рекомендуется установить его, если вам нужны эти функции.

4.9.2

If the attempt to execute Code Composer Studio for the first time results in one

of the following error messages:

Can’t Initialize Target DSP. Trouble with JTAG controller,

check your Cabling and your Multiprocessing Configuration

Can’t Initialize Target DSP. I/O port – <address>

There are several troubleshooting areas to consider when encountering this

error. These are listed below from most likely to least likely to have invoked this

error message.

1) Make sure that the device driver loaded onto the XDS510WS matches the

actual target.

2) Check the Code Composer Studio Setup Configuration. To do that, launch

Code Composer Studio Setup, right-click on the board name in the left

pane, and select Properties from the context menu.

a) Select the Board Name tab of the Board Properties dialog, and check

that the board data match the actual target.

b) Select the Board Properties tab of the Board Properties dialog, and

make sure that the I/O port address set for the target board matches

the actual SCSI address of the XDS510WS.

c) If you are using a multi-processor board or multiple boards, select the

Processor Configuration tab of the Board Properties dialog, and

check that the type and order of processors matches that on the actual

target.

Please refer to the Code Composer Studio Setup online help for details on

correctly configuring your Code Composer Studio Multiprocessing Sys-

tem.

3) Check the DSP Target Setup.

a) Make sure your DSP is not in a Hold or a Reset state and is correctly

powered up.

b) Check that the target processor pin is not active. The target processor

must be ready for the debugger to execute. If there is a hardware prob-

lem on the ready line, if possible, put the processor into Microcomput-

er mode, reset the system, and try bringing up the debugger again. In

Microcomputer mode, all memory accesses should be on-chip and

the ready signal should have no effect. Check your device user’s

guide for details.

c) Check that the processor hold pin is not active. Same issue as the tar-

get process pin being active.

Installing the XDS510WS on a SPARCstation

Troubleshooting the XDS510WS

4-19

Why Composer? #

Like any modern PHP application, Craft CMS manages dependencies with Composer. (If you’ve used npm, it’s a similar idea for PHP.)

If you’re new to package managers in general, Composer may first seem like a cumbersome and frustrating tool because of its tendency to get stuck on incompatibilities and errors. This is actually Composer’s primary benefit; it exposes software conflicts before updates are applied, rescuing clients, customers, and visitors from errors that never had a chance to happen in production.

What Composer Does #

Composer looks for a valid composer.json file that describes the PHP packages you intend to use in your project—that’s what the all-important require section is for, while require-dev describes a subset of items meant strictly for development and testing rather than production use.

These packages will be installed in your project’s vendor/ directory, and you’ll see more items there than you specified in your composer.json file because each of your required packages may also require dependencies of its own. Managing all these packages and requirements safely is exactly the problem Composer is designed to solve.

When you run composer update, composer traverses the complex web of dependencies to update packages according to your constraints and those of every other dependency in the tree. If there are no conflicts, the relevant files in vendor/ are updated and composer.lock is written to record precisely what was downloaded and at what version.

Run composer show --tree to inspect the entire dependency map.

You can commit composer.lock and run composer install in production to pull down those already-safe updated dependencies in far less time than composer update would require. (More on that in Deployment Best Practices.)

While you don’t need to be a Composer expert to work with it, it’s important to understand how the subtle differences in version constraints can be important, as well as the implications for a project’s minimum-stability designation.

Update vs. Install #

Generally speaking, it’s best to run composer update in development where you can test and confirm that your updated packages behave as expected, committing composer.lock once you’re confident that set of packages is ready for other environments.

Unless there were errors running composer update, it will then be safe to pull that new composer.lock file into another environment and run composer install to read it and bring that environment’s vendor/ folder up to date.

Both composer.json and composer.lock should be committed and deployed across environments.

Permissions Issues #

Systems may use different permissions setups, but Composer should always be run by whatever user normally executes PHP. If you’re seeing permissions issues, that is most likely the problem to solve.

Running Composer as a super user (i.e. with sudo) may force a certain action to succeed where it had previously failed, but you’ll want to be sure the resulting vendor/ directory has appropriate permissions so it doesn’t lead to further problems.

composer diagnose #

Running the composer diagnose terminal command gives you a quick sanity check. Consider using it to rule out more basic system-level problems:

$ composer diagnose
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com oauth access: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 2.0.6
PHP version: 7.4.12
PHP binary path: /usr/local/Cellar/php/7.4.12/bin/php
OpenSSL version: OpenSSL 1.1.1h  22 Sep 2020
cURL version: 7.73.0 libz 1.2.11 ssl OpenSSL/1.1.1h
zip extension: OK

Common Composer Errors #

“Your requirements could not be resolved to an installable set of packages.” #

This is the most common message you’ll see with an update failure, and it will always be preceded by details that describe one or more dependency conflicts.

“No such file or directory in /autoload.php” #

Composer generates and updates a file named autoload.php an app like Craft can include once to load all its dependencies. Sometimes missing file errors mentioning autoload.php or autoload_real.php indicate an altered or corrupt vendor folder. In this case, it’s usually simplest to delete the vendor folder and reinstall all the dependencies:

rm -rf vendor/
composer install

“yiisoft/yii2-composer contains a Composer plugin which is currently not in your allow-plugins config.” #

Composer 2.2+ will show this error unless you add the following to your composer.json file’s config section:

"allow-plugins": {
   "craftcms/plugin-installer": true,
   "yiisoft/yii2-composer": true
},

This is included by default in new Craft CMS projects.

Further Reading #

  • Resolving PHP Requirement Conflicts

Понравилась статья? Поделить с друзьями:
  • Code 9999 message undefined command xvacuum firmware ошибка
  • Code 9907 genshin impact как исправить на телефоне
  • Code 800b0100 windows 7 update error
  • Code 80072efd windows update error
  • Code 643 windows update error