реклама на сайте
подробности

 
 
> Представление адреса. Как лучше.
Jenya7
сообщение Jun 18 2018, 10:04
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



У меня при обращении к памяти (чтение, запись) нужно передавать адрес. Адрес состоит из нескольких составляющих (на картинке).Изначально была такая конструкция
Код
typedef struct {
    uint32_t     page_add  :  6;
    uint32_t     block_add : 11;
    uint32_t    reserved  : 15;
}g_row_address;
typedef union{
    uint32_t all;
    g_row_address bits;
}g_flashrow_address;
Может так и проще работать но я как то сравнивал листинги и такой код компилирует в два раза больше инструкций чем mask&shift.Я подумал сделать по простому
Код
#define ROW_ADDRESS(BLOCK_ADDR,PAGE_ADDR)  (BLOCK_ADDR|(PAGE_ADDR<<6))
но адрес 17-битный. то есть возникает тот же гемор сдвигать влево а потом вправо. или я что то упускаю?

Сообщение отредактировал Jenya7 - Jun 18 2018, 10:04
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Jun 19 2018, 06:17
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Да, я гений. Я умею задать дефайнами размеры, варианты. Слышали такое: #ifdef, #else, #endif?
Я сам себе заказчик, творю, что хочу. А если что-то предлагают, тоже делаю, если идет на пользу прибору.
А что было вам не описать структуру с нормальными размерами?
Повторю вопрос, как вы контролируете, что структура не вылезла за размеры памяти? Вот я знаю, сколько страниц в памяти, на столько и умножаю размер, не более.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 19 2018, 07:36
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Jun 19 2018, 09:17) *
Повторю вопрос, как вы контролируете, что структура не вылезла за размеры памяти?

В смысле? Вам надо объяснить как sizeof(struct FLASH) умножить на размер страницы? wacko.gif
И что значит "нормальные размеры"? Структура у меня описывается теми элементами, которыми идёт распределение памяти.
Если память распределяется байтами (в тех случаях, когда так и нужно), то каждый байт структуры == байту в памяти; если страницами - каждый байт структуры == странице; если секторами (стирания) - каждый байт структуры == сектору.
Эта структура задаёт не какую-то переменную в памяти, она задаёт ПОРЯДОК РАСПРЕДЕЛЕНИЯ ДАННОГО РЕСУРСА (СТРАНИЦ В НЕКОЕЙ ПАМЯТИ)!! Вы похоже этого никак понять не можете. Зациклились на каких-то переменных в памяти.... Причём они тут??? wacko.gif
Точно так же например у меня структурой задаётся распределение пространства адресов на CAN-шине. Тоже никаких переменных данного типа при этом не создаётся.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Представление адреса. Как лучше.   Jun 18 2018, 10:04
- - ViKo   Задаю дефайнами нужные мне адреса в SPI flash, выр...   Jun 18 2018, 11:03
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 14:03) Задаю д...   Jun 18 2018, 11:10
|- - ViKo   Цитата(jcxz @ Jun 18 2018, 14:10) А когда...   Jun 18 2018, 11:18
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 14:18) Зачем в...   Jun 18 2018, 11:30
|- - ViKo   Цитата(jcxz @ Jun 18 2018, 14:30) //кажды...   Jun 18 2018, 11:35
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 14:35) А если ...   Jun 18 2018, 11:39
|- - ViKo   Цитата(jcxz @ Jun 18 2018, 14:39) char ma...   Jun 18 2018, 11:45
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 14:45) А как в...   Jun 18 2018, 12:24
- - Jenya7   я что то утерял нить повествования. проблема в то...   Jun 18 2018, 12:01
|- - ViKo   Цитата(Jenya7 @ Jun 18 2018, 15:01) я что...   Jun 18 2018, 12:12
|- - Jenya7   Цитата(ViKo @ Jun 18 2018, 18:12) Храните...   Jun 18 2018, 12:16
- - ViKo   Я описываю структуры typedef-ми. Их точно никто ни...   Jun 18 2018, 12:28
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 15:28) Я описы...   Jun 18 2018, 12:44
- - ViKo   Не вижу увеличения size на размер страницы. Чем ва...   Jun 18 2018, 12:56
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 15:56) Не вижу...   Jun 18 2018, 13:13
- - ViKo   Мне раз формулы задать, сложностей не вижу. Объект...   Jun 18 2018, 13:29
|- - jcxz   Цитата(ViKo @ Jun 18 2018, 16:29) Ваша ид...   Jun 18 2018, 13:52
||- - ViKo   Цитата(jcxz @ Jun 19 2018, 10:36) В смысл...   Jun 19 2018, 07:40
|- - jcxz   Цитата(ViKo @ Jun 19 2018, 09:17) Да, я г...   Jun 19 2018, 07:48
- - ViKo   Замените в моих #define SFM_SET1 (SFM_SYSTE...   Jun 19 2018, 08:03
|- - jcxz   Цитата(ViKo @ Jun 19 2018, 11:03) Заменит...   Jun 19 2018, 08:37
- - ViKo   В кусты, так в кусты. Собственно, всё уже выяснили...   Jun 19 2018, 08:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016