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

 
 
> Портирование uCOS под CrossWorks, Кто-нибудь портировал uCOS под CrossWorks?
Lemist
сообщение Apr 29 2010, 14:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 28-04-10
Из: город Харьков
Пользователь №: 56 948



Кто-нибудь портировал uCOS под CrossWorks? Если да, подскажите, как в этой среде сделать, чтобы CrossWorks понимала PRIMASK, PSP и другие специальные регистры. И вообще, откуда взялись ошибки типа
STM R0, {R4-R11} Io register required
LDM R0, {R4-R11} Io register required
POP {R14} unvalid register list to push/pop instruction (при этом команда PUSH {R14} прошла без вопросов)
ORR LR, LR, #0x04 unshifted register required
Ассемблерные команды вроде бы правильные, соответствуют архитектуре Cortex, но...
Отзовитесь, плиз.
Пожалуйста, не удаляйте эту тему.

Сообщение отредактировал Lemist - Apr 29 2010, 15:23
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bseyur
сообщение May 11 2010, 15:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



А вы не пробовали вообще не указывать директивы вроде code16 или code32? Cortex - то ведь thumb-only процессор, у него один-единственный набор команд, следовательно и необходимость подобных директив отпадает.
В даташите на процессор под ARM-инструкциями для LPC17xx понимаются существующие 32-разрядные инструкции, но на самом деле они лежат в одном наборе с 16-разрядными под общим названием Thumb-2 и не требуют особого объявления. Есть, конечно, такие команды как LDR.N (16 бит) и LDR.W (32 бит), но это уже, скорее, тема для иного разговора, если интересно, можете почитать о них в документации.
Go to the top of the page
 
+Quote Post
Lemist
сообщение May 12 2010, 06:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 28-04-10
Из: город Харьков
Пользователь №: 56 948



Цитата(bseyur @ May 11 2010, 18:56) *
А вы не пробовали вообще не указывать директивы вроде code16 или code32? Cortex - то ведь thumb-only процессор, у него один-единственный набор команд, следовательно и необходимость подобных директив отпадает.
В даташите на процессор под ARM-инструкциями для LPC17xx понимаются существующие 32-разрядные инструкции, но на самом деле они лежат в одном наборе с 16-разрядными под общим названием Thumb-2 и не требуют особого объявления. Есть, конечно, такие команды как LDR.N (16 бит) и LDR.W (32 бит), но это уже, скорее, тема для иного разговора, если интересно, можете почитать о них в документации.


Если не указывать никакой директивы "вроде code16 или code32", эффект тот же, как и при указании code16 - ассемблерный файл компилится, а потом при линковании выпадают все те сообщения, что упомянуты у меня в предыдущей реплике:
C:/Program Files/Rowley Associates Limited/CrossWorks for ARM 1.7/gcc/bin/ld: region UNPLACED_SECTIONS is full (THUMB Flash Debug/LPC1756_Test.elf section .code)
Что это за region UNPLACED_SECTIONS и чем это он забит? Ведь в компилируемом ассемблерном файле четко указано
.section .code, "ax"
то есть это именованная секция.
Go to the top of the page
 
+Quote Post



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

 


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


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