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

 
 
> Таблица вызова функций. Как?, Реализация "BIOS"
EXeGLuMATOR
сообщение Sep 7 2011, 08:54
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



День добрый.
Имеется желание и необходимость сделать что-то типа BIOS для LPC23хх. Мысль в следующем - загружается что-то типа лоадера, который управляет камнем, также в нем есть базовый код для работы с периферией. Он един для всех проектов. Софт верхнего уровня делается отдельно и грузится выше адресами. Как сделать, чтобы из него можно было обращаться к базовым функциям?
Мысль одна - сделать табличку с адресами соотв. функций и буферов и верхним софтом ее юзать. Только как ее заполнять? Поскольку после каждой компиляции может меняться и размер и, как следствие, "раскладка" функций в памяти.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
EugenyAM
сообщение Sep 8 2011, 04:14
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



Достаточно одного фиксированного адреса, по нему делается вызов, который возвращает указатель на массив указателей на все функции BIOS, если состав функций может быть разным, можно предусмотреть какой-либо заголовок с дескрипторами из которого клиентское приложение может достать всю информацию для работы с BIOS.
Дальше эти указатели можно присвоить некой структуре и пользовать вызовы например типа BIOS.UartInit();
Запрос и присвоение структуры можно вынести в отдельную функцию типа BIOS_Init(Struct TBIOS* BIOS), т.е. прикладной программист включает эту функцию в свой код, а дальше работает с вызовами из структуры.


Тут пример написания обработчика SWI

http://www.microchip.su/showthread.php?t=4860

Программное прерывание SWI - тоже фиксированная точка входа. При этом еще происходит повышение уровня с пользовательского до системного.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- EXeGLuMATOR   Таблица вызова функций. Как?   Sep 7 2011, 08:54
- - scifi   Цитата(EXeGLuMATOR @ Sep 7 2011, 12:54) М...   Sep 7 2011, 11:24
- - AlexandrY   Цитата(EXeGLuMATOR @ Sep 7 2011, 11:54) И...   Sep 8 2011, 05:27
- - e-serg   Цитата(EXeGLuMATOR @ Sep 7 2011, 17:54) М...   Sep 8 2011, 06:22
|- - EXeGLuMATOR   Цитата(e-serg @ Sep 8 2011, 10:22) н...   Sep 8 2011, 08:17
|- - scifi   Похоже на изобретение велосипеда а-ля полновесная ...   Sep 8 2011, 08:35
|- - EXeGLuMATOR   Цитата(scifi @ Sep 8 2011, 12:35) Похоже ...   Sep 8 2011, 08:54
|- - scifi   Цитата(EXeGLuMATOR @ Sep 8 2011, 12:54) Л...   Sep 8 2011, 09:00
||- - EXeGLuMATOR   Цитата(scifi @ Sep 8 2011, 13:00) Возможн...   Sep 8 2011, 10:17
|- - AlexandrY   Цитата(EXeGLuMATOR @ Sep 8 2011, 11:54) В...   Sep 8 2011, 13:20
- - psL   Вещь полезная. Удобно при обновлении ПО, когда мен...   Sep 9 2011, 16:54
|- - Alechek   Цитата(psL @ Sep 9 2011, 22:54) Вещь поле...   Sep 14 2011, 07:19
|- - EXeGLuMATOR   Цитата(Alechek @ Sep 14 2011, 11:19) Бред...   Sep 14 2011, 10:04
|- - psL   Цитата(Alechek @ Sep 14 2011, 11:19) Бред...   Sep 15 2011, 12:02
|- - _Pasha   Цитата(psL @ Sep 15 2011, 15:02) Подобный...   Sep 16 2011, 01:32
|- - psL   Цитата(_Pasha @ Sep 16 2011, 05:32) Давны...   Sep 16 2011, 07:37
- - EXeGLuMATOR   Да, видимо так. Осталось разобраться как это сдела...   Sep 14 2011, 06:17
- - Alechek   Возможно. В итоге часть BSP зашита, часть в пользо...   Sep 14 2011, 11:57
|- - EXeGLuMATOR   Цитата(Alechek @ Sep 14 2011, 15:57) 2. б...   Sep 14 2011, 13:14
- - Alechek   2 - никуда от нее не денешся. стандартная библиоте...   Sep 14 2011, 13:57
- - EXeGLuMATOR   Ну, насколько я понимаю - просто сделать табличку ...   Sep 20 2011, 06:34


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:41
Рейтинг@Mail.ru


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