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

 
 
> Не создается bin из elf, Keil, LPC29xx
toweroff
сообщение Nov 1 2011, 17:42
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Доброго времени всем

Сделан некий бут, который должен принять 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
aaarrr
сообщение Nov 1 2011, 17:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Он создается. Так поступает fromelf в том случае, например, если скаттер содержит не один Load Region.
Здесь явно виноват "AT". Лучше дайте своей структуре секцию и разместите ее в скаттере где нужно.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 1 2011, 17:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



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

о!
не подумал, спасибо! пойду пробовать
кстати, а можно как-то в скаттер передавать некие объявленные имена в хидерах?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 1 2011, 18:01
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Не вполне понятно, что значит "передавать имена". Но в любом случае нельзя, никакого импорта на уровне scatter description file нет.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 1 2011, 18:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(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)


уже нет
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 2 2011, 11:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



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

Нафига я располагал ДАННЫЕ по адресам, которые УЖЕ расположил там бут?
Просто ссылки на структуры в приложении - и никаких гвоздей sm.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:26
Рейтинг@Mail.ru


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