API и защита кода на ATmega8

Приветствую всех!

Надо поставлять заказчику устройство, к которому он может сам дописывать ПО. Часть функций, отвечающих за работу с железом, хотелось бы от заказчика скрыть и поставлять в виде API.

На первый взгляд идея была такая: эти функции вместе с загрузчиком располагаются в Bootloader Section и доступ через LPM из Application к ним блокируется фузами. Заказчик свое ПО грузит загрузчиком, который лежит там же, в BootLoader. Все бы забибись, но мои функции работают по прерываниям, причем отработка одного (медленного) может прерываться другим (быстрым). Я мог бы при загрузке программы прописывать указатели на свои функции в таблицу векторов в Application секции. Но! Нужный мне режим BLB1=3 или BLB1=4 запрещает прерывания в момент выполнения кода из BootLoader секции, таким образом вложенность прерываний не получается. В любом случае, даже если "медленное" прерывание сделаю как обычную функцию, она должна будет располагаться в "закрытой" области. И во время ее исполнения прерывания должны щелкать. Пока же мое понимание таково: пользователь вызвал мою функцию, управление передалось в bootloader секцию, прерывания автоматом запретились.

Или я чего не понял с этим запретом?

Какие еще будут мысли на предмет организации "полуфабрикатного" закрытого ПО? Интерпретатор и внешнюю память ставить не буду - в проце места еще много, а на плате его уже нет.

Reply to
Sergey A. Borshch
Loading thread data ...

Hello Sergey.

03 Feb 04 15:55, Sergey A. Borshch wrote to All:

SAB> Hо! Hужный мне SAB> режим BLB1=3 или BLB1=4 запрещает прерывания в момент выполнения SAB> кода из SAB> BootLoader секции,

...если вектоp находится в app секции.

Разместить вектоp в бyт-секции для этой задачи не подойдет? Тогда юзеp твоего девайса должен либо отказаться от "своих" пpеpываний, либо пеpеключать селектоp таблицы вектоpов (yжасно неyдобно, конечно).

Собственно касаемо задачи - библиотеки не подходят?

Alexey

Reply to
Alexey Musin

Привет, 4 февраля 2004 г., 9:04:28, ты писал(а):

SAB>> Hо! Hужный мне SAB>> режим BLB1=3 или BLB1=4 запрещает прерывания в момент выполнения SAB>> кода из SAB>> BootLoader секции, AM> ...если вектоp находится в app секции. AM> Разместить вектоp в бyт-секции для этой задачи не подойдет? AM> Тогда юзеp твоего девайса должен либо отказаться от "своих" пpеpываний, AM> либо пеpеключать селектоp таблицы вектоpов (yжасно неyдобно, конечно).

Ничто ведь не мешает форвардить вызовы из обработчиков прерываний, находящихся в BLS, на вектора в APS.

Всего хорошего.

Reply to
Alexey Krasnov

Алексей, привествую! "Alexey Musin" wrote

Вот только такое и получается - и по нему передавать управление по адресу, считанному из таблицы векторов в app секциии. Лишняя задержка, но там пользователю и так много скорости не понадобится. Ладно, продолжаю писать загрузчик... На С :-)

Так их же дизассемблировать - раз плюнуть. У нас тут конкуренция в этом секторе имеет место быть. Кое-что из железа уже содрали, сказали типа "это вы здорово придумали, мы тоже теперь так будем"...

С уважением, Сергей Борщ

Reply to
Sergey A. Borshch

Алексей, привествую! "Alexey Krasnov" wrote

Да, так и придется. Спасибо. А сам как-то не додумался :-(

С уважением, Сергей Борщ

Reply to
Sergey A. Borshch

Hello Sergey.

05 Feb 04 00:18, you wrote to Alexey Musin:

Чего ты там считывать собрался? В таблице векторов не адреса, а джампы прописаны. Hужно просто перейти по адресу вектора в app секции.

Alexey

Reply to
Alexey Boyko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.