SDCC отстой
dim_kut
Разочаровал меня SDCC. Размер Hex-кода растет очень быстро по мере написания программы и она перестает помещаться в память. Когда компилятор видит операцию деления, он похоже вставляет всю floating_point-библиотеку и hex сразу подрастает на ~10 кБ.

Буду пробовать XC8 от Microchip.
Метки: , ,

SDCC
dim_kut
Поставил SDCC 3.5.0  и пытаюсь откомпилировать программку для PIC-микроконтроллера. Наткнулся на ошибку, вроде:

lamp_meter.asm:283:Message[312] Page or Bank selection not needed for this device. No code generated.
message: Using default linker script "/opt/gputils/share/gputils/lkr/16f676_g.lkr".
warning: Relocation of section "UDL_idata_0" failed, relocating to a shared memory location.
warning: Relocation of section "UDL__modsint_0" failed, relocating to a shared memory location.
warning: Relocation of section "UDL_lamp_meter_0" failed, relocating to a shared memory location.
warning: Relocation of section "UDL__moduint_0" failed, relocating to a shared memory location.
warning: Relocation of section "ID_idata_0" failed, relocating to a shared memory location.


Весь интернет ею завален.
Причем иногда, при такой ошибке код все же генерируется. И люди говорят, что он работает, если залить в контроллер. Ну в общем не зря у SDCC PICи до сих пор в бета статусе. Я понял, что:
1. Это какое-то непонимание между gputils и sdcc.
2. Она проявляется только на определенных PICах. Вот на pic16f676  ошибка есть, а на pic16f688, pic16f886 нет.

И надо сказать, код получается заметно большего объема, чем у HI-TECH PICC. Раза так в 2 больше. Платные компиляторы все-таки получше работают.
Метки: , , ,

PuppyRus-Arch. Автозагрузка.
dim_kut
Для меня тут встал вопрос - как добавить несколько команд в автозагрузку. Решение подсмотрел здесь. Применительно к нашему фругалу, это выглядит так:

1. Создаем /etc/systemd/system/rc-local.service
Читать дальше...Свернуть )
2. Создаем скрипт /etc/rc.local с нужными командами.
3. Включаем:
  systemctl enable rc-local.service
В PRA надо с sudo. Результатом работы этой команды будет ссылка в /etc/systemd/system/multi-user.target.wants
4. Берем файлы /etc/systemd/system/rc-local.service, /etc/rc.local и ссылку и включаем в модуль 001-BASE.

Пример простой, и помогает в понимании systemd.
Метки: , ,

Готовые кросс-компиляторы
dim_kut
http://sourcery.mentor.com/public/gnu_toolchain/
Метки: ,

Как распаковать initrd диска Касперского
dim_kut

Распаковка
# cat rescue.igz | lzma -d | cpio -id

Запаковка
# find . |  cpio -o -H newc | lzma -z > ../rescue.igz


Нарезка файлов с помощью split
dim_kut
http://habrahabr.ru/post/43260/
Метки: ,

Согласование уровней 5V и 3.3V
dim_kut
Нашел две простые схемы на транзисторах:
http://creativeelectron.net/blog/2009/10/circuit-transistor-based-3-3v-5v-level-translator/
http://www.rocketnumbernine.com/2009/04/10/5v-33v-bidirectional-level-converter

Вариант подключения консоли
dim_kut
Вот ещё вариант как подключиться к 20-контактному разъему вашей электронной книги и получить консоль.
Попроще чем у меня вышло, к тому же через USB.

e17, shellelementary
dim_kut
Собрал e17 0.17.1 и efl 1.7.5 под PuppyRus-Icewm-13.01 - http://www.mediafire.com/?ugu5vgvhk3a5c
Форум

Нашел интересную программку - shellelementary.
Для построения графических диалогов в шелл-скриптах.
Но пока она довольно простая. И проект, похоже заброшен.
Скрин

Некоторые соображения по сборке ядра Linux
dim_kut
Мой опыт по сборке ядра Linux
Читать дальше...Свернуть )

Source Navigator
dim_kut
Нашел интересную оболочку - что-то вроде Source Insight, но:
а) бесплатная
б) под Linux

Позволяет осмысленно передвигаться по C/C++-проекту и не только. Вид имеет старомодный, по причине использования tk. Но для тех, кому функционал важнее красивых кнопочек, программа в самый раз.
Статья на ЛОРе.

SN-NG-4.4.sfs-модуль    
Метки: , ,

arm-ы тоже греются
dim_kut
Как-то сидел я за pandaboard-ой и собирал на ней efl-e17. С 3-4 раза наконец собралось, я радостно запускаю .... и вижу, что платка работает раз в 5 медленнее, чем обычно. Выключил, потрогал камень - горячий, рука не терпит.  После продолжительного отдыха плата заработала как обычно.

Я это к тому, что если в вашем планшете нет вентилятора, это ещё не значит, что процессор не греется. Это значит, что охлаждение его отстойное. Правда есть планшеты в металлических корпусах и процессор использует его как радиатор. Это гут. А обычный пластиковый корпус, это самое плохое, что можно придумать - ни радиатора, ни конвекции воздуха.

PocketBook IQ 701. Фиаско.
dim_kut
Все мои попытки получить безопасное управление флеш-памятью устройства окончились неудачей.

Вариант 1. Режим загрузчика (ещё называют режим fastboot или режим bootloader). К великому сожалению далеко не все устройства и не все прошивки имеют этот режим. PocketBook IQ 701 его не имеет.

Вариант 2. Подключение по JTAG.  Подключение работает, но проблема в том, что openocd (версий 5.0 - 6.1) не умеет работать с контроллером OneNAND flash-памяти, который стоит в s3c6410 - 800 МГц. Он умеет работать с контроллером, который стоял в ранних версиях процессора и достался ему по наследству от s3c2410, а это совсем не то. Другой PC-софт, который умеет с ним работать найти не удалось.  Есть примеры C-кода, которые могут с ним работать - это во первых Linux-ядро, а во вторых - Test_6410 и можно попробовать доработать openocd, но для меня это слишком сложная задача.

Другие варианты обновления (как recovery) требуют для своей работы запущенное ядро на устройстве т.е. это обновление без права на ошибку. А я по опыту знаю, что получить свой рабочий вариант системы обычно не удается с первого раза ... 
Метки: , , , ,

Распаковка ramdisk.img и kernel.img.
dim_kut
Сохраненные ранее образы ramdisk.img и kernel.img представляют собой соответственно архив андроидного рамдиска (initrd) и ядро, обработанные утилитой mkimage, дополненные разным мусором до размеров раздела. Смотреть на ядро не особо интересно, а в ramdisk.img заглянуть можно так:

# dd if=ramdisk.img bs=64 skip=1 of=ramdisk.cpio.gz
Выбрасываем первые 64 байта - заголовок, добавленный mkimage
gzip -dc ramdisk.cpio.gz | cpio -id
Распаковка архива.

Перепакованный архив лежит здесь.

UPD. Похоже, этот способ подходит только для ранних версий Android, вроде 2.0. На поздних - не получается.

Сохранение-восстановление разделов PocketBook IQ701
dim_kut
Как выясняется, чтобы скачивать-заливать разделы в android-устройство совсем не нужна тяжелая артиллерия вроде JTAG, можно вполне обойтись USB-шнурком, Android SDK, и разными программками. Но при этом видимо придется оставаться в рамках существующих разделов. По крайней мере средств, чтобы их изменить я пока не нашел.

Разделы PocketBook IQ701 и их размеры:Свернуть )

Я нашел следующие средства бэкапа-восстановления разделов:
1. CWM Recovery. На Iq701 сохраняет и восстанавливает 3 раздела: system, cache, userdata. Неплохо, но хотелось бы управлять всеми разделами.

2. Из Android SDK:
adb - есть adb backup и adb restore. Бэкап неполный, только приложения и их данные. Подробнее здесь
fastboot - может заливать разделы, но не может их дампить.

3. RomDump Дампит разделы Boot, Recovery, System, похоже без вариантов. Не пробовал. Ссылка.

4. dump_image Дампит любые android-разделы, только не всегда и не везде :). Мне удалось с её помощью вытащить все разделы, кроме system, cache, userdata. Но поскольку их сохраняет CWM Recovery, то эти два способа должны хорошо дополнять друг-друга. :)  Ссылка.
УстановкаСвернуть )

В некоторых инструкциях описана работа с android-разделами, примонтированными к PC. Это было бы здорово, их можно было бы сохранять и восстанавливать с dd, но я этих разделов на PC пока не наблюдаю.


UPD. Нашел хороший способ дампить разделы, не требующий дополнительного софта (терминал - не в счет).
Читать дальше...Свернуть )

PocketBook IQ 701. Работа с Open OCD 0.5.0
dim_kut
Компиляция под Wiggler (и др. девайсы на LPT) не вызывает проблем:
./configure --prefix=/usr --enable-parport
(в конфиг-файле указываем номер порта принтера: 0,1,2; обычно 0)
или
./configure --prefix=/usr --enable-parport --disable-parport-ppdev
(в конфиг-файле указываем адрес порта принтера, обычно 0x378)
make
make install
или new2dir make install чтобы собрать пакет в puppy.

Для работы используем два терминальных окна:
В первом набираем: openocd -f my.cfg (при включенном девайсе)
Во втором: telnet 127.0.0.1 4444 - здесь набираются команды.

Лезут ошибки поллинга, выключаем - poll off
Сброс с остановом - reset halt
Посмотреть состояние девайса - targets

После этого можно спокойно дампить память, любую: dump_image [имя_файла] [нач.адрес] [размер]

Параметр adapter_khz в конфигфайле установлен в 0. Это означает, что oocd сам установит нужную скорость работы. Он устанавливает 500 kHz. Вычислить оптимальную скорость oocd не может из-за отсутствия сигнала RCLK, поэтому вполне возможно, он может надежно работать и быстрее. На этой скорости работает вполне надежно, но медленно: ~ 1 Мб за 1 мин. Скачивание 256 Мб идет больше 4-х часов.

Осваиваю Elementary
dim_kut
Собрал HelloWorld! на elementary из EFL.

hello_word


Разработчики EFL обещают привязку к Питону, но пока я её нигде не вижу в новых версиях.  То ли её нет, то ли нет ещё документации. Приходится вспоминать C.

Ссылка1, Ссылка2.

Метки: , ,

gtkdialog-0.8.2 не работает с glib-2.32.4
dim_kut
Последняя версия gtkdialog не дружит с последней версией GLIB. Все собирал самостоятельно. Написал разработчику.
Раньше мне встречалась ругань разных программ (в том числе и gtkdialog) на glib, видимо версии не совпадали, но чтоб совсем не работало, такое в первый раз.
Ошибки под катомСвернуть )
Метки: ,

ЛУТ на фольге
dim_kut
Фольга спасет мир
Впечатляет. Я пользовался при ЛУТе страницей из журнала - получалось так себе. Когда схема несложная и плотность монтажа невысокая пользоваться можно. Но шаг выводов 0.5 получить не удалось, не смог аккуратно отодрать бумагу, хотя старательно её размачивал. У автора получаются дорожки 0.1. Супер. Надо будет попробовать при случае.
Метки: ,

Глюк ядра 3.3.8
dim_kut
Ядро 3.3.8 имеет интересный глюк - в консоли символы с клавиатуры летят как из пулемета, очень маленькая задержка на повтор. Причем только в текстовой консоли, в графике все в порядке. Лечится командой kbdrate -d .... Подставлять приходится большие числа для нормальной работы, похоже ядро неправильно вычисляет задержку.

Источник:
Настраиваем задержку и частоту повтора клавиш с помощью xset и kbdrate
Метки: ,

Ссылки
dim_kut
Установка Linux на дешёвые ARM-нетбуки
История дебрикинга Нука
Nook JTAG, Serial: Дебрикинг  

Человек занимается чем-то похожим

Метки: , , ,

Wi-Fi в работе !
dim_kut
Запустил wlan на pandaboard. Работает, но не так здорово, как хотелось бы. С настройками по умолчанию midori валится в segmentation fault на доброй половине сайтов. Пробовал midori 0.4.3 и 0.4.6 - одинаково. 

Чтобы такое не происходило, приходится снимать галку в параметрах - "Выполнение сценариев".  Подозреваю, это все проделки webkit-а. Заглянул на debian - там лежит в sid 1.2.7, хотя я пару месяцев назад брал там 1.8.1 Похоже, назад отыгрывают. 1.2.7 для armel ещё не собрали, подождем.

Скриншот в режиме illume:
 

http://fotki.yandex.ru/users/dim-kut/view/468190
Метки: , ,

О железе и о возможностях
dim_kut

Небольшие размышления на тему - какое есть железо и что с этим можно сделать.

Все arm-устройства, которые есть на рынке можно разделить на две категории:

1. Клавиатурные. Управляются с помощью клавиатуры и мыши. Сюда относятся немногочисленные смартбуки (Toshiba AC100 и китайские поделки), оценочные платы вроде Pandaboard и Raspberry Pi, HDMI-стики.

2. Бесклавиатурные. Управляются с помощью тачскрина, пальцами. Сюда относятся электронные книги, планшеты, смартфоны.

Некоторыми планшетами можно управлять с помощью клавиатуры и мыши - дорогие модели имеют USB-host, в моем PocketBook IQ701 на плате разведены все 5 контактов mini-USB разъема, подозреваю, что есть возможность запустить OTG и подключить кнопки и мышь, просто android слишком старый - 2.0 или 2.1, это не поддерживает.

То есть IMHO есть аппаратная возможность из планшета или электронной книги сделать "нормальный линукс-компьютер", поменяв его прошивку.

В android-е есть программки вроде LinuxInstaller. Этот вариант мне не нравится, потому что это просто chroot - в определенный каталог устанавливается корневая файловая система линукс и этот каталог объявляется корневым. Ядро остается от android-а, управлять загрузкой (initrd.gz) невозможно.

С помощью chroot невозможно использовать puppy linux, поскольку ему нужны особые патчи ядра и свои скрипты загрузки. А я беру за основу именно puppy, мне нужны его возможности.

Как вариант - можно попробовать использовать на планшете Puppy Pi от Барри - если заменить ему ядро и загрузчик. По интерфейсу это вполне типичная десктопная система.

Тачскрин можно заставить работать в режиме эмуляции мыши - полагаю, что это выглядит так: пальцем передвигаешь по экрану указатель мыши и постукивание по нему - это кнопки. Не очень интересный вариант, нет мультитачей, но тоже вариант, чтобы управлять на планшете десктопной системой.

Учитывая все это, я решил остановится на оконном менеджере enlightenment, он же e17. Он имеет два режима работы - для десктопов и для мобильных устройств, набор виджетов, ориентированных и на работу пальцами - Elementary. Считаю такое направление работы весьма перспективным.

Если есть какие соображения на эту тему, прошу высказываться ...


Ядро 3.3.8
dim_kut
Перешел на ядро 3.3.8 (с 3.0.9). Тестирую на pandaboard. Новое ядро сразу правильно определило разрешение монитора - 1280х1024 и работает с ним. В консоли неудобно, мелко, в графике самое оно. Графика стала заметно подтормаживать, слишком большое разрешение для чипа для сотовых телефонов с 32 Мб видеопамяти. Раньше при 640х480 графика летала. 
Опирался на это  

Попробовал было сделать последнее 3.6.2, не вышло, ядро в упор не видит разделов SD-карточки. Вообще, большие скачки с ядрами обычно не выходят, лучше получается постепенное обновление.

В новых ядрах заметно улучшена поддержка arm-устройств.

Текущие задачи - запустить wifi и звук.

 

gtkdialog
dim_kut
Собрал gtkdialog, запустил - работает, но виджеты выводятся в обратной последовательности. Справа-налево и снизу вверх. Оказывается на мурге уже решили эту проблему. Вот решение:

File is src/automaton.c, line number 2149
Reverse a and b, from stackelement _sum(stackelement a, stackelement b)
to
stackelement _sum(stackelement b, stackelement a)
gtkdialog will magically display the correct ordering.

Ссылки:
Блог Барри
Мурга

UPD: патченный gtkdialog здесь  

UPD: gtkdialog-0.8.2 уже содержит поправку для Raspberry Pi, а значит и для нас.
Метки: ,

?

Log in

No account? Create an account