Вторая жизнь HP iPaq 214
Решил закрыть старый гештальд и собрать образ для сия детища от HP. Благо документации навалом, даташиты, в большинстве своём, опубликовали. От тогоже Oliford’а и парней которые портируют(али) Android (Не уверен что оно ещё живо).
Ковыря исходники U-Boot совместно с даташитами и смахивая скупые слёзы, поймал себя на мысли, что сюда весьма неплохо вписываются современные С++17 с его constexpr и повсеместным использованием ссылок, т.к. память на старте не инициализированна, да и никаких аллокаторов у нас нет, посему ограничимся стэком. Немного помучавшись, получился такой интерфейс для моргания диодами через GPIO:
Что скажите за такой подход в целом?
Я такой неделю назад выкинул. Хороший был аппарат, 10 лет назад.
Их как грязи на рынке, я новый в открытой коробке за 10 евро купил. Апарат весьма интересный, да и начинка весьма неплоха, имхо тогда ХПшники не смогли раскрыть потенциал чипа нормально на винмобле, а вот все болячки винды притащили
Если у тебя используется та самая идиома, которая позволяет вокруг операторов вызывать служебный код на основе raii — то да. Блин не могу вспомнить как оно зовётся, ну это, типа когда по operator [] возвращает rvalue которое в конструкторе/деструкторе например лочит мутех, и имеет оператор приведения на ссылку сутевого типа(честно сходу как с точкой сделать я х3, гораздо проще всё с operator -> и operator* ). Иначе, если ты локаешь весь cpu — это слегка не комильфо.
чёта нее до конца понял, у меня тут по operator[] возвращяется инстанс класса описывающий интерфейсы пина по ссылке.
Marwell pxa используют 4 набора регистров для управления 128 GPIO, и тут по сути мапинг происходит, для замены вот такого стиля на более читабельный:
Эмм, ну я примерно про такое(не компилил):
жуть какая, ты его специально запутывал?)) Я примерно понял о чем ты && и тд, да я этим пользуюсь. Т.к. пишу загрузчик/инициализатор то всё собирается с ключём -nostdlib, тут нет ни new, мьютексов, ничего))) Даже start пришлось объявить в extern «C» чтобы манглинг не лез и линковщик с ума не сходил.
походу надо нормальное описание в шапку закинуть
Я если честно — х3 как в этом вашем эмбедед устроенна синхронизация, но направление пина и значения на нём по идее должны атомарно задаваться? Чисто наивное предположение, ибо как оно на самом деле, я на 100% не знаю.
В случае диодов это наверное не роляет, а вот в случае привода ногоотрубательной машинки таки может.
_REG(0x40ff0010) |= 0x28; — это чисто теоретически вполне может быть атомарно, т.к. оба бита ты выставляешь разом, вопрос какова модель памяти.
А твой подход — говорит ‘это был вход, но ты сделай выход потупи такт, потом таки выстави туда напряжение’. За этот такт может кому-то ногу отрубить.
Т.е. если ты хочешь сахар за быстродействие, то в любом случае это должна бы была быть транзакция которая накапливает биты которые нужно выставить, а потом одним вызовом их выставляет.
Я примерно понял о чем ты && и тд, да я этим пользуюсь тут нет ни new, мьютексов, ничего
Наверное всё же не понял 🙂 Rvalue ссылка, это рука сама написала, косточка в порядке вызовов report , если этот код дописать до конпилябельного состояния.
Я не эмбедед, так мимокрокодил. Кароче смотри, есть регистры для управления GPIO, по неким адресам:
- 0x40ff0000 — Каждый бит задаёт направление пина 0-31
- 0x40ff0010 — Тут каждый бит соответствует текущему значению пина 0-31
- 0x40ff0020 — Тут каждый бит позволяет установить значение на пинах
- 0x40ff0030 — Каждый записанный сюда бит установит значение соотвествующего пина в 0
- На этом веселье не заканчивается
Часть пинов MultiFunctional, т.е. надо решить какой функционал они будут исполнять.
Если всё делать по «классике», то будет
UBoot да и Linux заворачивают это всё в несколько слоёв препроцессора, читать и править тяжело, я и решил попробовать что то более человекопонимаемое сделать.
Насчет атомарности операций я не уверен, в даташитах написано что писать в gpio в режиме input безопасно, да и ковыряние gpio происходит в начальной инициализации и индикации, всё остальное заворачивается в нормальные протоколы ssp/spi и тд. которые создаются на конкретных gpio.
В этом как бэ и идея, формирования иерархии
Да, это голимый сахар, но если он создаёт оверхед близкий к 0, то чёб нет?
А, ну если маски для направления, значения и т.п. разнесенны в памяти, то тут ты ничего нового не привнёс, оверхед дело десятое, пока не жмёт. По идее, для синхронизации должен быть какой то механизм, как минимум — тактовый генератор, вот что смущает.
Источник
Hp ipaq 214 linux
Нам понадобятся программа VirtualBox и Parted Magic
Если программа VirtualBox большинству юзеров известна, то об Parted Magic следует рассказать отдельно. Это готовое решение на базе Linux, рассчитанное на работу с LiveCD. Дистрибутив включает полноценную операционную систему. Последняя, в свою очередь, кроме управления разделами, может также производить настройку установленной системы, работать с сетью интернет, а также производить любые операции с данными (удаление, восстановление, перенос и прочее). Это одно из лучших решений для управления разделами в среде Linux, основанное на исходных кодах GParted. Мне лично данная ось понравилась простотой и быстрой загрузкой.
Итак, поставили VirtualBox и создаем машину без виртуальных дисков и с 256МВ памяти (больше-лучше!):
Затем в настройках CD/DVD-ROM указываем путь к образу Parted Magic, а в настройках USB включаем контроллер, поддержку USB2.0 и добавляем из списка имеющееся устройство (mass storage или reader):
Стартуем машину, в появившемся меню выбираем Default Settings (но если моник менее 1280х1024 — Alternate graphical server и далее — Start. using Xvesa), ждем пока загрузится.
Убеждаемся, что флешка воткнута и, если все верно, ее уже не видно из винды, кликаем на Partition Editor; Создаем primary-разделы fat16 (прим. 60М) и ext2 (ост.), жмем apply, по окончании процесса жмем close и выключаем машину, нажав right ctrl (хост-клавиша) и закрыв окно:
В раздел fat поместить файлы:
uImage-ipaq214-20100305.bin — переименовываем в uImage-ipaq214.bin
u-boot-ipaq214-20100305.bin — переименовываем в BLDIAG.NB0
boot-script.txt.uImage
В раздел ext2 распаковать файлы из angstrom-x11-image-20100305.tar
После распаковки там будет кучка папок
Файлы качать здесь
- Скачайте HaRET. Для простого запуска Linux вы можете использовать официальную программу с http://www.handhelds.org/moin/moin.cgi/HaRET, если же вы собираетесь заниматься разработкой или реверс инжинирингом, то возьмите мою версию на странице для скачивания.
- Скачайте последнюю версию U-Boot image (u-boot-ipaq214-xxxx.bin).
- Скачайте default.txt.
- Отредактируйте default.txt, задайте место нахождения скачанного вами u-boot-ipaq214-xxxx.bin для U-Boot.
- Разместите haret.exe, default.txt и u-boot-ipaq214-xxxx.bin в любой папке на вашем устройстве winCE.
- Скачайте последнюю версию образа ядра (uImage-ipaq214-20090322.bin) и сохраните её на разделе FAT16 флеш карточки как ‘uImage-ipaq214.bin’
- Отключите Wifi и Bluetooth. Выключите питание КПК и отключите все USB устройства и провода от вашего iPAQ.
- Отключите аккумулятор приблизительно на 10 сек.
- Вставьте батарею и дождитесь загрузки Windows.
- Если по какой-то причине включились Wifi/Bluetooth, отключите их.
- Запустите haret.exe.
- Тапните ‘run’ .
- Должен загрузиться U-Boot и вы сможете загрузиться с MMC карточки выбрав опцию 1.
Смущает только MMC в последнем пункте, а с SD что не получится загрузиться?
Сообщение отредактировал GrusWR — 18.09.11, 21:51
Источник
Hp ipaq 214 linux
Нам понадобятся программа VirtualBox и Parted Magic
Если программа VirtualBox большинству юзеров известна, то об Parted Magic следует рассказать отдельно. Это готовое решение на базе Linux, рассчитанное на работу с LiveCD. Дистрибутив включает полноценную операционную систему. Последняя, в свою очередь, кроме управления разделами, может также производить настройку установленной системы, работать с сетью интернет, а также производить любые операции с данными (удаление, восстановление, перенос и прочее). Это одно из лучших решений для управления разделами в среде Linux, основанное на исходных кодах GParted. Мне лично данная ось понравилась простотой и быстрой загрузкой.
Итак, поставили VirtualBox и создаем машину без виртуальных дисков и с 256МВ памяти (больше-лучше!):
Затем в настройках CD/DVD-ROM указываем путь к образу Parted Magic, а в настройках USB включаем контроллер, поддержку USB2.0 и добавляем из списка имеющееся устройство (mass storage или reader):
Стартуем машину, в появившемся меню выбираем Default Settings (но если моник менее 1280х1024 — Alternate graphical server и далее — Start. using Xvesa), ждем пока загрузится.
Убеждаемся, что флешка воткнута и, если все верно, ее уже не видно из винды, кликаем на Partition Editor; Создаем primary-разделы fat16 (прим. 60М) и ext2 (ост.), жмем apply, по окончании процесса жмем close и выключаем машину, нажав right ctrl (хост-клавиша) и закрыв окно:
В раздел fat поместить файлы:
uImage-ipaq214-20100305.bin — переименовываем в uImage-ipaq214.bin
u-boot-ipaq214-20100305.bin — переименовываем в BLDIAG.NB0
boot-script.txt.uImage
В раздел ext2 распаковать файлы из angstrom-x11-image-20100305.tar
После распаковки там будет кучка папок
Файлы качать здесь
- Скачайте HaRET. Для простого запуска Linux вы можете использовать официальную программу с http://www.handhelds.org/moin/moin.cgi/HaRET, если же вы собираетесь заниматься разработкой или реверс инжинирингом, то возьмите мою версию на странице для скачивания.
- Скачайте последнюю версию U-Boot image (u-boot-ipaq214-xxxx.bin).
- Скачайте default.txt.
- Отредактируйте default.txt, задайте место нахождения скачанного вами u-boot-ipaq214-xxxx.bin для U-Boot.
- Разместите haret.exe, default.txt и u-boot-ipaq214-xxxx.bin в любой папке на вашем устройстве winCE.
- Скачайте последнюю версию образа ядра (uImage-ipaq214-20090322.bin) и сохраните её на разделе FAT16 флеш карточки как ‘uImage-ipaq214.bin’
- Отключите Wifi и Bluetooth. Выключите питание КПК и отключите все USB устройства и провода от вашего iPAQ.
- Отключите аккумулятор приблизительно на 10 сек.
- Вставьте батарею и дождитесь загрузки Windows.
- Если по какой-то причине включились Wifi/Bluetooth, отключите их.
- Запустите haret.exe.
- Тапните ‘run’ .
- Должен загрузиться U-Boot и вы сможете загрузиться с MMC карточки выбрав опцию 1.
Смущает только MMC в последнем пункте, а с SD что не получится загрузиться?
Сообщение отредактировал GrusWR — 18.09.11, 21:51
Источник
Hp ipaq 214 linux
Нам понадобятся программа VirtualBox и Parted Magic
Если программа VirtualBox большинству юзеров известна, то об Parted Magic следует рассказать отдельно. Это готовое решение на базе Linux, рассчитанное на работу с LiveCD. Дистрибутив включает полноценную операционную систему. Последняя, в свою очередь, кроме управления разделами, может также производить настройку установленной системы, работать с сетью интернет, а также производить любые операции с данными (удаление, восстановление, перенос и прочее). Это одно из лучших решений для управления разделами в среде Linux, основанное на исходных кодах GParted. Мне лично данная ось понравилась простотой и быстрой загрузкой.
Итак, поставили VirtualBox и создаем машину без виртуальных дисков и с 256МВ памяти (больше-лучше!):
Затем в настройках CD/DVD-ROM указываем путь к образу Parted Magic, а в настройках USB включаем контроллер, поддержку USB2.0 и добавляем из списка имеющееся устройство (mass storage или reader):
Стартуем машину, в появившемся меню выбираем Default Settings (но если моник менее 1280х1024 — Alternate graphical server и далее — Start. using Xvesa), ждем пока загрузится.
Убеждаемся, что флешка воткнута и, если все верно, ее уже не видно из винды, кликаем на Partition Editor; Создаем primary-разделы fat16 (прим. 60М) и ext2 (ост.), жмем apply, по окончании процесса жмем close и выключаем машину, нажав right ctrl (хост-клавиша) и закрыв окно:
В раздел fat поместить файлы:
uImage-ipaq214-20100305.bin — переименовываем в uImage-ipaq214.bin
u-boot-ipaq214-20100305.bin — переименовываем в BLDIAG.NB0
boot-script.txt.uImage
В раздел ext2 распаковать файлы из angstrom-x11-image-20100305.tar
После распаковки там будет кучка папок
Файлы качать здесь
- Скачайте HaRET. Для простого запуска Linux вы можете использовать официальную программу с http://www.handhelds.org/moin/moin.cgi/HaRET, если же вы собираетесь заниматься разработкой или реверс инжинирингом, то возьмите мою версию на странице для скачивания.
- Скачайте последнюю версию U-Boot image (u-boot-ipaq214-xxxx.bin).
- Скачайте default.txt.
- Отредактируйте default.txt, задайте место нахождения скачанного вами u-boot-ipaq214-xxxx.bin для U-Boot.
- Разместите haret.exe, default.txt и u-boot-ipaq214-xxxx.bin в любой папке на вашем устройстве winCE.
- Скачайте последнюю версию образа ядра (uImage-ipaq214-20090322.bin) и сохраните её на разделе FAT16 флеш карточки как ‘uImage-ipaq214.bin’
- Отключите Wifi и Bluetooth. Выключите питание КПК и отключите все USB устройства и провода от вашего iPAQ.
- Отключите аккумулятор приблизительно на 10 сек.
- Вставьте батарею и дождитесь загрузки Windows.
- Если по какой-то причине включились Wifi/Bluetooth, отключите их.
- Запустите haret.exe.
- Тапните ‘run’ .
- Должен загрузиться U-Boot и вы сможете загрузиться с MMC карточки выбрав опцию 1.
Смущает только MMC в последнем пункте, а с SD что не получится загрузиться?
Сообщение отредактировал GrusWR — 18.09.11, 21:51
Источник