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

|
Допустим, я написал программу на C++, скомпилил, прошил. Теперь мне понадобилось дописать в ROM ещё одну функцию, написанную также на C++. Цель - скажем, допрошил 30-40 файлов-функций в ROM и пользуешься ими из основной программы. Вопрос: 1) Возможно ли настроить среду (EWARM или любую другую) так, чтобы она выдала мне файл с "чистым" кодом функции, т.е. без кода инициализации процессора и т.п.? 2) Существуют ли стандарты файлов, предназначенных не для включения в проект, а для непостедственной прошивки в устройство?
|
|
|
|
|
 |
Ответов
|
Dec 18 2007, 11:55
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Голую main можно получить если исключить startup и low_lewel_init. Наблюдается некоторый оверхед. Если main использует хоть какие-нибудь библиотечные функции, то они тоже будут присутствовать в коде. В той части программы, которую здесь назвали BIOS, они также могут присутствовать, что слегка излишне. Если предполагается использовать таким образом несколько "подгружаемых" функций, то и они все будут содержать в себе полный набор используемых ими функций несмотря на наличие того же самого у других. Если подобный расход памяти не критичен, то на это можно закрыть глаза. Иначе придётся таки воспользоваться механизмом DLL. Цитата(Shuuura @ Dec 18 2007, 13:39)  Как указать линкеру, что используемая функция уже лежит по конкретному адресу и на этот адрес писать ничего не надо? Она не только лежит по адресу, но и некоторый обьём памяти (в общем случае неизвестный) занимает. А что касается линкера, то что ни линкер, то свои заморочки. У IAR, например, выделяется отдельный сегмент со своим диапазоном адресов.
|
|
|
|
|
Dec 18 2007, 11:55
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 23-08-05
Пользователь №: 7 902

|
Цитата(IgorKossak @ Dec 18 2007, 14:49)  Иначе придётся таки воспользоваться механизмом DLL. Не понимаю как им можно воспользоваться? Может как-то можно через линкер? Адреса же заранее известны. Цитата(IgorKossak @ Dec 18 2007, 14:55)  Она не только лежит по адресу, но и некоторый обьём памяти (в общем случае неизвестный) занимает. Вот именно. Как заставить IAR-ий линкер НЕ ПИСАТЬ по данному адресу функцию, а только произвести вызов? Из расчета что библиотечная функция по данному адресу уже есть. Может это Keil делать умеет? Т.е хочется прошить "BIOS" c библиотечными фукнциями, а потом маленькие пользовательские програмки, которые обращаются к этим функциям. Програмки делать отдельным проектом с голым main.
|
|
|
|
Сообщений в этой теме
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 der Spomer Мои соображения.
Если я всё правильно понимаю(в ч... Dec 18 2007, 10:04 Shuuura Цитата(der Spomer @ Dec 18 2007, 13:04) М... Dec 18 2007, 10:22  der Spomer Цитата(Shuuura @ Dec 18 2007, 16:22) комп... Dec 18 2007, 10:47 Shuuura Как указать линкеру, что используемая функция уже ... Dec 18 2007, 11:39 _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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|