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

 
 
> eCos, вопрос на засыпку
WarNick
сообщение May 10 2006, 07:39
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



Интересует порт на LPC2294. Собственно процедура следующая качаю eCos 2.0 по рекомендации, написанной на сайте + 1.3 ибо там есть порт на более ранние модели LPC.
Просто ради интереса пытаюсь собрать темплейт для mcb2100

В основном cdl файле (hal_arm_lpc2xxx_mcb2100.cdl) написано
requires { CYGHWR_HAL_ARM_LPC2XXX == "LPC2129" }

и параметр 2129 есть в разрешённых

hal_arm_lpc2xxx.cdl:

default_value {"LPC210x"}
legal_values {"LPC210x"
"LPC2114" "LPC2119" "LPC2124" "LPC2129" "LPC2132"
"LPC2138" "LPC2194" "LPC2212" "LPC2214" "LPC2290"
"LPC2292" "LPC2294"}
Но сам eCos ругается на него как на недопустимый параметр. Если в первом файде ставить дефолтное значение 210x - всё пучком...

Насколько я понимаю этот параметр говорит об конфигурации портов IO. В файлике
lpc2xxxvar/currentinclude/var_io.h есть такая строчка
#if defined(CYGHWR_HAL_ARM_LPC2XXX_LPC210x)
(тра-та-та описание портов)
есть такое
#if defined(CYGHWR_HAL_ARM_LPC2XXX_LPC2212) || \ defined(CYGHWR_HAL_ARM_LPC2XXX_LPC2214)
(//-//-//-)

дефайна на 2129 нету.

Внимание вопрос: если они включают порт для версии 2129 почему он не работает. Или мож я гдето недопонимаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
WarNick
сообщение May 11 2006, 11:23
Сообщение #2





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



Ещё один вопрос. Как имея на плате FTDI чип запустить тесты из configtool (в линуксе). Там зашиты порты COM1-8, а драйвер виртуального СОМ порта по другому называется...
Go to the top of the page
 
+Quote Post
WarNick
сообщение May 12 2006, 13:30
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



Продолжаем разговор... Либы (из конфигтулза) для LPC2294 собрались. Как бы их проверить?

Сообщение отредактировал WarNick - May 12 2006, 13:31
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение May 15 2006, 06:31
Сообщение #4


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(WarNick @ May 12 2006, 17:30) *
Продолжаем разговор... Либы (из конфигтулза) для LPC2294 собрались. Как бы их проверить?

ну видимо нужно собрать своё приложение=эти либы + свой код
документацию то читали?


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
WarNick
сообщение May 24 2006, 13:19
Сообщение #5





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



И снова здрасте )
Ещё вопросец. Есть eCos (default build) либы. Пробую пример из экзамплов - twothreads. Компилю это приложение и заливаю его с помощью редбута в борду. И наблюдаю следующее:

void cyg_user_start(void){
int t;
t=0;


printf("Entering twothreads' cyg_user_start() function\n"); это он показывает

это он скипает:
cyg_mutex_init(&cliblock);

cyg_thread_create(4, simple_program, (cyg_addrword_t) 0,
"Thread A", (void *) stack[0], 4096,
&simple_threadA, &thread_s[0]);
cyg_thread_create(4, simple_program, (cyg_addrword_t) 1,
"Thread B", (void *) stack[1], 4096,
&simple_threadB, &thread_s[1]);

cyg_thread_resume(simple_threadA);
cyg_thread_resume(simple_threadB);

и доходя до этого крутится в вайле вечно.
while (1){printf(".");}
}

Т.е. судя по всему он просто плюёт на функции создания трэдов, ибо они не пашут. Причём мат опреации и вывод в СОМ работают на ура. В чём может быть проблема?
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение May 24 2006, 15:14
Сообщение #6


Местный
***

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



Цитата(WarNick @ May 24 2006, 17:19) *
Т.е. судя по всему он просто плюёт на функции создания трэдов, ибо они не пашут. Причём мат опреации и вывод в СОМ работают на ура. В чём может быть проблема?

Видимо, прерывания от таймера нет - планировщик не вызывается...
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение May 24 2006, 15:30
Сообщение #7


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(WarNick @ May 24 2006, 17:19) *
И снова здрасте )
Ещё вопросец. Есть eCos (default build) либы. Пробую пример из экзамплов - twothreads. Компилю это приложение и заливаю его с помощью редбута в борду. И наблюдаю следующее:

void cyg_user_start(void){
int t;
t=0;


printf("Entering twothreads' cyg_user_start() function\n"); это он показывает

это он скипает:
cyg_mutex_init(&cliblock);

cyg_thread_create(4, simple_program, (cyg_addrword_t) 0,
"Thread A", (void *) stack[0], 4096,
&simple_threadA, &thread_s[0]);
cyg_thread_create(4, simple_program, (cyg_addrword_t) 1,
"Thread B", (void *) stack[1], 4096,
&simple_threadB, &thread_s[1]);

cyg_thread_resume(simple_threadA);
cyg_thread_resume(simple_threadB);

и доходя до этого крутится в вайле вечно.
while (1){printf(".");}
}

Т.е. судя по всему он просто плюёт на функции создания трэдов, ибо они не пашут. Причём мат опреации и вывод в СОМ работают на ура. В чём может быть проблема?

в этом прримере вы в while(1) вызываете printf это же самое делают другие треды которые вы создали
посмотрите в исходник тех тредов что пытаетесь создать...
имхо причина в строке
while (1){printf(".");}
printf безо всяких mutex...некрасиво biggrin.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
WarNick
сообщение May 25 2006, 13:09
Сообщение #8





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



Цитата(Postoroniy_V @ May 24 2006, 19:30) *
имхо причина в строке
while (1){printf(".");}
printf безо всяких mutex...некрасиво biggrin.gif

Я бы не стал этот вайл писать, еслиб не хотел понять работает эта прога или нет. Грубо говоря сперва было без него и всё что я видел в терминалке - строка приветствия (Entering twothreads' cyg_user_start() function) и всё... молчёк. Хотя должны работать фенкции трэдов и писать свои строчки...
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение May 25 2006, 13:36
Сообщение #9


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



а предположения Andrew2000 проверили?
с таймеров все ок?


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
WarNick
сообщение May 26 2006, 09:05
Сообщение #10





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



Цитата(Postoroniy_V @ May 25 2006, 17:36) *
а предположения Andrew2000 проверили?
с таймеров все ок?

А можно поподробнее про таймеры? потомучто чёткого объявления в экзамплах таймеров нету.
По идее надо юзать функцию HAL_CLOCK_INITIALIZE( period ) в описании написано, что устроййство генерит прерывание. А вот какое устройство, кто этот интеррапт обрабатывает... что то тёмное дело..


Возможно так же некие баги из-за того, что я под рэдбутом пример загружаю?.. Может сам рэдбут кривой...
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение May 26 2006, 09:46
Сообщение #11


Местный
***

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



Кажется в этом районе (но это чисто теоретичеки, c LPC не работал):
ecos\packages\hal\arm\lpc2xxx\var\current\src\lpc2xxx_misc.c
Go to the top of the page
 
+Quote Post
WarNick
сообщение May 30 2006, 12:49
Сообщение #12





Группа: Новичок
Сообщений: 12
Регистрация: 4-04-06
Пользователь №: 15 786



А можно на пальцах "для тупого програмера" объяснить.. Вот у меня допустим есть таймер я его заинитил.

Если бы я писал с нуля, то в таблице векторов я бы указал имя функции, которая обрабатывает нужное мне прерывание. А в еКосе как?
Go to the top of the page
 
+Quote Post

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

 


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


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