|
eCos, вопрос на засыпку |
|
|
|
May 10 2006, 07:39
|

Группа: Новичок
Сообщений: 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 почему он не работает. Или мож я гдето недопонимаю?
|
|
|
|
|
 |
Ответов
(1 - 11)
|
May 11 2006, 11:23
|

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

|
Ещё один вопрос. Как имея на плате FTDI чип запустить тесты из configtool (в линуксе). Там зашиты порты COM1-8, а драйвер виртуального СОМ порта по другому называется...
|
|
|
|
|
May 12 2006, 13:30
|

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

|
Продолжаем разговор... Либы (из конфигтулза) для LPC2294 собрались. Как бы их проверить?
Сообщение отредактировал WarNick - May 12 2006, 13:31
|
|
|
|
|
May 15 2006, 06:31
|

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

|
Цитата(WarNick @ May 12 2006, 17:30)  Продолжаем разговор... Либы (из конфигтулза) для LPC2294 собрались. Как бы их проверить? ну видимо нужно собрать своё приложение=эти либы + свой код документацию то читали?
--------------------
Cogito ergo sum
|
|
|
|
|
May 24 2006, 13:19
|

Группа: Новичок
Сообщений: 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(".");} }
Т.е. судя по всему он просто плюёт на функции создания трэдов, ибо они не пашут. Причём мат опреации и вывод в СОМ работают на ура. В чём может быть проблема?
|
|
|
|
|
May 24 2006, 15:14
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

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

МедвеД Инженер 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...некрасиво
--------------------
Cogito ergo sum
|
|
|
|
|
May 25 2006, 13:09
|

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

|
Цитата(Postoroniy_V @ May 24 2006, 19:30)  имхо причина в строке while (1){printf(".");} printf безо всяких mutex...некрасиво  Я бы не стал этот вайл писать, еслиб не хотел понять работает эта прога или нет. Грубо говоря сперва было без него и всё что я видел в терминалке - строка приветствия (Entering twothreads' cyg_user_start() function) и всё... молчёк. Хотя должны работать фенкции трэдов и писать свои строчки...
|
|
|
|
|
May 26 2006, 09:05
|

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

|
Цитата(Postoroniy_V @ May 25 2006, 17:36)  а предположения Andrew2000 проверили? с таймеров все ок? А можно поподробнее про таймеры? потомучто чёткого объявления в экзамплах таймеров нету. По идее надо юзать функцию HAL_CLOCK_INITIALIZE( period ) в описании написано, что устроййство генерит прерывание. А вот какое устройство, кто этот интеррапт обрабатывает... что то тёмное дело.. Возможно так же некие баги из-за того, что я под рэдбутом пример загружаю?.. Может сам рэдбут кривой...
|
|
|
|
|
May 30 2006, 12:49
|

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

|
А можно на пальцах "для тупого програмера" объяснить.. Вот у меня допустим есть таймер я его заинитил.
Если бы я писал с нуля, то в таблице векторов я бы указал имя функции, которая обрабатывает нужное мне прерывание. А в еКосе как?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|