Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не создается bin из elf
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Доброго времени всем

Сделан некий бут, который должен принять bin, прошить его по некому адресу и передать управление на точку входа

Собственно само приложение описывается, как размещаемое в определенных секторах FLASH в скаттере (или через Target Dialog - сути не меняет)

Вот что пишет кейл:
Код
Build Project 'test' - Target 'Target 1'
compiling test.c...
linking...
Program Size: Code=536 RO-data=64 RW-data=8 ZI-data=100  
FromELF: creating hex file...
User command #1: test.bat
D:\Test\>"c:\program files (x86)\Keil\ARM\BIN40\fromelf"  --bin -o ".\OBJ\test.bin" ".\OBJ\test.axf"
".\OBJ\test.axf" - 0 Error(s), 0 Warning(s).


дальше интереснее

вместо файла test.bin создается директория test.bin, в которой лежат два файла:
ER_RO
ER$$.ARM.__AT_0x20000200

адрес 0x200000200 - это фиксированный адрес структуры, которая содержит адреса векторов, некоторых функций, находящихся в области бута и которые могут быть использованы приложением

сам сишный файл такого вида:
Код
#include <LPC29xx.h>

#include    ".\\..\\interproject\\interproject.h"

unsigned long    boot_switch __attribute__((at(BOOT_SWITCH)));

const Interconn_t    export_table __attribute__((at(EXPORT_TABLE)));


void (*ReadUSB)(unsigned int*, unsigned int);
void (*WriteUSB)(unsigned int*, unsigned int);


//#pragma arm section code = "RESET"
int main()
{
unsigned int test[100];


    ReadUSB = (void (*)(unsigned int*, unsigned int))export_table.fx2_read;
    WriteUSB = (void (*)(unsigned int*, unsigned int))export_table.fx2_write;

    while (1)
    {
        ReadUSB(test, 10);
        WriteUSB(test, 10);
    };
}
//#pragma arm section code


прагмы закомментированы, т.к. описано все в Target Dialog, скаттер отключил

более в проекте нет ничего (т.к. вся стартаповая часть уже есть в буте)

Ну и вопрос - почему не создается bin-файл, хотя нет ошибок и претензий ни на одном этапе компиляции, сборки и перевода elf->bin ?
спасибо за все дельные каменты моих граблей sm.gif
aaarrr
Цитата(toweroff @ Nov 1 2011, 21:42) *
Ну и вопрос - почему не создается bin-файл, хотя нет ошибок и претензий ни на одном этапе компиляции, сборки и перевода elf->bin ?

Он создается. Так поступает fromelf в том случае, например, если скаттер содержит не один Load Region.
Здесь явно виноват "AT". Лучше дайте своей структуре секцию и разместите ее в скаттере где нужно.
toweroff
Цитата(aaarrr @ Nov 1 2011, 21:49) *
Он создается. Так поступает fromelf в том случае, например, если скаттер содержит не один Load Region.
Здесь явно виноват "AT". Лучше дайте своей структуре секцию и разместите ее в скаттере где нужно.

о!
не подумал, спасибо! пойду пробовать
кстати, а можно как-то в скаттер передавать некие объявленные имена в хидерах?
aaarrr
Цитата(toweroff @ Nov 1 2011, 21:51) *
кстати, а можно как-то в скаттер передавать некие объявленные имена в хидерах?

Не вполне понятно, что значит "передавать имена". Но в любом случае нельзя, никакого импорта на уровне scatter description file нет.
toweroff
Цитата(aaarrr @ Nov 1 2011, 22:01) *
Не вполне понятно, что значит "передавать имена". Но в любом случае нельзя, никакого импорта на уровне scatter description file нет.

не явно, конечно! sm.gif

имелось ввиду возможность подключать дефайновые значения, используемые в C-файлах также и в скаттере
чтобы потом не задумываться и править только хидер

получается, но только линкер уже не воспринимает объявления, относящиеся к С
то есть всякие

Код
#! armcc -E

#define LOAD_REGION 0x20000000
#define REGION_SIZE 0x200

LR0  LOAD_REGION  REGION_SIZE
{
    *.o (RESET)
}


проходят, то конструкции (а как хорошо бы было!)

Код
#define REGION_SIZE sizeof(my_struct)


уже нет
toweroff
И еще вдогонку. Что-то туплю я sm.gif

Нафига я располагал ДАННЫЕ по адресам, которые УЖЕ расположил там бут?
Просто ссылки на структуры в приложении - и никаких гвоздей sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.