Цитата(ViKo @ Jun 18 2018, 15:56)
Не вижу увеличения size на размер страницы.
Да, там в комментарии надо читать как "Чтение len страниц", а не байт. Ну или на размер умножить.
Цитата(ViKo @ Jun 18 2018, 15:56)
Чем ваши [8], [6]... лучше моих * 8, * 9?
Наглядностью. Это у Вас сейчас там два элемента. А когда будет больше? Да ещё и вложенные? У меня будут просто вложенные структуры, а у Вас - сложные формулы для вычисления адресов.
Если скажем внутри вашей флешь вам нужно разместить скажем три разных сложных объекта такой структуры:
Код
struct JournalTyp1 { //каждая запись журнала занимает 2 страницы флешь
u8 head;
u16p8 fifo[16];
};
и два таких:
Код
struct JournalTyp2 { //каждая запись журнала занимает 1 страницу флешь
struct Record { //формат записи журнала
u8 typ;
u8 sost;
u8 data1[1000];
u8 data1[1517];
};
u8 head;
u8 map;
u8 flags;
u8 fifo[16][(sizeof(Record) + PAGESIZE - 1) / PAGESIZE];
};
среди прочих объектов.
То у меня структура флешь будет выглядеть просто и наглядно:
Код
struct DFLASH {
JournalTyp1 journalAA;
JournalTyp1 journalAB;
JournalTyp2 journalBA;
u8 firmware[80];
u8 reserved1[100];
JournalTyp1 journalAC;
u8 someData1[10];
JournalTyp2 journalBB;
u8 someData2[11];
};
А как будет у Вас? Приведите Ваш вариант?
Цитата(ViKo @ Jun 18 2018, 15:56)
Мои функции проще.
void SfmData_read(uint8_t *pbuf, uint32_t addr, uint32_t num);
Функция у Вас точно такая же как у меня. Если больше нравится, то можно написать макрос SfmData_read, вызов которого будет выглядеть так же.