Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для ushim
179 / 180 / 55
Регистрация: 01.06.2011
Сообщений: 507

Создание СУБД для микроконтроллеров

02.08.2014, 15:49. Показов 4641. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Мне необходимо хранить/обрабатывать данные на микроконтроллере. Для хранения я решил использовать СУБД или самописный аналог с минимально необходимым набором функций.

Собственно функции, которые необходимы:
  1. Создание/удаление таблицы
  2. Добавление/удаление столбцов
  3. Добавление/удаление/изменение данных
  4. Выборка данных по простому условию: столбец (=,<,<=,>,>=,<>) значение; составные условия, JOIN'ы и прочее не требуется.
  5. Поддерживаемые типы данных: char (boolean), integer[, string для названия столбцов]

В общем можно было бы сделать всё по простому:
1 байт - количество таблиц
(N*4) байт - адрес таблицы в файле
string - название таблицы (N байт название, NULL байт конец string)
1 байт - количество столбцов в таблице
(N*string) байт - названия столбцов
2 байта - индекс данных
N байты данных
NULL байт
... и т.д. много данных, много таблиц
Такая организация вполне бы подошла мне, если бы не одно "но" - при добавлении/удалении столбца/таблицы придётся двигать весь файл.

Есть какие-нибудь идеи как можно организовать по другому, чтобы не приходилось двигать много байтов после каждой операции добавления/удаления и чтобы не было много пустых байтов?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2014, 15:49
Ответы с готовыми решениями:

С для микроконтроллеров
Добрый день, хотел бы занятся программированием микроконтроллеров. Учусь в киевском политехническом институте, специально шёл на...

C для микроконтроллеров
Всем привет, изучаю программирование МК (микроконтроллеров) на С и не могу найти нормальной информации как это делать впринципе. Я...

C++ для микроконтроллеров
Мои наработки по использованию языка C++ для микроконтроллеров: -микроконтроллеры ATtiny2313, ATmego32 -компилятор IAR Embeddid...

7
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
03.08.2014, 13:07
Обязательно все хранить в одном файле? Если каждая таблица будет в отдельном файле, задача тривиальна.

Столбцы можно не удалять, а помечать пустыми.

Еще можно свести все типы данных к одному integer. Строку можно хранить в виде ее хэш-суммы.
0
 Аватар для ushim
179 / 180 / 55
Регистрация: 01.06.2011
Сообщений: 507
03.08.2014, 23:33  [ТС]
Цитата Сообщение от Vtulhu Посмотреть сообщение
Обязательно все хранить в одном файле? Если каждая таблица будет в отдельном файле, задача тривиальна.
Поскольку речь идёт о микроконтроллере, то поддержка файловой системы создаст больше трудностей, чем облегчит работу. Поэтому давайте искать решения для "одного файла".

Цитата Сообщение от Vtulhu Посмотреть сообщение
Столбцы можно не удалять, а помечать пустыми.
Есть идеи по их добавлению?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
04.08.2014, 07:58
1- в собственной памяти МК много не похранишь и о СУБД даже не заикайтесь. Максимум набор записей. Формат, как правило, наиболее удобный - дата-время-событие. Это может быть структура по 16 бит, 32 бита.
2- для хранения используется внешняя память, FLASH SPI чаще всего.
3- для больших объемов также можно использовать просто SD-карты с FAT. Есть готовые либы под МК (AVR, ARM и даже Ардуины). Тут воротите, что хотите с файлом на низком уровне, но следует учитывать, что ресурсы МК небезграничны.

http://microsin.ru/content/view/681/44/
http://microsin.net/programmin... ystem.html
http://avr-start.ru/?p=1849

Добавлено через 3 минуты
Типичный пример организации архива в ПЛК Segnetics SMH-2010 на основе МК ATMega128:
0
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
07.08.2014, 09:28
Добавьте индекс в структуру вашего столбца/таблицы и изменяйте только их для удаления/добавления/замены, тем самым не будете перемещать весь файл, а только изменять индексы, но длинна таблицы должна быть фиксированной. Еще можно использовать связанные списки, а отсутствующие таблицы/столбцы вычислять по указателю.
0
 Аватар для ushim
179 / 180 / 55
Регистрация: 01.06.2011
Сообщений: 507
07.08.2014, 17:31  [ТС]
Собственно что я придумал.
Вложения
Тип файла: 7z База данных.7z (49.7 Кб, 36 просмотров)
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
07.08.2014, 18:34
Нечитабельно.
1
10 / 10 / 0
Регистрация: 25.06.2009
Сообщений: 92
03.01.2015, 11:43
перезалейте в виде картинки! не всем нравится тот говн... визио
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2015, 11:43
Помогаю со студенческими работами здесь

Отладка ПО для микроконтроллеров
Добрый вечер. Я не так давно проектирую ПО для микроконтроллеров и столкнулся со сложностью отладки. Думаю, многие с этим сталкивались....

Программатор для микроконтроллеров PIC
Подскажите, пожалуйста, хороший, на данный момент программатор для микроконтроллеров PIC, и если не сложно, подскажите чем он лучше от...

Абстрактное ядро ОС для микроконтроллеров.
Сколько может весить ядро операционной системы для микроконтроллеров и что оно должно содержать и уметь? Обычно, когда мы на страницах...

Программированием на Си для микроконтроллеров
не так давно начал программировать на Си для микроконтроллеров ,но хелпаните условие : нажимаю 1 раз светодиод горит ,нажимаю второй...

Форматный вывод на Си для микроконтроллеров
Читал данную статью: ссылка И решил, что она может решить одну мою проблему, описанную здесь: ссылка, а именно мне не придется делить на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru