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

 
 
 
Reply to this topicStart new topic
> Linker script, startup.s/c для ARM
swisst
сообщение Oct 8 2013, 12:25
Сообщение #1


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

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Доброго дня !

Подскажите, уважаемые, где идеологически правильно брать такие файлы ну или рыбу для правки под конкретный камень ?
CMSIS предлагает, производитель предлагает, на просторах инета полно всяких-разных вариаций...

когда писал под LPC1114 очень похоже, что источником служил CMSIS...сейчас LPC1769 и самое время внести ясность где брать...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 8 2013, 12:40
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Да где угодно. Поправить под себя и потом только размер памяти и список векторов менять от кристалла к кристаллу.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 10 2013, 19:53
Сообщение #3


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

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(Сергей Борщ @ Oct 8 2013, 16:40) *
Да где угодно. Поправить под себя и потом только размер памяти и список векторов менять от кристалла к кристаллу.


Сейчас ковыряю проект для LPC23xx (Keil). Так вот, там стартап настраивает также рабочие частоты различных периферийных устройств. Причём это можно делать из некоего редактора. Без этого редактора кода довольно прилично и так просто портануть на другой кристалл (особенно не близкородственный), думаю, не совсем быстро получиться.
Для ARM известно 3 основных тулчейна: IAR, Keil и Gcc. Синтаксис ассемблеров у них несколько разный.
Тут опять возникают проблемы совместимости.
Поэтому, имхо, нужно брать стартап, какой ближе лежит (в примерах). И лучше сосредотачиваться на грамотном разделении, чтобы не было каши из архитектурно-специфичного кода и собственно самой логики.
Go to the top of the page
 
+Quote Post
swisst
сообщение Oct 10 2013, 20:18
Сообщение #4


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

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Цитата(Ixt @ Oct 10 2013, 22:53) *
Для ARM известно 3 основных тулчейна: IAR, Keil и Gcc. Синтаксис ассемблеров у них несколько разный.
Тут опять возникают проблемы совместимости.
Поэтому, имхо, нужно брать стартап, какой ближе лежит (в примерах). И лучше сосредотачиваться на грамотном разделении, чтобы не было каши из архитектурно-специфичного кода и собственно самой логики.


С ассемблером на "вы". Когда первый раз писал под cortex-m0 - пришлось со старапом разобраться...чуть ли не каждую директиву комментом сопроводил - это было под GCC+eclipse. С Кейлом таких вопросов не возникает ибо проект настраивается из окошек и достаточно вычитать из мануала, какая галочка что делает.

Сейчас решил идти следующим путём: ld-файл взял из cmsis, startup.c взял из примеров lpcxpresso и минимально адаптировал для работы с ld-файлом.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 10 2013, 20:29
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Ixt @ Oct 10 2013, 22:53) *
Синтаксис ассемблеров у них несколько разный.
У автора вопроса Cortex, там ни строчки ассемблера не нужно. Да и для остальных (ARM7, ARM9) на ассемблере достаточно написать только ветвление по векторам. Весь остальной стартап прекрасно, понятно и сопровождаемо пишется на С/С++.

А необходимость портируемости стартапа мне кажется сильно надуманной. Проект пишется и сопровождается с использованием какого-то одного компилятора. И все остальные проекты этого же автора, как правило, тоже. При глобальной смене компилятора подправить стартап много времени не займет на фоне всего остального.

Редакторы с галочками не понимаю и не использую. Опасаюсь, что начав использовать подобный инструмент перестану вникать, как периферия работает на самом деле. В ущерб качеству кода.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 11 2013, 07:44
Сообщение #6


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

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(Сергей Борщ @ Oct 11 2013, 00:29) *
Проект пишется и сопровождается с использованием какого-то одного компилятора. И все остальные проекты этого же автора, как правило, тоже.


Увы, не всегда так. Вот сейчас приходится использовать Keil, потому что нигде больше не удалось завести аппаратный отладчик.
А на танцы с бубнами, пожалуй, времени уже нет. А так обычно я сижу на gcc. Но зато я уверен, что мой код соберётся любым компилятором. Нужно только 2 файла адаптировать: startup.s и retarget.c

Цитата(Сергей Борщ @ Oct 11 2013, 00:29) *
Редакторы с галочками не понимаю и не использую. Опасаюсь, что начав использовать подобный инструмент перестану вникать, как периферия работает на самом деле. В ущерб качеству кода.


Я сам не сторонник таких редакторов. Но иногда приходится их использовать. Я ассемблер понимаю местами и чисто интуитивно. Сказывается отсутствие серьёзной практики в этом направлении. А практики нет, потому что надо решать прикладную задачу. Вобщем такой замкнутый круг. Но, зато, подобный редактор мне позволил очень быстро стартануть с новым процессором. Сейчас, спустя несколько недель я, в принципе, уже понимаю, что происходит в этом стартапе. Но это понимание пришло, когда я прошерстил не одну сотню страниц из даташита.

Сообщение отредактировал Ixt - Oct 11 2013, 07:45
Go to the top of the page
 
+Quote Post

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

 


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


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