|
|
  |
Организация pnp в embedded системах |
|
|
|
Feb 5 2007, 18:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Да я несколько об другом.
Например, есть функция out_lcd(char *pData, int Len), которая выводит нам некоторую строку на дисплей. Подцепили этот дисплей к плате, запустили свой firmware. Все (если все правильно, конечно) работает. Теперь отключаем дисплей, нажимаем reset и хотим, чтобы все устройство работало, а не зависало на первой же функции out_lcd. Конечно, если в этой функции не читается статус дисплея, то все так и будет работать само собой, за исключением бесполезной траты процессорного времени.
Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач.
|
|
|
|
|
Feb 6 2007, 07:08
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(sergeeff @ Feb 5 2007, 20:12)  Да я несколько об другом.
Например, есть функция out_lcd(char *pData, int Len), которая выводит нам некоторую строку на дисплей. Подцепили этот дисплей к плате, запустили свой firmware. Все (если все правильно, конечно) работает. Теперь отключаем дисплей, нажимаем reset и хотим, чтобы все устройство работало, а не зависало на первой же функции out_lcd. Конечно, если в этой функции не читается статус дисплея, то все так и будет работать само собой, за исключением бесполезной траты процессорного времени.
Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач. При инициализации системы определяйте конфигурацию, если это возможно. Если устройство в конфигурации отсутствует, то функции работы с ним замените на пустые и возвращающие значения по умолчанию. В embedded системах вряд-ли имеет смысл делать общий алгоритм типа PnP, поскольку интерфейс внешних устройств и требования к нему сложно формализовать.
--------------------
Пасу котов...
|
|
|
|
|
Feb 6 2007, 10:25
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(sergeeff @ Feb 5 2007, 18:12)  Да я несколько об другом.
Например, есть функция out_lcd(char *pData, int Len), которая выводит нам некоторую строку на дисплей. Подцепили этот дисплей к плате, запустили свой firmware. Все (если все правильно, конечно) работает. Теперь отключаем дисплей, нажимаем reset и хотим, чтобы все устройство работало, а не зависало на первой же функции out_lcd. Конечно, если в этой функции не читается статус дисплея, то все так и будет работать само собой, за исключением бесполезной траты процессорного времени.
Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач. Организуйте таймаут по доступу к периферии. Например можно даже аппаратный WD поставить, а выход его повесить на прерывание процессора - нет ответа - периферии либо не было, либо сдохла, либо отключена.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|