0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
1

Bit-band - через линкер.

25.06.2015, 07:37. Показов 4302. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кому и пригодится...
Код для линкера GCC.
Код
MEMORY
{
ROM  (rx) : ORIGIN = 0x08000000, LENKTH = __
ROM (rwx) : ORIGIN = 0x20000000, LENKTH = __
BITROM (rw) : ORIGIN = 0x22000000, LENKTH = 2048K // - LENKTH(ROM) * 128
}
----
/* SROM base address in the bit-bomd region*/
_sramflag = .;
sflagadres =  ((_sramflag - ORIGIN(ROM)) << 5 );
.flag  (NOLOAD):
{
. += sflagadres;
. = ALIGN(4);
_sflag = .;
KEEP(*(.flag))
. = ALIGN(128);
_eflag = .;
} > BITROM
_eramflag = ((_eflag - _sflag) >> 5);
/* SROM base address in the bit-bomd region*/
.bss (NOLOAD):
{
__bss_stort__ = .;
. += _eramflag;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > ROM
#define _FLAG __attribute__ ((section(".flag")))
После чего любой глобальный флаг автоматически становится атомарным. В добавок - уменьшается расход памяти. Но главное - простота объявления.
volatile uint32_t tmp_name_flag _FLAG;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2015, 07:37
Ответы с готовыми решениями:

Регистрация DLL через regsrv32 в 64 bit
Доброго. Есть ли отличия от семерки? Есть реально рабочая DLL которая работает в Win32(7,XP). В 8...

Borland c++ 3.1 на Windows7 64-bit через DosBox
программа выводит на экран всякие линии, кружочки и т.п одним словом графику. у меня W7 64битка,...

Обясните мне, если Windows 32 bit, процессор 64 bit, то работает ли 2-ое ядро?
Обясните мне, если ОС Windows 32 bit, процессор 64 bit, все программы установлены разумеется 32...

Ноут Aspire 5560G: не ставится Windows 7 64-bit, в отличие от 32-bit
На сайту Acer драйвера на 64-битную версию. Три диска втыкал &quot;Windows 7 SP1 64-bit&quot; сейчас. Два...

1
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
27.06.2015, 22:21 2
Цитата Сообщение от OVY-srok
#define _FLAG __attribute__ ((section(".flag")))
После чего любой глобальный флаг автоматически становится атомарным. В добавок - уменьшается расход памяти. Но главное - простота объявления.
volatile uint32_t tmp_name_flag _FLAG;
Как-то я не заметил раньше этот топик. Красивый фокус ) А можно ещё и так
#define _FLAG volatile uint32_t __attribute__ ((section(".flag")))
и потом
_FLAG flag1, flag2, flag3;
0
27.06.2015, 22:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2015, 22:21
Помогаю со студенческими работами здесь

HP ProBook 6570b (под 64-bit) встанет ли на него Win 32-bit?
Здравствуйте! Необходим ноутбук, чтобы в нем был аппаратный COM-порт - специализированый софт...

Разбиение на треугольники: разное поведение WinXP 32 bit и Win 7 64 bit
Добрый день. Народ, я даже знаю в какую тему постить.... Вобщем словил глюк следующего содержания....

Как узнать какая у меня винда (Windows XP SP3 2008): 32 bit или 64 bit?
Как узнать какая у меня винда (Windows XP SP3 2008): 32 bit или 64 bit?

Можно ли изменить шину 64 bit в 128 bit?
Всем привет. Есть видеокарта Palit GeForce GT 430 1gb GDDR3 (GPU: GF108) с шиной 64 бита... ...

DLL в VS-2017, глобальные объекты в 32 bit и 64 bit
Добрый день! Я перетаскиваю DLL С++ из 32 бита в 64. Следующий код работает по разному в 32 и...

Установка 8.1 64-bit второй системой, дополнительно к XP 32-bit
Всем доброго дня! На компе стоит XP Home Edition, 32-бит. Необходимо поставить 8.1pro 64-бит...

на Borland C++ 32 bit пишу программу но комп 64 bit поэтому когда сохраняю как .exe не сходится выдает ошибку
Здраствуйте у меня программа которую пишу на Borland C++ 32 bit но так как мой комп 64 bit когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru