SYS/BIOS 6.34.00.12 is a GA release of SYS/BIOS
6.34.00.
SYS/BIOS is a real-time operating system that provides
pre-emptive deterministicmultithreading.
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.34.00.12.
Fix for SDOCM00095657. Critical bug fix for C28 zero latency interrupt mode.
The Hwi_disable(), Hwi_enable(), and Hwi_restore() functions are not reentrant.
This issue does not apply to default Hwi configuration. This issue can only
occur if the application .cfg file has the Hwi.zeroLatencyIERMask variable set.
All examples are now available via
the CCSv5.3 Resource Explorer. You need to use CCSv5.3 or later
to see the examples in Resource Explorer. Examples are still
provided via the new project wizard, but this will be phased out in
future releases in favor of the resource explorer.
The
HeapTrack module has been added. This module tracks memory
allocations on a per-task basis. The RTOS Object Viewer (ROV) can be
used to review the per-task memory usage and search for memory
leaks. See the API guide for more info.
This is the first release that supports Cortex-A15 (using gcc compiler).
The User’s Guide and Getting Started Guide have been updated.
The library names and internal directory structure have changed. These changes should have no impact on the user.
Misc bug fixes, see below.
Defects Fixed in
SYS/BIOS
6.34.00.12 GA (Fixes since SYS/BIOS 6.33.05.46):
ID
Headline
SDOCM00095657 C28 zero latency Hwi_disable/enable/restore are not thread safe (only affects zero-latency version of Hwi_disable)
SDOCM00095450 Need to use consistent data types when determining next tick for Clock.TickMode_DYNAMIC
SDOCM00094823
BIOS 6: With ELF targets, setting BIOS.heapSize to zero results in a
Memory_alloc() error during startup. SDOCM00094659 (Child) Arm9 Cache_wbAll() missing return statement SDOCM00094576 BIOS 6: Add priority-based queueing option to Semaphores. SDOCM00094533
(Child) BIOS 6: intrinsic used in M3 ARM's Hwi_disable()/Hwi_restore()
macros is not a code-reordering optimization barrier SDOCM00094474 BIOS 6: Add sanity check to task's pendElem pointer to verify that it is within the task's stack SDOCM00094343 Typo in SYS/BIOS user guide SDOCM00094055 (Child) BIOS 6: AMMU module should not autogenerate small page descriptor 1 for C64T target SDOCM00094025 update RTA chapter to reference UIA and update menus per CCSv5.3 SDOCM00094009 Remove shortcuts in Windows Start Menu SDOCM00093911
Arp32 static Hwi creation does not correctly set IER mask when masking
is set to MaskingOption_SELF SDOCM00093910 Arp32 Hwi hooks called with interrupts enabled. SDOCM00093859
(Child) C6x interrupt stubs have misaligned stack pointer in small
window of code -- possible problem for an NMI interrupt SDOCM00093367 Change the default tick mode for Clock for MSP430 to be TickMode_PERIODIC SDOCM00093364 Add pre and post suspend hooks to non-SMP Power_suspend() SDOCM00092913
BIOS 6: dmtimer Timer allows configuring the tsicr.posted bit but never
copies it to the tsicr register. SDOCM00092899 update MISRA checking to enable more rules SDOCM00092898 add support for Cortex-A15 (using gcc toolchain) SDOCM00092863 remove ti.sysbios.family.windows emulation libraries from SYS/BIOS SDOCM00092862 update SYS/BIOS examples to be available in Resource Explorer SDOCM00092392
remove Clock_doTick() function from the Clock module object to save
code space when Clock not used SDOCM00092166 Timer support delegate for dmtimer should be specified more consistently. SDOCM00091976
SYS/BIOS: M3 Hwi module should provide Hwi.plugMeta() API and fully
support existing Hwi_plug() API. SDOCM00091484 Add support for new MSP430 devices: F665x, F645x, F565x, and F535x SDOCM00091291
DEV_create doc needs to be updated to inform user that name arg must
exist for the lifetime of the DEV object SDOCM00091223
BIOS 6: Move BIOS build related logic out of BIOS and into a separate
module (ie Build, like IPC) SDOCM00091101 Clock
should not indicate LW_delayed when the Clock Swi was not actually
posted because of empty Clock queue SDOCM00090676
typo in GIO section of BIOS 6.x User's Guide (ISync is for use with
ISSUERECLAIM mode, not STANDARD) SDOCM00090629 Assorted Hwi modules need to validate that fxn != null at configuration time (Hwi.xs change) SDOCM00089857 time-slice source code example in User Guide needs a larger task stack (or note) SDOCM00089468 BIOS 6: Load module's getTaskLoad() API doesn't check for Load.taskEnabled. SDOCM00089027 remove $isROM support from assorted .xs files throughout avala tree SDOCM00088895
BIOS 6: A8 Mmu module should set XN bit in device regions to avoid
speculative branch pre-fetches of device memory. SDOCM00086344 Need a tracking heap to help find memory leaks SDOCM00085378 BIOS 6: Provide a means to place the Hwi dispatch table in flash for static-only systems. SDOCM00085250
BIOS 6: using c64p.Hwi module, xgconf picks Hwi handle names that
overlap with symbols defined by Hwi module SDOCM00084654
reconsider our use of '.lib' suffix for custom and pre-built libraries
-- use .a674, etc. for consistency SDOCM00084577 The Task module needs a method to retreive the task function pointer SDOCM00083444 HeapBuf_alloc() should check that align is <= the created alignment SDOCM00082554
project wizard should find linker .cmd files from CCS or
xdctools/platforms ... not duplicate in each product SDOCM00081915
HeapMem should support minimal align instance parameter to enable
allocated blocks to reside on unique cache lines SDOCM00076603 consider an Assert() in Task_Instance_finalize() to check idle/terminated/deleteTerminatedTasks
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.
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.
The
following issues are known to affect this release:
If
this version of SYS/BIOS is installed on the same system
as SYS/BIOS 6.31.00.xx or older, and use the same
version of
CCS, the user may see two "SYS/BIOS" folders in the examples when
creating a new project. The Eclipse plugins were
updated to
fix this in SYS/BIOS 6.31.01.19 and later. To work around
this
issue remove all versions of SYS/BIOS older than 6.31.01.19.
ID
Headline SDOCM00082528 Linker command file
inserted regardless of platform selected for C28 examples
SDOCM00074130 ROV should reference kernel
object names versus object addresses
SDOCM00068360 No data displayed in RTA
Exec Graph when attaching to running target
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.