На начало  
Карта сайта
О себе
TINI ?
"Железо"
Справочник
Софт
Проекты
Документация
FAQ
Ссылки
Связь


Ограничения

(Версия Firmware: 1.11)

Страничка посвящена текущим ограничениям Tini API. И хотя это далеко не полный список, в нем приведены основные ограничения TINI API. Список основан на фирменном документе “Limitations of TINI Firmware 1.11”.

 - Начнем с загрузчика:

ВНИМАНИЕ !!! При первом запуске системы скорость обмена  между JavaKit и TINI Board должна быть установлена на 115200, далее ее можно изменить.

         Загрузчик не поддерживает скорости ниже 19200

  • Multicast Socket поддерживает только 1 локальный интерфейс в текущей группе

·         TINI поддерживает до 24 одновременных соединений

·         TINI не поддерживает фрагментацию/сборку IP датаграмм

·         TINI не поддерживает IP маршрутизацию

·         Для printStackTrace() организована частичная реализация. Подробнее..(ссылка на api_diffs)

·         Трассировка стека ограничена 20 предшествующими вызовами

·         Native модули не могут быть более чем 64 Кб

·         Максимальный размер всех массивов не может превышать 64 Кб

·         TINI OS ограничивается максимально 8ю процессами, с 32 «нитками» на процесс (в отличии от 16 в версии 1.02х). При этом реально доступно не более 7 процессов, т.к. по умолчанию первым процессом автоматически становится «сборщик  мусора». Ваше приложение (или Slush )всегда будет №2, это полезно помнить при программировании и отладке.

·         Ограничения по длине локальных переменных: Максимальный объем локальных переменных 64 ячейки. 32х разрядные переменные (int,char,byte итп) занимают объем в 1 ячейку стека, соответственно 64х разрядные переменные (long,double) занимают 2е ячейки

·         Размер Threads стека 768 ячеек. Новый метод TINIOS.setStackSize(int) в классе com.dalsemi.system.TINIOS позволяет изменить размер стека «ниток»

·         Класс ограничивается 255ю статическими полями (включая все статические поля «супер класса») и 255ю instance полями  (включая все instance поля «супер класса»)

·         Метод ограничен 63-мя локальными переменными

·         ByteToChar ( и CharToByte) по умолчанию поддерживают две кодировки: UTF8 и ISO_8859_1, все остальное нужно делать самим

·         Отконвертированный файл класса не может превышать по размеру 32 Кб.

 

·         Текущие ограничения PPP

- «Набор по запросу» пока не поддерживается

- Пока не поддерживаются методы:

get/setIdleTimeout()

 

·         Текущие ограничения по 1-Wire

-Стоит обратить внимание на то, что драйвер DS2480 работает только с 1м встроенным UARTом (S1)

·         Метод intern() возвращает не корректный результат

·         Есть проблемы при работе с некоторыми DHCP серверами : vDHCP, MagikDHCP, также существуют проблемы при работе с  Umax Ugate 3000 ADSL.

·         Файловая система TINI поддерживает максимально до 254 файлов на директорию. При превышении этого ограничения получается IOException. Так же к IOException приведет попытка создания файла с именем более чем 247 символов.

·         Следует обратить внимание на процесс записи и модификации файлов. В случае если во время модификации файла будет снято питание или произойдет «системная перезагрузка» то значение времени будет соответствовать не реальному, а тому, что было перед началом модификации.

·         Не стоить открывать на чтение/запись (имеется ввиду RandomAccessFile) уже исполненный файл, это вызывает  IOException.

·         Метод Date.toLocaleString() возвращает то же самое значение что и Date.toString(). Объясняется это тем, что TINI не поддерживает классы форматирования даты.

·         В том случае если файл датирован ранее чем 1м Января 1970 года, то объекты Calendar и Date будут возвращать неверные значения.

·         Вызов методов set(int, int) и clear(int), а так же объекта GregorianCalendar недаст нужного эффекта в том случае если запись примет одно из значений:

-DAY_OF_WEEK

-DAY_OF_WEEK_IN_MONTH

-ERA

-WEEK_OF_MONTH

-WEEK_OF_YEAR

·         Методы Double.toString() и Double.valueOf(String) возвращают неправильные значения. В описание указано что «что настолько точны насколько это возможно для API и общего быстродействия». Например:

o        System.out.println(3.05f);
возвратит значение "3.0499999". Имейте ввиду что это происходит только при преобразовании
String àFloat Point” или обратном преобразовании “Float Pointà String

 

·         Возможно использование не более 255 интерфейсов в приложении. Возможно, в бедующем это будет изменено;

·         Перед запуском любого приложения обязательно осуществляется статическая инициализация класса java.lang.System. Сделано это для того, что бы, любые запущенные процессы инициализации не нарушали спецификацию Java VM.

> Ограничения по загрузке классов:

- Метод getClassLoader() из java.lang.Class возвращает не корректный результат;

- Отсутствует верификация байт кода

- Метод loadClass(String,boolean) из java.lang.ClassLoader всегда разрешает загрузку класса, т.е. значение аргумента (boolean) просто игнорируется;

- Метод resolveClass(Class) из java.lang.ClassLoader ничего не делает;

- Метод setSigners(Class,Object[]) из java.lang.ClassLoader так же ничего не делает;

- Динамически загружаемые классы не могут определять новые «нативные» методы;

- «Выгрузка» класса и освобождение ресурсов до момента завершения приложения возможна только при использовании метода:

              -TINIClassLoader.unloadClasses(ClassLoader)

·         Поддержка I2C,CAN и URL Protocol выведена из состава основного API и перенесена в отдельные модули, которые можно встраивать в свое приложение. Более подробно смотри BuildDependency_README.txt

    > «Отражения»

-  В настоящее время AccessibleObject является фиктивным классом, он не выставляет флаг «доступности» объекта;

- getExceptionTypes не существует;

- Модификатор strictfp не отражается в модификаторах методов;

- Для высвобождения места информация «отражения» для private методов,            static final записей, private static записей, private transient записей не             включены в API. Все это необходимо включать в свое приложение самому.

  >Сериализация

TINI API 1.1 совместима с JDK 1.2.2 относительно сериализации  за исключением следующих моментов:

-java.util.GregorianCalendar: операции с  'nextStamp' происходят несколько иначе чем это делается в JDK;

- java.util.Properties: используется несколько другой «фактор загрузки» и размеры таблицы чем в JDK;

- java.util.Stack: по умолчанию используется другой размер «default Vector» чем в JDK;

- java.net.InetAddress: по умолчанию family=1, хотя для JDK 1.2.2 и 1.4 family=2. TINI и JDK устанавливают family в InetAddress в соответствии с Inet4Address=1;

- java.net.URL по умолчанию устанавливает значение стандартного порта для протокола, например для FTP port=21. Объект URL создается следующим способом: URL=new URL(“ftp://ftp.dalsemi.com);

- В отличии от JDK в TINI установка идентификатора “file” задается как “/”

·         TC_LongString (Строка более чем  64k) не поддерживается из-за ограничения на максимальный размер строк.

·         Насчет других ограничений пока не ясно. Сказано «что все остальные ограничения применимы». Будем выяснять.

      (C)2002-2003 AK

| TINI? | Железо | Справочник | Софт | Проекты | Документация | FAQ | Связь |

Ссылки | На главную страницу

Используются технологии uCoz