|
Представление адреса. Как лучше. |
|
|
|
Jun 18 2018, 10:04
|
Профессионал
    
Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jun 19 2018, 06:17
|

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

|
Да, я гений. Я умею задать дефайнами размеры, варианты. Слышали такое: #ifdef, #else, #endif? Я сам себе заказчик, творю, что хочу. А если что-то предлагают, тоже делаю, если идет на пользу прибору. А что было вам не описать структуру с нормальными размерами? Повторю вопрос, как вы контролируете, что структура не вылезла за размеры памяти? Вот я знаю, сколько страниц в памяти, на столько и умножаю размер, не более.
|
|
|
|
|
Jun 19 2018, 07:36
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(ViKo @ Jun 19 2018, 09:17)  Повторю вопрос, как вы контролируете, что структура не вылезла за размеры памяти? В смысле? Вам надо объяснить как sizeof(struct FLASH) умножить на размер страницы?  И что значит "нормальные размеры"? Структура у меня описывается теми элементами, которыми идёт распределение памяти. Если память распределяется байтами (в тех случаях, когда так и нужно), то каждый байт структуры == байту в памяти; если страницами - каждый байт структуры == странице; если секторами (стирания) - каждый байт структуры == сектору. Эта структура задаёт не какую-то переменную в памяти, она задаёт ПОРЯДОК РАСПРЕДЕЛЕНИЯ ДАННОГО РЕСУРСА (СТРАНИЦ В НЕКОЕЙ ПАМЯТИ)!! Вы похоже этого никак понять не можете. Зациклились на каких-то переменных в памяти.... Причём они тут??? Точно так же например у меня структурой задаётся распределение пространства адресов на CAN-шине. Тоже никаких переменных данного типа при этом не создаётся.
|
|
|
|
|
Jun 19 2018, 07:40
|

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

|
Цитата(jcxz @ Jun 19 2018, 10:36)  В смысле? Вам надо объяснить как sizeof(struct FLASH) умножить на размер страницы?  Объясните, что написали здесь, это понятно, дайте ответ на вопрос. Где и когда вы сравниваете размер вашей структуры (в байтах, умноженных на размер страницы) и размер памяти? Кому вы доверяете эту процедуру, или просто забили, на авось? Да что там понимать? Не понятно только, зачем? Вы не могли в своей структуре задать размеры объектов, кратных размеру страницы? Умножение вам в помощь.
|
|
|
|
Сообщений в этой теме
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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|