SYS/BIOS 6.31.00.18 is an GA release of SYS/BIOS
6.31.00.
SYS/ BIOS is a real-time operating system that provides
pre-emptive deterministicmultithreading.
The SYS/BIOS 6.x releases introduce a completely new SYS/BIOS kernel
and toolset. The SYS/BIOS 6.x 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.31.00.18.
Cortex-A8 support for TI816x, TI814x, and OMAP3530 devices.
C66x support for the 6670, 6672, 6674 and 6678 devices.
Memory-related enhancements:
BIOS.heapSize
– new configuration parameter to specify size of HeapMem heap that BIOS
will create and bind as default heap manager via
Memory.defaultHeapInstance.
malloc/free
– BIOS now provides malloc(), free(), calloc(), realloc(), and
memalign() functions. The BIOS versions of these functions use
the default HeapMem for the memory heap.
SYS/BIOS User’s Guide -- Assorted updates to the Memory Chapter (Chapter 5).
More assert checks -- Added more assert checks to the heaps in the ti.sysbios.heaps package.
Example improvements – add bigtime.cpp C++ example, simplified configuration for other examples
MemoryProtect module for C64x+, C674x and C66x.
Exception Modules – improved output for the family-specific exception modules.
ROV view improvements – added ROV views for family-specific Exception and Cache modules
BIOS
libraries are now compiled with –g –o2 for better performance.
The –o2 option will have some effect on stepping through BIOS code in
an application debug build.
Defects Fixed:
ID
Headline SDOCM00076572 Hwi does not support TI814X and TI816X platforms SDOCM00076569 Negative tRemaining value in Clock ROV view SDOCM00076562 need regresstests for malloc/free/memalign/realloc SDOCM00076447 Cortex-A8 is missing from the "supported devices" table SDOCM00076341 remove tabs from example source files SDOCM00076119
Cache APIs for 66x must also manage pre-fetch buffer (i.e., invalidate
should remove data from prefetch) SDOCM00076106 add support for 6670 and 6678 devices SDOCM00076105 BIOS' heaps should raise allocation errors along with Memory_alloc SDOCM00075961 Make exception output for C6x smaller so that it fits within 1024 SysMin default SDOCM00075806 Exception causing jump to reset vector SDOCM00075674 strange $sizeof error from ROV for GateHwi and GateSwi SDOCM00075556 add ti.bios legacy support for 6x ELF targets SDOCM00075536 BIOS 6: HeapBuff_free() should do more validity checks on buffer passed to it SDOCM00075005 Incorrect docs for Hwi_clearInterrupt SDOCM00074999 Cache needs to be re-enabled upon abort of Ducati Power_suspend() SDOCM00074868 Fix typos and errors in Memory chapter SDOCM00074842 ti.sysbios.family.c64p.Cache module should have an ROV view SDOCM00074789
BIOS 6: If A8 Hwi module startup is called AFTER Hwis have been created
by other module startups, they get disabled. SDOCM00074509
BIOS 6: M3 Exception report mistakenly shows copy-to stack buffer
address rather than thread's stack base. SDOCM00074413 c28/Hwi_getHandle() API does not exist SDOCM00074293 if
the idle task is disabled, BIOS can spin in infinite loop with
interrupts disabled (C6x/whole_program issue) SDOCM00074270 conditional code (if/else) in example.cfg.xs files confuse xgconf -- fix xgconf or simplify SDOCM00074267 example
.cfg files need to use 'var' for all static create instances (so
objects can be seen in xgconf!) SDOCM00074264 Enhance Power_SuspendArgs to also specify which interrupts are allowed to wake from WFI (Ducati) SDOCM00074261 Restore of NVIC state should be moved to after all other context has been restored (Ducati) SDOCM00074190 BIOS 6: C66 is filtered out in package.bld so library is not built for RTA SDOCM00074104 SYS/BIOS user guide needs clarifications for the no interrupt dispatcher case (MSP430) SDOCM00074079 BIOS 6: Need a way to set the M3 exception context and stack buffer addresses dynamically SDOCM00074061
674x/DM8168 and DM8148 should use interrupt id 14 and 15 for timer0 and
timer1 (consistent with other 6x timer/hwi use) SDOCM00074060
Improve config-time "Hwi already in use!" error messages to include fxn
name that is already plugged SDOCM00073997 Remove Hwi_disable/Hwi_restore from the Ducati Power_suspend API SDOCM00073875 Add documentation on using C++ with BIOS in the BIOS UG SDOCM00073835 BIOS 6: HeapMem_free() should Assert that the address passed to it is aligned properly. SDOCM00073713 Exception ROV should display "Exception Addr" and display NRP SDOCM00073616 BIOS 6: GateDualCore_sync() API stalls sometimes SDOCM00073615 BIOS 6: unicache APIs should use line-mode functions for smaller buffer sizes SDOCM00073562 ti/sysbios/family/arm/Settings.xs: 'Ducati' is in 'ti.catalog.arm.nda' not 'ti.catalog.arm' SDOCM00073541 Memory Chapter updates SDOCM00071673 Add Cortex-A8 support to SYS/BIOS SDOCM00071587 Reference (man, cdoc) pages for SYS/BIOS 6.30 are missing info for some modules SDOCM00068329 BIOS benchmarks are missing a documented benchmark SDOCM00064351 (MSP430) a few remaining RTA issues (MSP430X is almost OK, but small models have problems) SDOCM00060184 Hwi modules should document amount of stack space needed for context save SDOCM00058215 Linux installer inserts a bogus DSP/BIOS item on Applications Menu after installation SDOCM00053305 provide stack usage discussion in User's Guide SDOCM00047115 Add config parameter to delete terminated tasks in idle loop SDOCM00047111 C++ example in project wizard examples SDOCM00047079 Need to add Memory Protection (MPC) module for BIOS 6.x SDOCM00046890 BIOS 6.00 should supply default heap using HeapMem SDOCM00046248 GateMutex fails to raise assert when called from Swi
SYS/BIOS 6.x 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 6.x and to migrate applications from DSP/BIOS
5.x.
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 6.x
SYS/BIOS 6.x 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 6.x. 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 6.
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:
ID
Headline SDOCM00068360 No data displayed in RTA Exec Graph when attaching to running target SDOCM00064397 RTA crashes CCS 4.1 after a few reset/reload with USB emulator SDOCM00076612 Stairstep not perfect on MSP430 SDOCM00076606 BIOS 6.x UG should provide more info about configuring MSP430 interrupt stubs SDOCM00074130 ROV should reference kernel object names versus object addresses
The Timing Benchmarks for the MSP430 target have not been
determined.
The published numbers for MSP430 were inadvertantly duplicated from the
M3 timing benchmarks.
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.