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

 
 
> получение "чистого" кода функции, вопрос новичка
der Spomer
сообщение Dec 18 2007, 05:07
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-07
Пользователь №: 29 733



Допустим, я написал программу на C++, скомпилил, прошил. Теперь мне понадобилось дописать в ROM ещё одну функцию, написанную также на C++. Цель - скажем, допрошил 30-40 файлов-функций в ROM и пользуешься ими из основной программы.
Вопрос:
1) Возможно ли настроить среду (EWARM или любую другую) так, чтобы она выдала мне файл с "чистым" кодом функции, т.е. без кода инициализации процессора и т.п.?
2) Существуют ли стандарты файлов, предназначенных не для включения в проект, а для непостедственной прошивки в устройство?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
der Spomer
сообщение Dec 18 2007, 10:04
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-07
Пользователь №: 29 733



Мои соображения.

Если я всё правильно понимаю(в чём я сильно сомневаюсь) то стандартный исполняемый файл с пустым main, сгенерённый ewarm, имеет след. структуру:
------------------------------------
таблица векторов прерываний
сstartup
cmain
cexit
------------------------------------
Если структура верна, то, видимо, при отключении первых двух пунктов получается работоспособный код, который можно вызвать из основной программы без потери работоспособности обоих. Поправьте если не прав

Сообщение отредактировал der Spomer - Dec 18 2007, 10:08
Go to the top of the page
 
+Quote Post
Shuuura
сообщение Dec 18 2007, 10:22
Сообщение #3


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

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



Цитата(der Spomer @ Dec 18 2007, 13:04) *
Мои соображения.

Если я всё правильно понимаю(в чём я сильно сомневаюсь) то стандартный исполняемый файл с пустым main, сгенерённый ewarm, имеет след. структуру:
------------------------------------
таблица векторов прерываний
сstartup
cmain
cexit
------------------------------------
Если структура верна, то меня, видимо, при отключении первых двух пунктов получается работоспособный код, который можно вызвать из основной программы без потери работоспособности обоих. Поправьте если не прав

еще есть секция инициализации переменных, стека и т.д.
также надо разделить области ОЗУ ядра и приложения при использовании глобальных переменных
Более правильный путь - компиляция obj. Она позволит отключить все ненужные в данном случае секции и получить код с заданного адреса.

Надо проверить идею: разбираем map файл ядра, генерим из него файлик с указанием адресов всех использованных функций. Подключая полученый файл к новому проекту имеем все нужные адреса. Еслм функции в ядре нет, указываем линкеру, что ее надо подключать в пользовательскую область. Вызов пользовательских функций делаем через функцию-транслятор( если их много) или по жестким адресам (если мало). Функция -транслятор включается в пользовательский проект. По идее должно работать
Go to the top of the page
 
+Quote Post
der Spomer
сообщение Dec 18 2007, 10:47
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-07
Пользователь №: 29 733



Цитата(Shuuura @ Dec 18 2007, 16:22) *
компиляция obj

Так и сделал.
Плюс к глобальным переменным дописал __no_init.
Работает.
Спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- der Spomer   получение "чистого" кода функции   Dec 18 2007, 05:07
- - MALLOY2   Цитата(der Spomer @ Dec 18 2007, 09:07) Д...   Dec 18 2007, 07:25
|- - der Spomer   ЦитатаЗАЧЕМ это может понадобитьсяЦитатачтобы поль...   Dec 18 2007, 09:15
|- - Shuuura   Цитата(der Spomer @ Dec 18 2007, 12:15) М...   Dec 18 2007, 09:34
- - _dem   1) ROM = Read Only Memory 2) сразу на будущее озна...   Dec 18 2007, 07:38
- - MALLOY2   Цитатасразу на будущее ознакомьтесь с понятием тра...   Dec 18 2007, 07:46
|- - sergik_vrn   Цитата(MALLOY2 @ Dec 18 2007, 10:46) А эт...   Dec 18 2007, 08:13
- - MALLOY2   Цитатав результате работы компилятора получаются ...   Dec 18 2007, 08:17
|- - sergik_vrn   Цитата(MALLOY2 @ Dec 18 2007, 11:17) Може...   Dec 18 2007, 08:51
- - Shuuura   Попробуйте заранее расположить 30-40 по фиксирова...   Dec 18 2007, 08:31
|- - alexander55   Цитата(Shuuura @ Dec 18 2007, 11:31) Попр...   Dec 18 2007, 08:38
|- - Shuuura   Цитата(alexander55 @ Dec 18 2007, 11:38) ...   Dec 18 2007, 08:41
|- - alexander55   Цитата(Shuuura @ Dec 18 2007, 11:41) Я та...   Dec 18 2007, 08:59
- - Shuuura   Как указать линкеру, что используемая функция уже ...   Dec 18 2007, 11:39
- - IgorKossak   Голую main можно получить если исключить startup и...   Dec 18 2007, 11:55
|- - Shuuura   Цитата(IgorKossak @ Dec 18 2007, 14:49) И...   Dec 18 2007, 11:55
|- - Сергей Борщ   Цитата(Shuuura @ Dec 18 2007, 13:55) Как ...   Dec 18 2007, 14:03
- - _dem   В общих чертах - Выполняемый (загружаемый) код д...   Dec 18 2007, 12:12
- - Shuuura   Как-то сложно и слишком по ПКшному получается. А е...   Dec 18 2007, 12:36
- - _dem   Да, IAR не предусматривает динамической загрузки к...   Dec 18 2007, 12:45
- - Shuuura   А как быть с системными функциями С? (те которые я...   Dec 18 2007, 13:13
- - MALLOY2   ЦитатаКак заставить IAR-ий линкер НЕ ПИСАТЬ по дан...   Dec 18 2007, 13:50
- - _dem   в общем, направление траншеи ясно, а как именно, ч...   Dec 18 2007, 13:58
- - MALLOY2   ЦитатаМне, например, хочется красивую динамическую...   Dec 18 2007, 14:04
- - _dem   Текущий проект - SAM7X, IAR 4.41a, uCOS/II, активн...   Dec 18 2007, 14:14
|- - Shuuura   Цитата(_dem @ Dec 18 2007, 17:14) библиот...   Dec 18 2007, 16:22
- - MALLOY2   Я когда то делал один проэкт в котором было много ...   Dec 18 2007, 14:17
- - _dem   мне кажется, о защите речь не заходила тем более п...   Dec 18 2007, 14:30
|- - Сергей Борщ   Цитата(_dem @ Dec 18 2007, 16:30) На сим ...   Dec 18 2007, 15:48
- - _dem   ЦитатаПоддержка операций с плавающей точкой займет...   Dec 19 2007, 07:52


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 05:17
Рейтинг@Mail.ru


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