пятница, 23 марта 2018 г.

Игра платформер на C++






Под Linux с использованием SDL, пока только основа.
Написано в процессе обучения сына основам программирования :).

Исходники тут.

Бинарники для Win32 и Linux тут.


PS: Версия с использованием SDL2 и OpenGL рендерингом:

картинка

Бинарники Win32 и Linux x64 тут.

четверг, 26 октября 2017 г.

Webmin модуль для управления WiFi сетями.

Простой модуль webmin для управления WIFI сетями.
Является оберткой для network-manager, точнее его интерфейса командной строки nmcli.






лежит тут.

среда, 28 июня 2017 г.

среда, 3 мая 2017 г.

Аппаратное декодирование на rk3066 rk3188 rk3288

Аппаратное декодирование видео для rk3066 rk3188 rk3288.

На этих SOCах стоят видео декодеры одного типа (6731) но разной ревизии, также на rk3288 дополнительно стоит декодер HEVC .

Исходники и компилированные файлы  тут. (без HEVC)

Схема реализации для rk3066 и rk3188.




export VDPAU_DRIVER=rk3x

mplayer -vo vdpau -vc ffmpeg12vdpau,ffodivxvdpau,ffh264vdpau, [filename]

пятница, 28 апреля 2017 г.

SmartCar

Робот машина (макет) на базе шасси 3х2 и клона arduino pro mini из китая.
Управление старым пультом (неизвестного происхождения) через инфракрасный канал.



Можно как непосредственно управлять в режиме реального времени так и задавать программу движения (программировать).
Спереди 2 концевых выключателя для остановки машины в случае столкновения с препятствием.

набросок схемы и программа тут


четверг, 28 января 2016 г.

Amlogic S812 легкий Dual Boot

Дано: андроид приставка М8 с s812 на борту, плата M8 V8_8 20150923, прошивка k200.bcm4335.2015.201510211111 (U-boot-00000-g92ff5df-dirty(m8_n200C_v1@) (Oct 21 2015 - 10:20:19)).

Задача: сделать двойную загрузку линукс/андроид с минимальными затратами.

Проект в стадии реализации прерван...

Что нужно...
  1. Берем исходники ядра и компонентов с http://openlinux.amlogic.com:8000/download/ARM/, (хотя можно попробовать с родным ядром просто изменив строку параметров ядра.). Родной конфиг и дерево устройств DTS можно легко добыть из родной прошивки или из дампа  раздела boot.
  2. Собираем ядро в формате uImage. Примерный порядок действий  http://www.cnx-software.com/2014/03/10/amlogic-gpl-source-code-release-kernel-3-10-u-boot-and-drivers-wi-fi-nand-tvin-mali-gpu/
  3. Создаем recovery.img. (например так mkbootimg --kernel uImage --ramdisk ramdisk.gz --second myboard.dtb --base 10000000 --pagesize 2048 -o recovery.img)
  4. SD карту разбиваем на два раздела, первый (20-30мб) форматируем fat32 и кидаем туда recovery.img, второй делаем ext4 и развертываем туда любимый linuxroot.
  5. Грузимся с зажатой кнопкой для восстановления - должно загрузится новое ядро.


кусок Uboot лога:
update by key...
Enter USB burn
Try connect time out 1001, 1000, 1318
 sdio_detect return 1
[mmc_init] SDIO Port B:0, if_type=7, initialized OK!
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit

** Unable to open "aml_sdc_burn.ini" from mmc 0:1 --- file not exist**
reading aml_autoscript

** Unable to read "aml_autoscript" from mmc 0:1 **
enter recovery
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit
reading recovery.img

6811731 bytes read
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.10.33
   Image Type:   ARM Linux Kernel Image (lzo compressed)
   Data Size:    6784865 Bytes = 6.5 MiB
   Load Address: 00208000
   Entry Point:  00208000
   Verifying Checksum ... OK
    Ramdisk start addr = 0x12679000, len = 0x427
    Flat device tree start addr = 0x12679800, len = 0x547a magic=0xedfe0dd0
   Uncompressing Kernel Image ... OK

простая консоль на последовательный порт для отладки (в initramfs):

/bin/sh -i </dev/ttyS0 >/dev/ttyS0 2>&1