- Important information
- New features
- Known problems
- Program corrections
- User guide corrections
- Miscellaneous
- Release history
Important information
Accessing a bitfield in an sfr causes the compiler to read/write the whole sfr. This can cause unexpected problems if accessing the sfr has side effects, for example:
__no_init volatile union
Testing the U0RXDATA_bit.EMPTY will also read the U0RXDATA_bit.DATA at the same time, as it reads the whole sfr.
{
unsigned long U0RXDATA;
struct
{
unsigned long DATA : 8;
unsigned long : 23;
unsigned long EMPTY : 1;
} U0RXDATA_bit;
} @ 0x10013004;
unsigned char ReadVal()
{
while (U0RXDATA_bit.EMPTY==1) {} // wait
return (unsigned char) U0RXDATA_bit.DATA; // DATA has already been read here
}
Instead, read the whole sfr and test if it is valid.
unsigned char ReadVal()
{
signed long v;
while ((v = (signed long) U0RXDATA) < 0) {}
return (unsigned char) v;
}
New features
- Andes
- D25F
- CloudBear
- BM-310
-
[RISCV-1331] If the argument to __read_csr() is not a literal, the compiler crashes instead of emitting an error message.
None
None
None
-
[RISCV-780] The pins for SWO2 and nTRST are incorrectly marked in the figure showing a JTAG/SWD - MIPI-20 cable on page 16 of the IAR Debug probes User Guide for I-jet®.
-
[RISCV-747] The example project SiFive E31 Arty 35T > Timer interrupt SiFive E31 Arty 35T does not work after selecting the Download and Debug command.
-
None
-
None
Device support
This release adds support for the following cores