Тема адресована только программистам, желающим писйть свои программы для телефонов Motorola. Остальные не найдут здесь ничего полезного для себя.
Приложениям, запускаемым под управлением операционной системы телефона, на форуме посвящён целый раздел. Здесь - драйвера в помощь авторам операционных систем, дуалбутов, лоадеров и других самодостаточных программ
Я, как большой сторонник GNU GPL, поднимаю проект - GNU GPL база драйверов под железо разных телефонов Motorola.
Поскольку основной язык разработки GNU GPL проектов - C/C++, поддерживаю эту традицию и прошу писать драйвера на Си.
Возникает вопрос, как разбить драйвера на файлы. Моё предложение такое:
1) На каждое устройство в нептуне (RTR, KPP, DMAC, MQSPI) - отдельный файл
2) На каждое устройство за пределами нептуна (клавиатура, дисплей, PCAP, контроллер подсветки) - отдельный файл.
Что уже готово:
1) KPP (порт клавиатуры) для Neptune ULS/LTE/LTE2
2) Watchdog (Neptune ULS/LTE/LTE2)
3) RTR (Neptune ULS(?)/LTE/LTE2)
4) RTC (только PCRAM, для ULS(?)/LTE/LTE2)
5) Клавиатура для моторол серий C650 и E398, кроме джойстика - как он опрашивается, не разбирался; обнаружились проблемы - не все клавиши определяются корректно. Гарантированно корректно определяются 1, 3, 5
6) DMAC (контроллер доступа к памяти дисплея) (Neptune ULS/LTE) - кроме полностью автоматического режима передачи
7) nonATI-дисплей на C380/C390/C650 (SSD1783), с инитом из начального состояния
8) GPIO на Neptune ULS/LTE/LTE2 ("very alpha", почти не испытано, без защит на неверные аргументы)
9) Подсветка на C380/C390/C650 (работает через имеющееся GPIO, проверено)
10) Текстовая консоль на дисплее (с установкой размера области вывода, с автопрокруткой, управляющие коды не проверял)
11) Целочисленное деление
- кажется, иногда бывает криво
Что в обработке:
1) MQSPI - кодинг 50%, ещё будет тестирование, отладка
2) Watchdog - убрал некоторый "индуизм"
+перенос проекта на GNUARM и GNU Make
Что в ближайших планах
1) Доработка драйвера клавиатуры
2) MQSPI на Neptune ULS/LTE/LTE2
3) CAP (общий драйвер)
4) Опрос датчика зарядки, датчика USB-кабеля, "красной" кнопки, управление питанием USB, чтение-запись часов реального времени (высокоуровневые функции CAP)
Что в отдалённых планах:
1) Прерывания
2) Таймер
3) USB-идентификация и передача данных
4) Флеш-алгоритм для флеш-памяти Intel, с автодетектом типа флехи и размеров блоков.
5) Управление тактовой частотой
6) Аппаратный ускоритель хэширования
7) Прерывания
Что хотелось бы видеть:
1) ATI на Motorola серии E398
2) ATI-дисплей на Motorola серии E398
3) TransFlash на Motorola серии E398
4) Флеш-алгоритм для AMD
Для написания дуалбута ещё не хватает: MQSPI, PCAP, USB
Для написания лоадера ещё не хватает: MQSPI, PCAP, USB, флеш-алгоритма
Вместе с драйверами выкладываю тестовое приложение к ним - больше в качестве примера структуры проекта, которая тоже далека от идеально продуманной и подлежит обсуждению.
В идеале хочу видеть конфигуратор пакета драйверов по типу конфигуратора ядра линукса, чтобы можно было выбрать тип проца (Neptune ULS, LTE, LTE2) и набор железа (к примеру, RTR, RTC, Watchdog, KPP, MQSPI, DMAC, GPIO, подсветка типа C650, дисплей nonati, клавиатура типа C650, PCAP), потом составлялся файл с #define конфигурации и исходя из него собирался частично собранный эльф драйверов.
P. S. Прошу не использовать стандартные библиотеки Си, а общие #define выносить в отдельный файл libs/motolibs.h
Сообщение отредактировал motoprogger - 17.7.2008, 8:22
Приложениям, запускаемым под управлением операционной системы телефона, на форуме посвящён целый раздел. Здесь - драйвера в помощь авторам операционных систем, дуалбутов, лоадеров и других самодостаточных программ
Я, как большой сторонник GNU GPL, поднимаю проект - GNU GPL база драйверов под железо разных телефонов Motorola.
Поскольку основной язык разработки GNU GPL проектов - C/C++, поддерживаю эту традицию и прошу писать драйвера на Си.
Возникает вопрос, как разбить драйвера на файлы. Моё предложение такое:
1) На каждое устройство в нептуне (RTR, KPP, DMAC, MQSPI) - отдельный файл
2) На каждое устройство за пределами нептуна (клавиатура, дисплей, PCAP, контроллер подсветки) - отдельный файл.
Что уже готово:
1) KPP (порт клавиатуры) для Neptune ULS/LTE/LTE2
2) Watchdog (Neptune ULS/LTE/LTE2)
3) RTR (Neptune ULS(?)/LTE/LTE2)
4) RTC (только PCRAM, для ULS(?)/LTE/LTE2)
5) Клавиатура для моторол серий C650 и E398, кроме джойстика - как он опрашивается, не разбирался; обнаружились проблемы - не все клавиши определяются корректно. Гарантированно корректно определяются 1, 3, 5
6) DMAC (контроллер доступа к памяти дисплея) (Neptune ULS/LTE) - кроме полностью автоматического режима передачи
7) nonATI-дисплей на C380/C390/C650 (SSD1783), с инитом из начального состояния
8) GPIO на Neptune ULS/LTE/LTE2 ("very alpha", почти не испытано, без защит на неверные аргументы)
9) Подсветка на C380/C390/C650 (работает через имеющееся GPIO, проверено)
10) Текстовая консоль на дисплее (с установкой размера области вывода, с автопрокруткой, управляющие коды не проверял)
11) Целочисленное деление

Что в обработке:
1) MQSPI - кодинг 50%, ещё будет тестирование, отладка
2) Watchdog - убрал некоторый "индуизм"

+перенос проекта на GNUARM и GNU Make
Что в ближайших планах
1) Доработка драйвера клавиатуры
2) MQSPI на Neptune ULS/LTE/LTE2
3) CAP (общий драйвер)
4) Опрос датчика зарядки, датчика USB-кабеля, "красной" кнопки, управление питанием USB, чтение-запись часов реального времени (высокоуровневые функции CAP)
Что в отдалённых планах:
1) Прерывания
2) Таймер
3) USB-идентификация и передача данных
4) Флеш-алгоритм для флеш-памяти Intel, с автодетектом типа флехи и размеров блоков.
5) Управление тактовой частотой
6) Аппаратный ускоритель хэширования
7) Прерывания
Что хотелось бы видеть:
1) ATI на Motorola серии E398
2) ATI-дисплей на Motorola серии E398
3) TransFlash на Motorola серии E398
4) Флеш-алгоритм для AMD
Для написания дуалбута ещё не хватает: MQSPI, PCAP, USB
Для написания лоадера ещё не хватает: MQSPI, PCAP, USB, флеш-алгоритма
Вместе с драйверами выкладываю тестовое приложение к ним - больше в качестве примера структуры проекта, которая тоже далека от идеально продуманной и подлежит обсуждению.
В идеале хочу видеть конфигуратор пакета драйверов по типу конфигуратора ядра линукса, чтобы можно было выбрать тип проца (Neptune ULS, LTE, LTE2) и набор железа (к примеру, RTR, RTC, Watchdog, KPP, MQSPI, DMAC, GPIO, подсветка типа C650, дисплей nonati, клавиатура типа C650, PCAP), потом составлялся файл с #define конфигурации и исходя из него собирался частично собранный эльф драйверов.
P. S. Прошу не использовать стандартные библиотеки Си, а общие #define выносить в отдельный файл libs/motolibs.h
Сообщение отредактировал motoprogger - 17.7.2008, 8:22