This release note is divided into the following sections:
Introduction,
Documentation,
What's New,
Upgrading And
Compatibility Information,
Host Support,
Dependencies,
Device Support,
Validation Information,
Known Issues,
Benchmarks,
Versioning,
Technical Support
And Product Updates,
SYS/BIOS 6.37.00.20 is a GA release of SYS/BIOS
6.37.00.
SYS/BIOS is a real-time operating system that provides
pre-emptive deterministic multithreading.
The SYS/BIOS releases introduce a completely new SYS/BIOS kernel
and toolset. The SYS/BIOS releases include numerous major
enhancements, including completely new kernel APIs. They also include
compatibility layers and tooling to facilitate easy porting of
applications
developed on DSP/BIOS 5.x releases.
A number of
tools and libraries that were provided as an
integrated part of DSP/BIOS 5.x releases must now be downloaded
separately to
obtain a functional solution. It is essential for even experienced
DSP/BIOS
users to refer to the Getting Started
Guide and to the Upgrading and Compatibility Information
section for
further details.
Please read the Getting Started Guide for help installing and setting
up your environment to use SYS/BIOS 6.37.00.20.
back to top
The following documentation is provided with this release. These
documents are also available via the CCS Eclipse help table of
contents.
License and manifest.
Additional online sources of documentation.
Release
notes from previous releases are also available in the
release notes archive
directory.
back to top
SYS/BIOS
6.37.00.20 GA
Release (this release).
- Adds Cortex-A9 support (uses Linaro/gcc tools)
- Adds IAR support for Cortex-M3, M4 and M4F devices
- GCC semi-hosting support for Cortex-M3, M4 and M4F (requires CCSv6 beta 2 or later)
- Several Cortex-A optimizations and improvements (done together with adding A9 support)
- Miscellaneous bug fixes.
Defects Fixed in
SYS/BIOS
6.37.00.20 GA (Fixes since SYS/BIOS 6.35.04):
ID
Headline
SDOCM00104632 DMTimer module should support both intFreq and intFreqs[] config params
SDOCM00104604
Task.defaultStackSection's default value needs to be changed from
".bss:taskStackSection" to ".bss" for all GNU targets
SDOCM00104309 ti.bios.legacy boot files for C6x and C28 are stale (only affects legacy BIOS 5.x API users)
SDOCM00104239
The Load.xdt template should only generate code with calls to
Core_getId() if BIOS.smpEnabled is true
SDOCM00104205
remove ti.sysbios.family.arm.tms570 and family.c64 packages since R4
and 64x support are out of date
SDOCM00104200 Consider performance enhancements for A8 IRQ handling
SDOCM00104170
Potential bug in A8 Hwi_switchToIsrStack() &
Hwi_switchToTaskStack() functions that can cause HWIs to run on Task
stack
SDOCM00104107 Add support for TCI6630K2L, C66AK2H06/H12, C66AK2E02/05 to SYSBIOS
SDOCM00104062 SYS/BIOS Swi example comment value does not match code for Swi_or
SDOCM00104061 Hwi_clearInterrupt does not properly clear software generated interrupts
SDOCM00103775 Remove .chm help file from product
SDOCM00103606 Add support for additional MSP430 devices
SDOCM00103605 ClockFreqs for MSP430 not being included in pre-built libs
SDOCM00103598 C28 Hwi_create() broken for some Non-PIE interrupts
SDOCM00103536 BIOS error hook calls NULL pointer if Error.raiseHook is set to 'null' in the app.cfg file
SDOCM00103435 SYS/BIOS needs to reduce installed size
SDOCM00103378 Add M3 support for IAR
SDOCM00103315 Enable BIOS in TI-RTOS Product to support IAR
SDOCM00103313
C64P Exception_handler() raises the wrong error type & reports
incorrect Faulting requestor id for Memory Protection Faults
SDOCM00103238 CPU load doesn't give accurate results if Power idle is enabled.
SDOCM00103142
Many Timer_Module_startup()/TimerSupport_Module_startup() functions do
not explicitly specify type for "status" argument
SDOCM00103104 update M4/M4F examples to use ti.platforms.tiva (M3 should continue to use stellaris)
SDOCM00103103 ROV errors when using BIOS in ROM (looks like duplicate symbols for Task_Module__state__V)
SDOCM00103098 Can't create static Clock objects with BIOS.swiEnabled = false
SDOCM00103047 Document Task_getIdleTask() and Task_getIdleTaskHandle() APIs
SDOCM00102976
A8 MMU default memory attributes should mark memory as normal
non-cacheable (not strongly ordered)
SDOCM00102875
Newlib has a memory leak problem when a task that performs standard IO
(printf(), etc.) is deleted
SDOCM00102861 MSP430: Add tolerance for long running ISRs for Timer RunMode_CONTINUOUS
SDOCM00102773 BIOS Load module should not allocate memory if all tasks are statically configured
SDOCM00102737 Optimize A15 Mmu's Mmu_initSecondLevelTableBuf() implementation to reduce stack usage
SDOCM00102732 Mark peripheral memory region as strongly ordered in A15 MMU
SDOCM00102597 a15/Mmu module's Mmu_disable() function does not restore cache settings
SDOCM00102558 Hwi dispatcher for Arm9 and Cortex-A8 needs to be reworked to work with 5.1.0 optimizer
SDOCM00102527
Potential bug in Hwi_switchToIsrStack() & Hwi_switchToTaskStack()
that can cause HWIs to run on Task stack
SDOCM00102419
On an M4F device, if an interrupt that performs floating point math
occurs prior to Task_startup(), an exception occu
SDOCM00102402 CpIntc module broken for devices with over 256 system interrupts
SDOCM00102322 Fix compiler option ordering for GCC in getDefaultCustomCCOpts()
SDOCM00102204 Replace multiply in MSP430's TimestampProvider_get32() with a shift left
SDOCM00102142 Add a new IntXbar connect/disconnect API that uses CPU IRQ Num instead of XBAR Instance
SDOCM00102140 IntXbar module needs to support ARP32_far target
SDOCM00102061 SYSBIOS issue on ARP32 when interrupt happens during computing loop
SDOCM00102055 C66 Cache ROV view does not display MAR entries if MAR register value is 0.
SDOCM00102040 intXbarLength in vayu/IntXbar's module$meta$init needs to be initialized
SDOCM00102003
re-enable $logError in family.arm.m3.Timer.xs when BIOS.smpEnabled is
true. Resolve resulting product build error.
SDOCM00101951 The A15 family modules need to be added to SYS/BIOS product view
SDOCM00101907
Hwi and Task/Hwi stack size ROV code should check 'initStackFlag =
false' and display "n/a" instead of error
SDOCM00101812 Limited to 107 interrupt vectors for F28M36 (M3)
SDOCM00101769 Add Semi-Hosting support for Cortex-M GNU targets
SDOCM00101636 Refactor lm3 and lm4.Timer_initDevice to allow user-provided enable-runmode function.
SDOCM00100913
Should we use the PMC overflow interrupt to update the upper 32 bits of
the Timestamp for ARM A8, A9 & A15
SDOCM00100651 Update ROV function ti.sysbios.family.msp430.Hwi.viewGetStackInfo() to support IAR
SDOCM00100281
With C28x Hwi.dispatcherAutoNestingSupport set to 'false', IER bits are
not re-enabled upon returning from interrupt.
SDOCM00099746 Improve documention on how SYS/BIOS uses (LM3/4) timers
SDOCM00099546
add Timestamp_getFreqMeta() API to support UIA and other components
that need this freq at config time
SDOCM00099417 Provide an efficient way for an application to determine the configured Clock.tickPeriod
SDOCM00099398 Create a new PMU module and Timer module based on the PMU module for all ARM v7A devices
SDOCM00099142 BIOS 6: Add necessary infrastucture to support GNU toolchain with CCS
SDOCM00099120 Restore ISystemSupport abort() override in SMP package's SysMin and SysStd modules
SDOCM00098616 optimize C28/Hwi dispatcher to enable zero-latency interrupts sooner
SDOCM00098146 add gcc/Linaro Cortex-A9 support to SYS/BIOS
SDOCM00096783 Top level make should allow exclusion of SMP and debug libraries
SDOCM00095686 Build FatFS for gcc and IAR
SDOCM00094505 need to implement CIO functionality in BIOS for A15 gcc
SDOCM00092910 add IAR compiler support for Stellaris and other M4 devices
SDOCM00090628 rework Swi_schedule() and assorted Hwi dispatchers to avoid ISR/Task stack switch from C code
SDOCM00090047 CPU load is off by 18% compare to 100% - Idle time
SDOCM00088905 BIOS 6: Arm exception handler should dump the internal DFSR, IFSR, DFAR, and IFAR registers
SDOCM00072351
if task loading is available, we should compute CPU load as "100 -
idleTask load" (instead of idle loop counts)
SDOCM00071864 Semaphore_pend: Need to move calling context assert to top of function
back to top
SYS/BIOS
releases have many significant changes from
DSP/BIOS 5.x. It is important to understand the information
below in order to
successfully use SYS/BIOS and to migrate applications from DSP/BIOS
5.x.
SYS/BIOS
software downloads
SYS/BIOS 6.35
- Binary compatible. You can use libraries built with 6.35.0x with 6.37.00.
SYS/BIOS 6.34
- Binary
Compatibility. A few fields have been added to several data
structures which means that SYS/BIOS 6.34 is not binary compatible
SYS/BIOS 6.33. The safest thing to do is to rebuild all source
code against the .h files provided with SYS/BIOS 6.34. Note that only
the following externally visible structures have changed:
Task_Params, Task_Struct, HeapMem_Params. If your source
code does not use these structures directly, then you may not need to
recompile. Be careful when using other libraries from other
sources (like the NDK stack or other libraries provided with an
SDK or otherwise). These libraries should also be recompiled
against SYS/BIOS 6.34.
- MSP430
Clock. The Clock module for the MSP430 now uses the periodic
timer mode (TickMode_PERIODIC) by default. SYS/BIOS 6.33
used TickMode_DYNAMIC. You can change this default using
the ‘Clock.tickMode’ configuration parameter in your .cfg file.
TickMode_DYNAMIC minimizes the need for periodic interrupts, but adds
some constraints on the application. See
https://processors.wiki.ti.com/index.php/SYS/BIOS_for_the_MSP430#Clock_Tick_Suppression
for more information about MSP430 clock modes.
- This release requires XDC 3.24.01 or later.
- This
release requires Arm codegen 5.0.1 or later. 5.0.1 will be
provided with CCSv5.3 and is available separately for use in CCSv5.2.
SYS/BIOS 6.33
- The
default directory for SYS/BIOS is changing to match CCSv5.1.0, "C:\ti"
is the new default directory (SDOCM00086138 -- BIOS installer needs to
change its default directory to match CCSv5.1.0)
- RTDX
has been removed and is no longer supported.
Only stop mode is supported for Realtime Analysis (RTA).
SYS/BIOS 6.32
- For
TI816X devices (ie Netra), GPTimers 3 and 7 have been removed from the
list of usable timers due to anomalous behavior when clocked at 32KHz
resulting in two interrupts for every period when run in continuous
mode.
- We
are planning to remove support for the whole_program and
whole_program_debug profiles because of build time problems and
compatibility problems when using different compiler
versions. SYS/BIOS 6.32 will output a warning
message when
the whole_program or whole_program_debug profiles are
used.
We are now providing pre-built libraries which can be selected via the
BIOS.libType configuration parameter (see section 7.6.1 of the BIOS
User's Guide for details). The instrumented
library contains Assert() and Log statements. The
non-instrumented library does not. The custom
library can
be used to build a custom BIOS library which will be built using
#define constants reflecting some of the key configuration parameters
from your application .cfg file. The
non-instrumented
library and custom library should give you similar or better
performance
to SYS/BIOS 6.31 using the whole_program profile.
- .taskStackSection
has been renamed – The .taskStackSection linker section has been
renamed to be a subsection of .far, .bss, or .ebss as appropriate for
the given target. This allows BIOS to be used with
CCS-supplied
linker .cmd files for the MSP430, Stellaris and 28x devices.
This
section is used to place the stacks for tasks created at configuration
time. The new name is provided in the
Task.defaultStackSection field in your configuration. If you
reference ‘.taskStackSection’ in your .cfg file, you should change the
code to use Task.defaultStackSection.
SYS/BIOS 6.31
- Added
an assert to GateMutex. GateMutex_enter() calls
BIOS_getThreadType() to validate the calling context.
GateMutex_enter() will raise an assert if called from Hwi or Swi
context. GateMutex internally calls
Semaphore_pend/post to
provide the mutex. Semaphore_pend() cannot be called from Swi
or
Hwi context if the semaphore is not available. Note that a
GateMutex gate is registered with the TI compiler’s RTS library to make
the RTS library reentrant. Calling printf() and a
few other
RTS functions from Swi or Hwi context will yield this
assert.
- This
assert check will catch bad code
that could cause a rare crash. While not recommended, this
assert
can be disabled by adding ‘GateMutex.common$.diags_ASSERT =
Diags.ALWAYS_OFF;’ to your .cfg file.
- Text
footprint on the C6x
increased by 2K due to Exception.enablePrint default now being set to
‘true’ by default. This enables better diagnostic output when
an
exception occurs. You can set this config parameter to
‘false’ to
save memory and get a shorter, less informative diagnostic string.
- MMU
and Cache are now enabled by default for Arm9.
- Arm9
applications will have larger data/text footprint
due to the 16kbyte MMU table and MMU initialization code.
- Moved
ti.sysbios.arm.Cache module to ti.sysbios.arm.arm9.Cache since this
module is Arm9-specific. .cfg scripts will have to be updated
to
use new name (‘ti.sysbios.family.arm.arm9.Cache’) and .c files will
have to change to use ‘#include
<ti/sysbios/arm/arm9/Cache.h>’.
- Use
BIOS_exit() rather than System_exit() if called from ISR or Swi context
to avoid Assert() in GateMutex module. BIOS_exit()
and
System_exit() both flush the SysMin trace buffer using CIO.
The
CIO library is protected by GateMutex.
DA830
ROM
- BIOS
6.30 and 6.31 cannot be used with the
DA830 ROM. BIOS 6.21 is the preferred version for DA830 ROM.
The
'ti.sdo.io' and 'ti.sdo.utils' packages are no longer provided with
SYS/BIOS
- These
packages are now provided in a
separate
"IPC" product. Users of these packages simply need to add
this
other product directory to their package path (XDCPATH) to build their
applications.
The
ti.sysbios.ipc package and its modules have been deprecated
- The
Semaphore, Event, and Mailbox modules were moved from the
ti.sysbios.ipc package into the ti.sysbios.knl package. Please update
your applications to use the ti.sysbios.knl package versions of the
Semaphore, Event, and Mailbox modules. Using the ipc package versions
of these modules will result in build warnings. In a subsequent release
of BIOS, using any module within the ipc package will result in a build
error.
The
ti.sysbios.family.arm.m3.Exception module has been deprecated
- The
ti.sysbios.family.arm.m3.Exception module functionality has been
enhanced and merged into the ti.sysbios.family.arm.m3.Hwi module.
Please update your applications to use the ti.sysbios.family.arm.m3.Hwi
module to configure exception handling. By default, exceptions will be
reported to CIO with an Error message. Details of the exception can be
seen using Hwi module's "Exception" ROV view. At the expense of
additonal code size, some of this detailed information can ALSO be
routed to the CIO console by setting the Hwi.enableException
configuration flag to true.
Placing of sections using
MEM configs is no longer supported (ie MEM.TEXTSEG is unsupported)
- All
of the legacy MEM memory segment placment functionality has been
removed. Legacy BIOS users must use Program.sectMap to place memory
sections.
The
ti.sysbios.family.c64p.Cache.initSize configuration item is no longer
supported
- The
ti.sysbios.family.c64p.Cache module no longer supports setting the
Cache sizes. These settings are now managed within a platform and can
be configured using the platform wizard.
SYS/BIOS no
longer
contains all the tools and objects you will need
- The
XDC tools now provide the
SYS/BIOS configuration tools and Platform support.
XDC also includes a minimal run-time environment that provides the LOG,
System,
Asserts, Error handling, Timestamp, and Memory Allocation APIs that
will be
used by SYS/BIOS applications. Please refer to the Getting Started Guide on where to
download the XDC tools and
run-time.
Migrating DSP/BIOS
5.x applications to SYS/BIOS
- SYS/BIOS has different APIs
compared to those in
DSP/BIOS 5.x. Configuration scripts are also incompatible between the
two
releases. To provide easy migration of DSP/BIOS 5.x
applications, an API
compatibility layer is provided along with a conversion tool that
converts
configuration scripts to work with XDC and SYS/BIOS. The
API compatibility
layer provides 100% C source code compatibility with the exception of a
few
APIs that are no longer supported. For more complete details
of migrating
DSP/BIOS 5.x applications and configuration scripts, please refer
to Migrating
a DSP/BIOS 5 Application to SYS/BIOS.
- As mentioned
above, some APIs previously supported in
DSP/BIOS 5.x releases will no longer be supported in this release or
the
compatibility layer. Complete details are provided in the
Migration document referenced
above.
back to top
- Supported
Operating Systems
- Windows 8, Windows
7, Windows XP
- Linux
[RH4], Ubuntu [10.04, 12.04, 12.10, 13.04]
back to top
- Minimum Required Software Versions
- Code Composer Studio v5.4.x or later (CCSv5.5.0 recommended)
- TI Code Generation Tools
- C28X
version 6.1.0 or later
- C6X version 7.3.1 or later
- ARM version 4.9.1 or later, M3/M4 version 5.0.1 or later
- MSP430 version 4.1.0 or later
- XDCTools 3.24.06.63 or later
- GNU Code Generation Tools (for ARM only)
- ARM version gcc-arm-none-eabi-4_7-2012q4 or later
- XDCtools 3.25.04.88 or later
- IAR Code Generation Tools (for Arm Cortex-M and MSP430 only)
- ARM version 6.60
- MSP430 version 5.60.1
- XDCtools 3.25.04.88 or later
- Required Hardware
- See Device Support Section below.
back to top
Click here
for the list of supported devices.
back to top
Click
here
for the list of compilers used to build and validate this release
(scroll down to Supported Targets section).
back to top
The
following issues are known to affect this release:
- GCC semi-hosting support for Cortex-M3/M4/M4F does not work in
CCSv5.4 or CCSv5.5. Semi-hosting support for Cortex-M
devices will be added to a future version of CCS.
- Titles for "Getting Started Guide" and "User's Guide" still
refer to SYS/BIOS 6.35. These are the correct documents for
this release. They will be updated in a later release.
back to top
For a full description of Benchmarks please see the
appendices in the SYS/BIOS
6 User's
Guide.
back to top
All releases
have 4 digits (M.mm.pp.bb).
This includes GA and pre-releases (engineering, alpha/EA, beta, etc.).
Pre-releases are denoted with a suffix (e.g. 6.30.00.00-eng or
6.30.00.10-beta).
This product's version follows a version format, M.mm.pp.bb, where M is a single digit
Major number, mm
is 2 digit minor number, pp
is a 2 digit patch number, and b
is an unrestricted set of digits used as an incrementing build counter.
To
support multiple side-by-side installations of the product, the product
version is encoded in the top level directory (e.g. bios_6_30_00_00).
Subsequent
releases of patch upgrades will be identified by the patch number, ex.
SYS/BIOS 6.30.01.15 with directory bios_6_30_01_15. Typically, these
patches only include critical bug fixes.
Please note that
version numbers and compatibility keys are NOT the same. For an
explanation of compatibility keys, please refer to the 'Upgrade and
Compatibility Information' section.
back to top
Technical
Support and Product Updates
back to top
Last
updated: October 29, 2013 Build Ver: 6.37.00.20 Rev: m20