Содержание
- 9.1. InstallationВ¶
- 9.1.1. General Tips for Installing CCSВ¶
- 9.1.2. Installation Error Related to Missing MSVC Redistributable LibrariesВ¶
- 9.1.2.1. Windows 7В¶
- 9.1.3. Installation Fails when «Installing Eclipse»В¶
- 9.1.4. Installation Fails with Error About Permissions on Temporary FolderВ¶
- 9.1.5. MacOS Installation Freezes or Prompts for Proxy InformationВ¶
- 9.1.6. Clearing Out An Existing InstallationВ¶
- 9.2. StartupВ¶
- 9.2.1. JVM Max Heap Size is Too High or Too LowВ¶
- 9.2.2. Failed to Create the Java Virtual MachineВ¶
- 9.2.3. Antivirus or Other Security SoftwareВ¶
- 9.2.4. Missing MSVC Redistributable LibrariesВ¶
- 9.2.5. Corrupt Workspace FolderВ¶
- 9.2.6. «com/ti/dvt/energytrace» ErrorsВ¶
- 9.3. UpdatesВ¶
- 9.3.1. No Update Sites FoundВ¶
- 9.3.2. CCS App Center Not ConnectingВ¶
- 9.3.3. Out of Memory Error When Installing Add-ons from CCS App CenterВ¶
- 9.3.4. Error: Computing size has encountered a problemВ¶
- 9.3.5. Updates fail with No repository found or Connection reset or artifact for binary not available errorsВ¶
- 9.4. General IDEВ¶
- 9.4.1. Reset the PerspectiveВ¶
- 9.4.2. Use the -clean Argument When Calling «ccstudio(.exe)»В¶
- 9.4.3. Clean the Workspace (or try using a new one)В¶
- 9.4.4. Heap and JVM settingsВ¶
- 9.4.5. GTK3 (for CCS Linux)В¶
- 9.4.6. Failed to create the part’s controls Errors (for CCS Linux)В¶
- 9.5. Resource ExplorerВ¶
- 9.5.1. Connection IssuesВ¶
- 9.5.1.1. Check your Internet ConnectionВ¶
- 9.5.1.2. Check the Proxy SettingВ¶
- 9.5.1.3. Clear the Resource Explorer CacheВ¶
- 9.5.1.4. Clear the CCS Browser CacheВ¶
- 9.5.1.5. Check for Running ProcessesВ¶
- 9.5.1.6. LogsВ¶
- 9.6. Project Management and BuildВ¶
- 9.7. DebugВ¶
- 9.7.1. JTAG Connectivity IssuesВ¶
- 9.7.2. Data Verification IssuesВ¶
- 9.7.3. Delete the debug launch configurationВ¶
- 9.7.4. Delete the .launch FileВ¶
- 9.7.5. Delete Target Cache FilesВ¶
- 9.7.6. CCS Freezes During DebugВ¶
- 9.7.7. Hardware Trace IssuesВ¶
- 9.7.8. RTOS Analyzer IssuesВ¶
- 9.8. Getting SupportВ¶
- 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:
- 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.
- 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.
- For every item inside these branches, right-click and select Uninstall. Also, check the box near Delete the driver software for this device.
- 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.
- 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:
- Exit out of CCS
- 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
- Start CCS and go to menu Help в†’ Install New Software
- 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)
- Uncheck the box Contact all available sites during install to find required software at the bottom of the pane
- 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:
- Open the Preferences dialog (menu Window в†’ Preferences)
- Type proxy in the search box
- Select Network Connections
- Under Active Provide, select Native
- Click OK
- 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:
- 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.
- 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.
- 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#
-
When facing any kind of problems using Composer, be sure to work with the
latest version. See self-update for details. -
Before asking anyone, run
composer diagnose
to check
for common problems. If it all checks out, proceed to the next steps. -
Make sure you have no problems with your setup by running the installer’s
checks viacurl -sS https://getcomposer.org/installer | php -- --check
. -
Try clearing Composer’s cache by running
composer clear-cache
. -
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 orcomposer.lock
entries.
Package not found#
-
Double-check you don’t have typos in your
composer.json
or repository
branches and tag names. -
Be sure to set the right
minimum-stability. To get started or be
sure this is no issue, setminimum-stability
to «dev». -
Packages not coming from Packagist should
always be defined in the root package (the package depending on all
vendors). -
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
. -
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. -
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:
-
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, thedev-main
version will not satisfy it.
The best solution here is to make sure you first define a branch alias. -
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 todev-main
for example to define
the root package’s version asdev-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#
-
Check the «Package not found» item above.
-
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
to1.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)#
- Open regedit.
- Search for an
AutoRun
key insideHKEY_LOCAL_MACHINESoftwareMicrosoftCommand Processor
,
HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
orHKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftCommand Processor
. - 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??
- Общее
- Пакет не найден
- Пакет не найден на travis-ci.org
- Пакет, не найденный в Jenkins-build
- У меня есть зависимость, которая содержит определение «репозитории» в своем composer.json, но, похоже, это игнорируется.
- Я заблокировал зависимость от конкретной фиксации, но получил неожиданные результаты.
- Необходимо переопределить версию пакета
- Ошибки памяти
- Влияние Xdebug на Composer
- «Система не может найти указанный путь» (Windows)
- Ограничение скорости API и токены OAuth
- proc_open (): ошибки форка
- Режим деградации
- Тайм-аут операции (проблемы IPv6)
- Композитор зависает с SSH ControlMaster
- Zip-архивы не распаковываются должным образом.
Это список распространенных ошибок при использовании Composer и как их избежать.
Общее #
- Прежде чем спрашивать кого-либо, запустите
composer diagnose
для проверки общих проблем. Если все прошло успешно, переходите к следующим шагам. - При работе с любыми проблемами с помощью Composer обязательно работайте с последней версией. Подробнее см. Самообновление.
- Убедитесь, что у вас нет проблем с настройкой, выполнив проверки установщика с помощью
curl -sS https://getcomposer.org/installer | php -- --check
. - Убедитесь, что вы устанавливаете vendor’ы прямо из вашего
composer.json
черезrm -rf vendor && composer update -v
при устранении неполадок, исключая любые возможные помехи существующим установкам поставщиков или записиcomposer.lock
. - Попробуйте очистить кэш Composer, запустив
composer clear-cache
.
Пакет не найден #
- Дважды проверьте, что у вас нет опечаток в ваших папках
composer.json
или репозиториях и именах тегов. - Обязательно установите правильный minimum-stability. Чтобы начать работу или убедиться, что это не проблема, установите
minimum-stability
в «dev». - Пакеты, не входящие в Packagist, всегда должны быть определены в корневом пакете (пакет зависит от всех поставщиков).
- Используйте один и тот же vendor и имя пакета во всех филиалах и тэгах вашего репозитория, особенно при поддержке сторонней вилки и использовании
replace
. - Если вы обновляете недавно опубликованную версию пакета, помните, что у Packagist есть задержка до 1 минуты, прежде чем новые компонеты будут видны Composer.
- Если вы обновляете один пакет, это может зависеть от более новых версий. В этом случае добавьте аргумент
--with-dependencies
или добавьте все зависимости, которым необходимо обновить команду.
Пакет не найден на travis-ci.org #
- Проверьте элемент «Пакет не найден» выше.
- Если тестируемый пакет является зависимостью одной из его зависимостей (циклической зависимости), проблема может заключаться в том, что Composer не может правильно определить версию пакета. Если это git-клон, он, как правило, в порядке, и Composer определит версию текущей ветви, но travis делает мелкие клоны, так что процесс может потерпеть неудачу при тестировании запросов на отрыв и ветвей функций в целом. Лучшим решением является определение версии, с которой вы работаете, через переменную среды COMPOSER_ROOT_VERSION. Например, вы устанавливаете его в
dev-master
, чтобы определить версию корневого пакета какdev-master
. Использование:before_script: COMPOSER_ROOT_VERSION=dev-master composer install
для экспорта переменной для вызова композитора.
Пакет, не найденный в Jenkins-build #
- Проверьте элемент «Пакет не найден» выше.
- Причина сбоя похожа на проблему, которая может возникнуть на 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) #
- Открыть regedit.
- Найдите ключ автозапуска внутри
HKEY_LOCAL_MACHINESoftwareMicrosoftCommand Processor
,HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
илиHKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftCommand Processor
. - Проверьте, содержит ли он какой-либо путь к несуществующему файлу, если это так, просто удалите их.
Ограничение скорости API и токены OAuth #
Из-за ограничений скорости GitHub в их API может случиться, что Composer предложит вам аутентификацию с запросом вашего имени пользователя и пароля, чтобы он мог продолжить работу.
Если вы не хотите предоставлять свои учетные данные GitHub для Composer, вы можете вручную создать токен, используя следующую процедуру:
- Создайте токен OAuth в GitHub. Узнайте больше об этом.
- Добавьте его в конфигурацию, которая запущена
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