Инструкция Bip | Разработка приложений для BipOS ( SDK )

MNVolkov

Разработчик
Команда форума
Сообщения
272
Реакции
2,026
Баллы
463
Ваше "умное" устройство
Amazfit Bip
  • Первое сообщение
  • #1
Разработка приложений для BipOS
Software Development Kit (SDK)
MNVolkov BipOS

Вводная часть
Начиная с версии 0.5 MNVolkov MOD полностью переработан код запуска приложений. Теперь каждое приложение - это отдельный файл, хранящийся в ресурсах. Формат исполняемых файлов Arm-elf (или просто "эльф"). Мод получил новое название BipOS. При запуске меню мода происходит сканирование ресурсов на наличие приложений. Для каждой прошивки разное количество ресурсов, а приложения всегда размещаются в конце. Поэтому загрузчик ищет ресурсы по сигнатуре Elf начиная с 930 ресурса. Из найденных приложений формируется список, который помещается в меню "приложения".
Для того чтобы повысить общее удобство и снизить количество несовместимостей разработана система "прошивконезависимых" приложений. Так один и тот же Калькулятор будет работать как на латин 1.1.5.12, так и на нелатин 1.1.2.05. без изменений (необходимо только разместить его в RES файле соответствующей версии). Независимость от прошивки удалось достигнуть за счет применения универсальной библиотеки libbip.a которая содержит адреса функций прошивки. После загрузки эльфа в оперативную память происходит пересчет внутренних адресов функций и переменных т.н. релокация, а так же подмена библиотечных адресов функций на реальные адреса функций в прошивке.


Среда разработки
Для разработки приложений понадобится среда разработки и компилятор. В качестве среды разработки я использую обычный Notepad++ . Наверное, можно настроить Code::Blocks или другую IDE я до этого не дошел, отложил на будущее. Установка специализированной IDE конечно повысит удобство разработки. На среде разработки останавливаться не буду.

Компилятор
Для сборки приложения я применяю GNU Embedded Toolchain for Arm. Для установки необходимо проделать следующие шаги:
  1. Скачать тулчейн можно тут:

    Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.


    Качаем файл gcc-arm-none-eabi-8-2019-q3-update-win32-sha2.exe ( или более свежую редакцию) с таким описанием: Windows 32-bit Installer (Signed for Windows 7 and later)
  2. Можно все установить по умолчанию, в конце установки установить все галочки
  3. Рекомендуется добавить в системный (не пользовательский) PATH путь до папки bin компилятора
Библиотека
Библиотека включает в себя как адреса функций прошивки, так и некоторые функции, которые написаны для облегчения разработки пользовательских приложений, например функции работы с меню. Библиотеку необходимо распаковать в папку на одном уровне с папками приложений. Путь до этой папки будет указан в сценарии сборки.
v.0.5.2
У вас нет разрешения на просмотр содержимого!

v.0.5.1
У вас нет разрешения на просмотр содержимого!

v.0.5
У вас нет разрешения на просмотр содержимого!


Пример приложения
Специально для облегчения вхождения подготовлен пример приложения на языке СИ template_app. Функционал простой: создается рабочий экран приложения, при нажатии в центр экрана меняется цвет фона и надписи.
Этот пример можно использовать в качестве шаблона. Для этого нужно создать новую папку приложения и скопировать в неё файлы примера. Наименование папки приложения в скрипте сборки берется в качестве служебного имени приложения.
Отображаемое в списке приложений наименование необходимо внести в файл label.txt При этом после наименования не должно быть каких либо символов или перевода строки.
Для сборки приложения подготовлен bat файл. Сборка осуществляется путем запуска bat файла внутри папки без параметров. Все параметры компилятора и линковщика совместимые с загрузчиком BipOS внесены в этот скрипт.
Приложение-шаблон:
У вас нет разрешения на просмотр содержимого!

Исходники на GitHub

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Сборка RES файла и загрузка в часы
Для запуска эльфа необходимо загрузить его в часы. Для этого необходимо поместить его в RES файл. Для сборки RES файлов разработана специальная программа для ПК (Win32) с помощью которой можно добавить в ваш существующий RES файл необходимые приложения. ResPack.exe - это консольное приложение для выполнения простых операций с RES фалами Amazfit Bip: отображение содержимого с краткой информацией по каждому ресурсу, распаковка сырых данных ресурсов, выполнение выравнивания строковых ресурсов версии 61 и 69 для решения проблемы пропадания текста при загрузке кастомных ресурсов, а также добавления произвольных файлов в ресурсы.
Для добавления в существующий RES файл файлов приложений запускаем из командной строки:
Код:
ResPack -a <выходной_RES_файл> <входной_RES_файл> файлы которые надо добавить
Полученный RES файл прошивается в часы обычным способом, например, через GadgetBridge. Для обновления данных в оперативной памяти часы после обновления ресурсов необходимо перезагрузить. Сделать это можно либо через меню настроек выключив и включив часы.
У вас нет разрешения на просмотр содержимого!


Описание некоторых функций и жизненный цикл приложения
Видеоинструкция по прошивке и встраиванию приложений в ресурсы
Несмотря на то, что использование загрузчика значительно снижает вероятность окирпичивания ваших часов в процессе разработки, необходимо все же соблюдать меры осторожности. Необходимо продумывать алгоритмы работы вашего приложения, исключать бесконечные циклы, запись в область памяти специально не предназначенную для использования вашим приложением и т.д. Все что вы делаете, вы делаете на свой страх и риск, никто ответственности за последствия ваших действий не несет. Данная инструкция носит характер информационный, перед выполнением любых действий вы должны осознавать все что собираетесь сделать и какие последствия наступят, принять эти вероятные последствия.


Обсуждение процесса разработки ведется в этой теме.
 

Вложения

Последнее редактирование модератором:

erekoze

Участник
Сообщения
36
Реакции
66
Баллы
33
Ваше "умное" устройство
Amazfit Bip
Наверное Вы до них не дошли. Приложения в самом конце. Необходимо обязательно выбрать прошивку с BipOS 0.5.2 и ресурсы.
Да я нашел приложения. Спасибо. Но там все те же приложения, что и здесь на форуме. Хотелось бы иметь возможность выкладывать туда свои приложения. Как платно, так и бесплатно.
 

MNVolkov

Разработчик
Команда форума
Сообщения
272
Реакции
2,026
Баллы
463
Ваше "умное" устройство
Amazfit Bip
Да я нашел приложения. Спасибо. Но там все те же приложения, что и здесь на форуме. Хотелось бы иметь возможность выкладывать туда свои приложения. Как платно, так и бесплатно.
Такая возможность есть. Если есть желание - можно включить авторский контент в конструктор LikeApp.
 

erekoze

Участник
Сообщения
36
Реакции
66
Баллы
33
Ваше "умное" устройство
Amazfit Bip
Такая возможность есть. Если есть желание - можно включить авторский контент в конструктор LikeApp.
Как что нибудь годное напишу (если время будет), может выложу. Спасибо!!!
 

ugers

Участник
Сообщения
30
Реакции
114
Баллы
38
Ваше "умное" устройство
Amazfit Bip
3 - мало. Сделайте минимум 12. Иначе, когда-нибудь, получите промах по памяти.
А почему 12? Можете рассказать?
Ведь согласно описанию
char - размер 1 байт.
short - размер 2 байта
int - размер 2 или 4 байта
long - размер 4 байта
 

erekoze

Участник
Сообщения
36
Реакции
66
Баллы
33
Ваше "умное" устройство
Amazfit Bip
Кто нибудь может показать фрагмент кода, как отобразить на экране свою картинку? Заранее спасибо!
 

AlexJey

Разработчик
Команда форума
Сообщения
375
Реакции
958
Баллы
148
Ваше "умное" устройство
Amazfit Bip
А почему 12? Можете рассказать?
Ведь согласно описанию
char - размер 1 байт.
short - размер 2 байта
int - размер 2 или 4 байта
long - размер 4 байта
А строка символов, которая будет предоставлять число -2000000000, сколько будет занимать байт? Плюс завершающий символ с кодом 0 ;)
 

MNVolkov

Разработчик
Команда форума
Сообщения
272
Реакции
2,026
Баллы
463
Ваше "умное" устройство
Amazfit Bip
Кто нибудь может показать фрагмент кода, как отобразить на экране свою картинку? Заранее спасибо!
Изучите функцию draw_frame здесь

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



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

erekoze

Участник
Сообщения
36
Реакции
66
Баллы
33
Ваше "умное" устройство
Amazfit Bip

erekoze

Участник
Сообщения
36
Реакции
66
Баллы
33
Ваше "умное" устройство
Amazfit Bip
Изучите функцию draw_frame здесь

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Для этого опубликованы исходники, чтобы можно было на примерах понять как что работает.
Все ясно. Большое спасибо, использовал как образец в Магическом шаре :)
Авто объединение сообщений:

Новый вопрос :)
Как сохранять данные приложения?
Т.е. использовать функции:
extern int ElfReadSettings (int index_listed, void* buffer, int offset, int len); // чтение секции настроек конкретного эльфа
extern int ElfWriteSettings (int index_listed, void* buffer, int offset, int len); // запись секции настроек конкретного эльфа
Хотелось бы сохранять данные переменных между запусками приложений.
Заранее спасибо!
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу