Цитата(GetSmart @ Sep 2 2011, 17:38)

Непонятно, как уже используется?
Я вас запутал. Имел в виду, что вариант этот уже используется.
Цитата(xemul @ Sep 2 2011, 17:47)

Вы можете на этапе компиляции сказать, по какому адресу живёт a? Вот и компилятор не может.
Я не могу, а keil может. Например, определение: "u32 *b = (u32*)(((u32)(&a) - 0x40000000) + 0x42000000);" работает. А вот стоит добавить что-то сложнее вычитания или сложения, то ошибка.
Цитата(xemul @ Sep 2 2011, 17:47)

"П-п-прведи". (С) Если что-то до такой степени мешает инициализировать b перед первым использованием, напишите свой init().
Я свой инит итак использую, но это не по феншую, и я думаю, что есть более хитрое решение.
Цитата(777777 @ Sep 2 2011, 18:19)

Ничченепонимаю. Ты можешь словами объяснить, куда должен указывать b?
b должен указывать туда, куда мы определим с помощью мегаформулы из адреса &а. Если конкретно, то в моем случае b указывает на начало a в битбенд области ОЗУ.