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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> FreeRTOS LPC2368 Rowley/uIP перенести на IAR
dmyl
сообщение May 29 2007, 09:41
Сообщение #1


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Есть МСВ2360, и есть свежый порт http://www.freertos.org/portlpc2368uIP.html
Надо будет сделать похожее на своем железе, которое уже через месяц будет готово, пока есть желание поиграться с отладочником и софтом.
Скачал поставил CW проект компилится, посмотрел его структуру. Всегда работал с IARом, хочу перенести код туда.
Вопросы:
- ОСь никогда сам не портировал, хотя пользовался DSP/BIOS как ОСРВ работает хорошо представляю. Начал формировать проект в IARе - такое чувство что делаю что-то не через то место. Как правильно работать с такими большими проектами, какие есть программные средства чтобы управлять проектом с осью?
- к CW подцепил сеггеровский драйвер J-Link, а он отказывается работать. Вообще из CW можно прошить кристалл J-Link'ом?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 29 2007, 09:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 29 2007, 12:41) *
Начал формировать проект в IARе - такое чувство что делаю что-то не через то место. Как правильно работать с такими большими проектами, какие есть программные средства чтобы управлять проектом с осью?

Ну отсюда не видать smile.gif. Среди FreeRTOS портов есть и IARовские - можете посмотреть в качестве образца. Проект по размерам совсем не большой да и был-бы большой - какие проблемы? На какие волшебные средства 'управления' рассчитываете?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 29 2007, 10:08
Сообщение #3


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(zltigo @ May 29 2007, 14:53) *
На какие волшебные средства 'управления' рассчитываете?

В CW проект разбит на 4 папки демо, ось, стек и системные файлы.
Причем по самим папкам тоже логики нифига никакой в демо кроме самой демки куча файлов из разных папок фриртоса. Даже перетаскивать проект в IAR и то гемор приходится куски по разным папкам собирать логики никакой. Может просто файлы по папкам как-то разложить, отдельно приложение отдельно ось отдельно стек, а потом также и проект разбить. Вообщем хочется чтобы все лежало на своих местах а не кучей.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 29 2007, 10:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 29 2007, 13:08) *
В CW проект разбит на 4 папки демо, ось, стек и системные файлы.

Ну вместо demo - какое-то количество уже Ваших файлов, а остальное оставить как есть, ибо логика там присутствует и дальнейшая структура при сопровождении ядра будет именно такая. Впрочем, если Вы абсолютно уверены, что никакие другие компиляторы и контроллеры Вы использовать не будете, то можно все внутри этих трех упростить.
Цитата
Причем по самим папкам тоже логики нифига никакой

Простите, логика есть.
http://www.freertos.org/ -> Informations->Fundamentals->Source Organisation

Цитата
в демо кроме самой демки куча файлов из разных папок фриртоса.

Естественно.
Цитата
Может просто файлы по папкам как-то разложить, отдельно приложение отдельно ось отдельно стек

ОНИ ТАК УЖЕ ЛЕЖАТ.

Сообщение отредактировал zltigo - May 29 2007, 10:38


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 29 2007, 10:48
Сообщение #5


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата
Ну вместо demo - какое-то количество уже Ваших файлов

Это ясно, демку оттуда выкинуть и будет папка приложения.

Цитата
Впрочем, если Вы абсолютно уверены, что никакие другие компиляторы и контроллеры Вы использовать не будете, то можно все внутри этих трех упростить.

Компилятор пожалуй нет, IAR пока меня устраивает. Контроллеры возможно и другие но маловероятно что не NXP.
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 29 2007, 14:51
Сообщение #6


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Посмотрел порт под IAR системная часть организована немного по разному.
В IARовских портах в системной папке используется один мизерный стартап cstartup.s79, а вот в порте CW в системной папке файлов полно и функций они выполняют изрядно. Кроме собственно стартапа поддержка таймера, более сложная инициализация стеков, куча функций работы с VIC, ISR IRQ, и самое неудобное что все эти модули подключают кросворковские хидера.
Лишнего там кончено точно полно, исходный порт разбабахивать сразу сильно нехотелось бы, но видимо придется.

Пока вопрос такой - полно вот таких описаний сруктур.

struct uip_eth_hdr {
struct uip_eth_addr dest;
struct uip_eth_addr src;
u16_t type;
}PACK_STRUCT_END;

Компилятор понимает описание
struct
{
поле
поле
...
}
имя структуры

Поэтому PACK_STRUCT_END принимает за имя и ругается на их несоответствие
Error[Pe147]: declaration is incompatible with "struct uip_icmpip_hdr __data PACK_STRUCT_END"
Видимо надо не править а включить у компилятора поддержку какого-то расширения?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 29 2007, 15:56
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 29 2007, 17:51) *
Поэтому PACK_STRUCT_END ...

Глянул lwIP мельком - это макрос smile.gif и он должен быть просто определен и проблем не будет.
Но стиль написания, конечно, дурацкий sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 30 2007, 08:07
Сообщение #8


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(zltigo @ May 29 2007, 20:56) *
Глянул lwIP мельком - это макрос smile.gif и он должен быть просто определен и проблем не будет.
Но стиль написания, конечно, дурацкий sad.gif

Там не lwIP а uIP, но не суть. Макрос разрыл в проекте CW он структуру делает packed. Что-то в IARe мне не удалось его заставить понять исходный код. Перенес имена структур вместо этого PACK_STRUCT_END. Помогает, но такие косяки лезут толпами. Наверное это неправильный путь переделывать из CW порта на IAR, запустить порт малой кровью под ИАРом все равно не получается, а если все ломать - то наверное лучше взять порт на ближайший LPC но ИАРовский, портировать его на 2368, а потом уже туда втыкать стек и все остальное.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 30 2007, 08:22
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 30 2007, 11:07) *
Там не lwIP а uIP, но не суть. Макрос разрыл в проекте CW он структуру делает packed. Что-то в IARe мне не удалось его заставить понять исходный код.

То, что он делает, это понятно, но то, что кто-то попытался извратиться и вместо более-менее общепринятых вариаций на тему #pragma pack использовать более узкоспециализированное это уже плохо. Все дивные макросы дефинировать в "ничего" и использовать или прямые указания
#pragma pack( push, 1 )
#pragma pack( pop )
либо через #include их-же через внешние файлы.
Цитата
Перенес имена структу...

Я непонял, что Вы сделали, но все очень просто и я описал это выше.
Цитата
Наверное это неправильный путь переделывать из CW порта на IAR

Почему?????


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 30 2007, 08:35
Сообщение #10


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(zltigo @ May 30 2007, 13:22) *
То, что он делает, это понятно, но то, что кто-то попытался извратиться и вместо более-менее общепринятых вариаций на тему #pragma pack использовать более узкоспециализированное это уже плохо. Все дивные макросы дефинировать в "ничего" и использовать

Так и пробовал - ИАР почему то не понял.

Цитата
или прямые указания
#pragma pack( push, 1 )
#pragma pack( pop )
либо через #include их-же через внешние файлы.

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

Да я чего-то код правлю и правлю, уже хидера от стека переделал, чтобы свои не цеплялись перенес все в новый каталог - получается уже развалил структуру файлов. И при этом я еще и не брался за папку систем а там вообще на первый взгляд сплошные кросворковские подключения.
Просто ломается рабочий код, к тому моменту как он начнет компилиться он перестанет работать. Мне уже кажется что проще пойти с другой стороны взять ЛПСишный ИАРовский порт попроще - и портировать его на 2368, там вроде проще а потом в рабочий код надстраивать стеки.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 30 2007, 08:45
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 30 2007, 11:35) *
Так и пробовал - ИАР почему то не понял.

Он не мог не понять smile.gif значит ошиблись.
Цитата
Или я не понял или прямые указания надо все равно вбивать перед определением структуры.

Да. Но с тем-же самым, но в #include получается переносимее, ибо в основном файле уже нет специфики компилятора, а в сам include можно напихать распознавание кучи компиляторов и пользоваться им всегда и везде.
Цитата
Мне уже кажется что проще пойти с другой стороны взять ЛПСишный ИАРовский порт попроще - и портировать его на 2368, там вроде проще а потом в рабочий код надстраивать стеки.

Примерно один черт, единственно, если все впервой и большей частью sad.gif по наитию, то получается, что идти "от рабочего" кода действительно несколько спокойнее.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 30 2007, 09:11
Сообщение #12


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(zltigo @ May 30 2007, 13:45) *
Он не мог не понять smile.gif значит ошиблись.

Я ставил пустой дефайн в опциях проекта в предопределенные символы, странно если пустой дефайн в хидеренаписать работает, а из опций нет.

Цитата
Да. Но с тем-же самым, но в #include получается переносимее, ибо в основном файле уже нет специфики компилятора, а в сам include можно напихать распознавание кучи компиляторов и пользоваться им всегда и везде.

С инклудом не понял все равно, как можно не меняя хидер uip.h на место PACK_STRUCT_END воткнуть #pragma pack - он же вроде бы как должен быть перед определением структуры.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 30 2007, 09:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 30 2007, 12:11) *
как можно не меняя хидер uip.h на место PACK_STRUCT_END ....

Так, давайте медленно и печально. Первый вопрос где Вы вообще смогли увидеть PACK_STRUCT_END и прочие паковочные макросы в uIP подчеркиваю в uIP а не lwIP стеке.
В lwIP, где они действительно присутствуют для работы c include просто:
Код
#define PACK_STRUCT_USE_INCLUDES
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END

И в два файла (у меня они по жизни называются packon.h и packoff.h а у авторов стека соответственно
bpstruct.h и epstruct.h )
Мои файлы в приложении. Можете их или переименовать, или заинклюдить smile.gif еще раз в авторские имена.
Прикрепленные файлы
Прикрепленный файл  PACK_on_off.rar ( 408 байт ) Кол-во скачиваний: 67
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmyl
сообщение May 30 2007, 10:34
Сообщение #14


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

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(zltigo @ May 30 2007, 14:31) *
Так, давайте медленно и печально. Первый вопрос где Вы вообще смогли увидеть PACK_STRUCT_END и прочие паковочные макросы в uIP подчеркиваю в uIP а не lwIP стеке.

В хидере uip.h, также uip_arp.h там я правил точно smile.gif
Может проблема в том что я смотрю в UIP из комплекта порта фриртоса?

Цитата
В lwIP, где они действительно присутствуют для работы c include просто:
Код
#define PACK_STRUCT_USE_INCLUDES
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END

Тут все ясно, незнаю почему не работало если определения вставлены в опции предефайна проекта, другие дефайны там же вроде проканали.

Цитата
И в два файла (у меня они по жизни называются packon.h и packoff.h а у авторов стека соответственно
bpstruct.h и epstruct.h )
Мои файлы в приложении. Можете их или переименовать, или заинклюдить smile.gif еще раз в авторские имена.

Я понял - предлагается PACK_STRUCT_**** заменить пустыми дефайнами, а директивы #pragma pack распространить инклудом на весь проект. Так?

Худо бедно стек скомпилил перешел к другим папкам пытаюсь разобраться дефайнами
portENTER_SWITCHING_ISR();
portEXIT_SWITCHING_ISR(...);
чего-то там тоже неблагополучно ИАР теряет скобки Error[Pe125]: expected a "("


Сразу еще такой вопрос, в CW порте используется portmacro и portISR из папки GCC, как в ИАРе быть с атрибутами naked и signal? __irq?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 30 2007, 12:53
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmyl @ May 30 2007, 13:34) *
В хидере uip.h, также uip_arp.h там я правил точно smile.gif
Может проблема в том что я смотрю в UIP из комплекта порта фриртоса?

А я тогода куда смотрю smile.gif
Цитата
Я понял - предлагается PACK_STRUCT_**** заменить пустыми дефайнами

Именно так в оригинале и задумано - варьировать ими в зависимости от возможностей компилятора.
Цитата
, а директивы #pragma pack распространить инклудом на весь проект. Так?

На весь замного будет - только на пакованные структуры правильнее.
Цитата
Худо бедно стек скомпилил перешел к другим папкам пытаюсь разобраться дефайнами
portENTER_SWITCHING_ISR();
portEXIT_SWITCHING_ISR(...);

А чего с ними разбираться - берете готовые из IAR порта и все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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