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

 
 
> Представление адреса. Как лучше.
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 18 2018, 11:03
Сообщение #2


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

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



Задаю дефайнами нужные мне адреса в SPI flash, выравненные по началу страниц, и использую их в виде целого числа.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 18 2018, 11:10
Сообщение #3


Гуру
******

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



Цитата(ViKo @ Jun 18 2018, 14:03) *
Задаю дефайнами нужные мне адреса в SPI flash, выравненные по началу страниц, и использую их в виде целого числа.

А когда нужно изменить размер какого-то элемента - пересчитываете все эти дефайны врукопашную? biggrin.gif
Опишите структуру своей флешь через struct {...} и не конкурируйте с компилятором - времена рукопашной компоновки памяти давно прошли.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 18 2018, 11:18
Сообщение #4


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

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



Цитата(jcxz @ Jun 18 2018, 14:10) *
А когда нужно изменить размер какого-то элемента - пересчитываете все эти дефайны врукопашную? biggrin.gif
Опишите структуру своей флешь через struct {...} и не конкурируйте с компилятором - времена рукопашной компоновки памяти давно прошли.

Зачем вручную? Препроцессор считает.
Код
#define SFM_SYSTEM_BASE        0x00060000U            //!< SFM System Variables
...
#define SFM_SET1        (SFM_SYSTEM_BASE + SFM_PAGESIZE *  8)
#define SFM_SET2        (SFM_SYSTEM_BASE + SFM_PAGESIZE *  9)
...


Предлагаете описать в виде структуры из массивов, а потом вытягивать адреса членов этой структуры? Можно и так. Зато я точно знаю, где что расположено и сколько страниц занимает, а вам считать придется. А вдруг переполните размер памяти?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 18 2018, 11:30
Сообщение #5


Гуру
******

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



Цитата(ViKo @ Jun 18 2018, 14:18) *
Зачем вручную? Препроцессор считает.

Ну да! Это пока у вас всего пара таких переменных и когда одного размера/типа.
А когда их будет 100, да все разные - кто будет все эти 8,9,...,99 пересчитывать?
Посмотрите насколько удобнее и понятнее:
Код
struct { //каждый байт структуры - страница FLASH
  char SFM_SET1;
  char SFM_SET2;
  ...
};
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 18 2018, 11:35
Сообщение #6


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

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



Цитата(jcxz @ Jun 18 2018, 14:30) *
//каждый байт структуры - страница FLASH

А если массив на 8 страниц?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 18 2018, 11:39
Сообщение #7


Гуру
******

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



Цитата(ViKo @ Jun 18 2018, 14:35) *
А если массив на 8 страниц?

char massiv[8]; спасёт отца демократии? rolleyes.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 18 2018, 11:45
Сообщение #8


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

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



Цитата(jcxz @ Jun 18 2018, 14:39) *
char massiv[8]; спасёт отца демократии? rolleyes.gif

Сомнительной красоты решение.
А как вы потом превращаете эти переменные в адрес? А куда, вообще, компилятор положит эту громадную структуру? В какую память? Пардон, не настолько громадную... в 256 раз меньше, но все равно.
У меня код конфигурирования ПЛИС хранится в этой памяти. Половину объема занимает. Предлагаете мне килобайт ОЗУ или ПЗУ потратить для имитации SPI памяти? Можно определить тип структуры, но ее по некоему (нулевому?) адресу нужно прописать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Представление адреса. Как лучше.   Jun 18 2018, 10:04
|- - 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   Да, я гений. Я умею задать дефайнами размеры, вари...   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


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

 


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


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