2015-06-28 03:33 PM
Can anyone come in handy ...
Code for linker GCC.xxx_sram/flash.ldMEMORY
{
ROM (rx) : ORIGIN = 0x08000000, LENGTH = __
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = __
BITRAM (rw) : ORIGIN = 0x22000000, LENGTH = 2048K // - LENGTH(RAM) * 128
}
----
/* SRAM base address in the bit-band region*/
_sramflag = .;
sflagadres = ((_sramflag - ORIGIN(RAM)) << 5 );
.flag (NOLOAD):
{
. += sflagadres;
. = ALIGN(4);
_sflag = .;
KEEP(*(.flag))
. = ALIGN(128);
_eflag = .;
} > BITRAM
_eramflag = ((_eflag - _sflag) >> 5);
/* SRAM base address in the bit-band region*/
.bss (NOLOAD):
{
__bss_start__ = .;
. += _eramflag;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM
&sharpdefine _FLAG __attribute__ ((section(''.flag'')))
After that, any global flag automatically becomes atomic. In addition - reduced memory consumption. But the main thing - the simplicity of the ad.
volatile uint32_t tmp_name_flag _FLAG;
Translated from Russian by Google,????? ????????? ????? ??????????. #bit-band #bitband2015-06-29 05:17 AM
I use the same linker mapping to define single bit variables with bitband but I use a slightly different format:
MEMORY
{
FLASH0 (rx): ORIGIN = 0x08000000, LENGTH = 32K
FLASH1 (w): ORIGIN = 0x08008000, LENGTH = 32K
FLASH (rx): ORIGIN = 0x08010000, LENGTH = 960K
CCM (w): ORIGIN = 0x10000000, LENGTH = 64K
OTP (w): ORIGIN = 0x1FFF7800, LENGTH = 512
OTPLOCK (w): ORIGIN = 0x1FFF7A00, LENGTH = 16
SRAM1 (wx): ORIGIN = 0x20000000, LENGTH = 0x1AF00
SRAM2 (w): ORIGIN = 0x2001C000, LENGTH = 16K
SRAMBB (w): ORIGIN = 0x2235E000, LENGTH = 8K
BKPSRAM (w): ORIGIN = 0x40024000, LENGTH = 0xF80
BKPREG (w): ORIGIN = 0x40002850, LENGTH = 0x4c
SNMPBB (w): ORIGIN = 0x4249F000, LENGTH = 4K
BKPBB (w): ORIGIN = 0x42051380, LENGTH = 128
}
I reserve a small area in SRAM and backup SRAM (this is for an 'F4) and define those regions for bitband access. That gives me single bit non-volatile flags in the battery backup area (SNMPBB), handy for status tracking across power fails. The linker will also warn if I exceed the region size or try toplace code ina bitband region.
Jack Peacock
2015-06-29 06:13 AM