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

 
 
> Таблица вызова функций. Как?, Реализация "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
Ответов
e-serg
сообщение Sep 8 2011, 06:22
Сообщение #2


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

Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180



Цитата(EXeGLuMATOR @ Sep 7 2011, 17:54) *
Мысль одна - сделать табличку с адресами соотв. функций и буферов и верхним софтом ее юзать. Только как ее заполнять?

Допустим так сделать примерно так
Код
uint8_t data[4096];
int flash_write(uint32_t addr, uint8_t *data, int size); //некая функция
typedef struct{
    uint8_t VER_ID;
    int (*flash_write)(uint32_t, uint8_t*, int);
}FS; // в этой структуре перечислим
const FS __attribute__((section(".boot_func"))) fs = {0, &flash_write}; // разместим например по адресу 0x100UL с помощью линкера
const FS *fs2 = (FS *)0x100UL; // 0x100UL - адрес куда разместили структуру.

    fs.flash_write(250, data, 196); // варианты вызова одной функции.
    fs2->flash_write(250, data, 196);
    flash_write(250, data, 196);


Цитата(AlexandrY @ Sep 8 2011, 14:27) *
Зачем в в таком примитивном микроконтроллере BIOS?

например одни и те же функции обработки данных в загрузчике и приложении.
тоже шифрование, зачем по два экземпляра кода.
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
- - EugenyAM   Достаточно одного фиксированного адреса, по нему д...   Sep 8 2011, 04:14
- - AlexandrY   Цитата(EXeGLuMATOR @ Sep 7 2011, 11:54) И...   Sep 8 2011, 05:27
|- - 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 Текстовая версия Сейчас: 29th July 2025 - 01:08
Рейтинг@Mail.ru


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