реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Организация pnp в embedded системах
sergeeff
сообщение Feb 5 2007, 13:41
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги!

Какие у кого есть мысли, как лучше организовать некое подобие PNP?

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

Какие есть мысли на сей счет?
Go to the top of the page
 
+Quote Post
Doka
сообщение Feb 5 2007, 16:52
Сообщение #2


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



очевидно что начать лучше с чтения доков по P'n'P. Оттуда и идеи заимствовать.

Кратко как это сделано для PCI-периферии:
до конфига пространства памяти и ввода-вывода недоступно
программа POST BIOS активируя сигнал IDSEL обращается в конфигурационное пространство и вычитывает структуру конфига PCI (класс устройства, требуемые ресурсы).
На основании этого - конфигурит его.
Далее если есть ROM BIOS и 2-байтная сигнатура совпала (==АА55), вычитывается это ПЗУ (в ОЗУ) и если после вычитки совпала контрольная сумма - управление передается на начало вычитанного блока.


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 5 2007, 18:12
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Да я несколько об другом.

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

Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Feb 6 2007, 07:08
Сообщение #4


Знающий
****

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



Цитата(sergeeff @ Feb 5 2007, 20:12) *
Да я несколько об другом.

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

Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач.


При инициализации системы определяйте конфигурацию, если это возможно. Если устройство в конфигурации отсутствует, то функции работы с ним замените на пустые и возвращающие значения по умолчанию.
В embedded системах вряд-ли имеет смысл делать общий алгоритм типа PnP, поскольку интерфейс внешних устройств и требования к нему сложно формализовать.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
umup
сообщение Feb 6 2007, 09:34
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 2-06-06
Пользователь №: 17 720



Я делал просто (для разных конфигураций индикаторов - несколько светодиодных и LCD) - в разьеме для подключения индикатора оставлял несколько выводов свободными, на основной плате подтягивал их резисторами на +, а в платах индикации один или несколько этих контактов заземлял, при включении устройства или перед обновлением индикации читал этот код и в зависимости от его значения использовал разные алгоритмы работы с индикацией
Go to the top of the page
 
+Quote Post
psL
сообщение Feb 6 2007, 10:25
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(sergeeff @ Feb 5 2007, 18:12) *
Да я несколько об другом.

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

Вопрос, таким образом, состоит в более общем и, может быть, более эффективном решении подобных задач.


Организуйте таймаут по доступу к периферии.
Например можно даже аппаратный WD поставить, а выход его повесить на прерывание процессора - нет ответа - периферии либо не было, либо сдохла, либо отключена.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th July 2025 - 13:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016