|
Представление адреса. Как лучше. |
|
|
|
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 18 2018, 13:52
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(ViKo @ Jun 18 2018, 16:29)  Ваша идея, скажем, хитровата, но мне не приглянулась. Больше информации нужно держать в голове. Выше вы уже продемонстрировали, что надо иметь в виду.  С моей идеей как раз в голове держать ничего не надо. Всё делает компилятор. А с вашей - всё считать и контролировать размеры вручную. И "раз формулы задать" - это видимо Вы гений разработки, что сразу предусматриваете все хотелки заказчиков, которые появятся в течение жизни прибора, что потом и редактировать не надо. И сжимать-оптимизировать не надо. Ну не все такие гении: в реальной жизни карту размещения приходится править постоянно. А бывает что исходники пишутся сразу для линейки разных устройств, и карта такая собирается из множества кусков #if/#else/#end. Кстати - как Ваш метод совместим с условной компиляцией? Вы и остальные переменные в программах тоже define-ами размещаете? Или всё-таки доверяете компоновщику?
|
|
|
|
Сообщений в этой теме
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 19 2018, 06:17 jcxz Цитата(ViKo @ Jun 19 2018, 09:17) Повторю... Jun 19 2018, 07:36  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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|