вторник, 20 ноября 2007 г.

ARM

Давненько ничего не писал, не надо расслабляться, тем более что новостей в жизни много.

Новость первая заключается в том, что на работе меня подключили к новому проекту. Этот проект по созданию поточного шифратора USB. Делается это на базе контроллера с ARM'ом на борту. Я раньше никогда не имел дела с армами, хорошая возможность попробовать, тем более область использования армов весьма велика (портировать систему?).

Пока что балуемся с такой железякой. Компактная надо сказать железяка. процессорный модуль (представленный на изображении) имеет размеры 66х80мм при этом содержит 32 мега SDRAM, 128 мег (или правильно говорить меб?) флеша. Ну еще несколько флешей по мелочи (4 мега и 512 кил в чипе). Насколько я понимаю, вся эта память располагается в одном адресном пространстве, разница только в скорости доступа. Пока там крутится ucLinux, старый... не знаю что будет крутиться дальше, может свое что-то соберем. Там куча уникального оборудования, не поддерживаемого стандартным линуксом. Причем это только прототип, если прототип заработает, то будем делать другую железяку, конфигурация которой скорее всего будет отличаться от этой борды.

Но от столь интересного занятия меня безжалостно оторвали, говорят в старом проекте че-то не работает, сижу вот, туплю второй день... продукт тестируется, но я еще ни одного исправления не внес, ибо незачем. Отрицательно в проекте то, что мея привлекали в качестве экстренной помощи, и приходилось вдвоем ковыряться в одном проекте, больно он монолитный. 16 бит, msc++ 2.0, памяти постоянно не хватает - жесть... как только люди раньше жили.

Сегодня с утра друг hedgehog порадовал ссылочкой. Хочу такой субноут, но пока боюсь мне не до того. :) Судя по описанию ничего революционного с линуксом они не сделали, думаю Gentoo встанет без проблем, а ярлыки на стол я и сам могу поставить.

А еще друг SadKo намедне тоже порадовал другой ссылочкой. Must bookmark :) всем писателям операционных систем.

понедельник, 12 ноября 2007 г.

Модель/Вид

Потихоньку осваиваюсь с QT. Многие вещи еще не понятны, но постепенно начал въезжать в сабж от QT. Сделали они мощно.

Модель у них - это абстрактный класс доступа к данным. Хранить данные при этом можно так, как хочется. Конкретная модель в этом случае является как бы прокси классом между хранилищем данных и видом.

Пока пытался заставить свою модель работать, чуть всю голову не сломал, если бы не ModelTest. Правда некоторые непонятки еще мучают меня. Например у меня что-то не получилось поставить два шортката на один QAction... Интересно, это можно сделать?

Кроме того еще остались неисследованные темы, как то редактирование при вставке элементов, И еще хочу в названии элемента совместить иконы (несколько), имя, еще дополнительную графическую информацию... Это должно быть возможно (кастомный ItemView?).

Ну начало положено, дальше наверное будет легче. :)

четверг, 1 ноября 2007 г.

Переключение задач.

Тема, по которой не прекращаются споры сторонников различных подходов.

Но вот недавно SadKo предложил интересную идею, которой я не премину воспользоваться (Если, конечно, SadKo не будет сильно возражать и настаивать на своем исключительном авторском праве :)).

Идея в принципе не нова, и заключается в том, что переключениями задач занимается отдельная задача, что, собственно, упрощает процесс менеджмента. При этом я, скорее всего, не стану полностью переводить весь ядерный API в отдельные задачи, это не оптимальный и не самый удобный способ реализации, ИМХО. Более того, даже прерывание таймера не достойно того, чтобы выносить его в отдельную задачу. Тем более, что прерывание таймера вовсе не подразумевает переключения задачи, в том смысле что переключение может и не понадобиться.

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

Конечно, это будет приводить к дополнительным расходам времени (одно дополнительное переключение задачи). Да ну и пусть. Зато удобно. В старой реализации мне приходилось постоянно ломать голову над тем, как проделать над задачей какие либо манипуляции, учитывая, что она еще не покинула процессор. И приходится мучиться.

PS: И еще подумал, что на многоядерной системе вероятно потребуется сделать несколько задач - переключателей (по одной на каждый процессор), или одну задачу но с блокировкой (этот вариант наверное попроще).