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

Feb 03, 2004 5 Replies

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



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



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



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



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


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

Привет, 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.

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

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

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

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

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

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

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

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

Hello Sergey.

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

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

Alexey

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required