Question
I am creating a project for my BF609 target that uses the Micrium uC/OS-III Add-In. In the System Configuration (system.svc) I have added the "uC/OS-III for Blackfin" Add In, as well as the "ADSP-BF609 Micrium Library Support" Add-In from the ADSP-BF609 EZ-KIT Lite Board Support Package.
During compilation I see a number of cc0223 (Function declared implicitly), and cc1080 (Function does not have a full prototype) warnings, then the build fails, stating: "[Error li1021] The following symbols referenced in processor 'CORE_0' could not be resolved".
What is the correct procedure for adding the Micrium uC/OS-III Add-In to my application?
==============================
Answer
These warnings and errors are caused by the inclusion of the "ADSP-BF609 Micrium Library Support" Add-In to your project. This Add-In is only intended to be used by the examples provided in the ADSP-BF609 EZ-KIT Lite Board Support package, not customer projects. When creating a project that uses the Micrium uC/OS-III Add-In, you should not add the "ADSP-BF609 Micrium Library Support" Add-In.
Adding the "ADSP-BF609 Micrium Library Support" Add-In adds Library Search Paths, *.dlb Library Files, and Additional Include Directories to the project options, so that the project can locate resources that are provided within the Board Support Package. These resources are minimal versions derived from the full Micrium Add-Ins.
Unfortunately, these resources and their paths are added to the top of the list in the Project Options, which results in a higher precedence being applied to them and, in turn, the project will use these stripped-down resources instead of their equivalent from the full Add-In.
-----Example li1021 output-----
[Error li1021] The following symbols referenced in processor 'CORE_0' could not be resolved:
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_flag.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_mutex.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_pend_multi.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_q.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_sem.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_task.doj'
'OS_CRITICAL_ENTER_CPU_EXIT [_OS_CRITICAL_ENTER_CPU_EXIT]' referenced from '.\system\uCOS-III\Source\os_time.doj'
Linker finished with 1 error
cc3089: fatal error: Link failed
make: *** [uCOSandBSP_Core0.dxe] Error 1
-----Example li1021 output-----
Avoiding and Remedying this Issue
When creating a new project, do not add the "ADSP-BF609 Micrium Library Support" Add-In. If you want to fix an existing project to which you have added this Add-In, the steps are as follows:
- Double-click the "system.svc" file to open the System Configuration utility
- Highlight the "ADSP-BF609 Micrium Library Support" Add-In and select "Remove"
- For EACH project edit the following project options in "Project Options: C/C++ Build: Settings:"
- Under "CrossCore Blackfin C/C++ Compiler: Preprocessor" remove the following 4 'Additional include directories (-I)':
- "${COM_ANALOG_CROSSCORE_ADDINS_BF609_BRD_1_0_3_LOC}/Blackfin/include/uC-CPU"
- "${COM_ANALOG_CROSSCORE_ADDINS_BF609_BRD_1_0_3_LOC}/Blackfin/include/uC-LIB"
- "${COM_ANALOG_CROSSCORE_ADDINS_BF609_BRD_1_0_3_LOC}/Blackfin/include/uCOS-III"
- "${COM_ANALOG_CROSSCORE_ADDINS_BF609_BRD_1_0_3_LOC}/Host/Examples/Windows/VendorBulk"
- Under "CrossCore Blackfin Linker: General" remove the following from the 'Library search directories (-L)':
-
"${COM_ANALOG_CROSSCORE_ADDINS_BF609_BRD_1_0_3_LOC}/Blackfin/lib/bf609_rev_any"
-
- Under "CrossCore Blackfin Linker: Additional Options" remove the following DLB files from the 'Additional options for the linker':
- libuccpu.dlb
- libuclib.dlb
- libucos3.dlb
- libucusbd.dlb
- Under "CrossCore Blackfin C/C++ Compiler: Preprocessor" remove the following 4 'Additional include directories (-I)':
Once you have updated both the Core 0 and the Core 1 project, you will be able to rebuild the project successfully.