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

 
 
 
Reply to this topicStart new topic
a9d
сообщение Feb 9 2012, 21:58
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



ОС не стартует.
А точнее управление постоянно передается в main. Он вертится по кругу.

В scmRTOS_TARGET_CFG.h все, что нужно, ссылается на iom32u4.h

Сообщение отредактировал a9d - Feb 9 2012, 21:59
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 9 2012, 22:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(a9d @ Feb 9 2012, 23:58) *
ОС не стартует.
А точнее управление постоянно передается в main. Он вертится по кругу.

В scmRTOS_TARGET_CFG.h все, что нужно, ссылается на iom32u4.h

Вы бы проект выложили что ли...
Может стека не хватает?
Go to the top of the page
 
+Quote Post
a9d
сообщение Feb 9 2012, 22:14
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Кх кх.
ОС не стартует. Проекта еще никакого и нет. Там всего один процесс и ниодного пользовательского прерывания.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 9 2012, 22:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(a9d @ Feb 10 2012, 00:14) *
Проекта еще никакого и нет.

Ка же нет, когда вы что-то запускаете.

Цитата(a9d @ Feb 10 2012, 00:14) *
Там всего один процесс и ниодного пользовательского прерывания.

Тем проще разобраться...


Была такая же фигня как-то. Так и не понял что: просто всё стёр и начал занового.
А ведь интересно узнать как можно добится такого эффекта...взять и испортить хорошую вещь.





Go to the top of the page
 
+Quote Post
a9d
сообщение Feb 9 2012, 22:28
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Проекта нет.
Я скомпелировал шаблон с одним процессом и по юарту шлю байты.
В main 0
В proc1 1

На выходе есть только 0.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 9 2012, 22:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(a9d @ Feb 10 2012, 00:28) *
Я скомпелировал шаблон с одним процессом и по юарту шлю байты.

Непонятная фраза, обычно файл компилируется (или единица компиляции). А шаблон...чего на свете не бывает...
Компилятор какой кстати?

Цитата(a9d @ Feb 10 2012, 00:28) *
В main 0
В proc1 1

На выходе есть только 0.

А OS::Run(); у вас в main есть, и что в конфигах, какое количество процессов?
Go to the top of the page
 
+Quote Post
a9d
сообщение Feb 10 2012, 13:56
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Протестил версию 3.10.
Все работает.

Версия 4.0
Не пашет. Постоянно валится в main.
JTAG нет. Отследил только до прерывания таймера. После выхода из него ОС улетает.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 12 2012, 11:39
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Я порт 4.0 для AVR и примеры GCC, IAR проверяю на atmega168, atmega64, atmega2561. Пока всё работало.
Давайте мне (real на real.kiev.ua) архив проекта целиком, я попробую разобраться.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
a9d
сообщение Feb 12 2012, 12:48
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Проект отправил.
На меге168pа я в первый раз запустил 4.0 , там все нормально. Для того и этого проекта использовался идентичный шаблон.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 18 2012, 09:25
Сообщение #10


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Похоже, зараза, близкая к тому, что было с ATmega1280/1281. Которая имеет 64 килослова флеша и, соответственно, 2-байтовый PC и отсутствие необходимости в командах EIJMP/EICALL и регистре EIND.

Упс! Я до сих пор не вбросил правку этого в репозиторий!
Похоже, в это воскресенье нужно выделить пол дня на подчистки scmRTOS/AVR

Проверка __AVR_3_BYTE_PC__ это хорошо, но макрос присутствует начиная с версии avr-gcc 4.1.2, поэтому необходимость резервирования места на стеке для дополнительного байта PC при инициализации начального стекового кадра я определял по EIND. В итоге нужна более сложная проверка. Или, наоборот, более простая — по макросу размера флеша FLASHEND.
Или отказ от поддержки версий до, например 4.3.2.
Там уже есть полный набор __AVR_HAVE_RAMPZ__ __AVR_HAVE_16BIT_SP__ и т.п.

Ну так вот. Не знаю, как в других сборках (может зависеть от версии avr-libc), но в имеющейся у меня в файле iom32u4.h есть определение для регистра EIND, хотя его нет в документации на кристалл.

Сделайте пока правку как в теме по линку.
А я решу что делать дальше.

Наверное, что-то в духе
Код
#if !defined(__AVR_3_BYTE_PC__) && !defined(__AVR_2_BYTE_PC__)
// опереться на FLASHEND < 0x20000
#endif


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 19 2012, 22:24
Сообщение #11


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Вбросил обновление.
«что-то с памятью» — был уверен, что в какой-то из версий avr-gcc поддержка atmega256x уже была, а предопределённых __AVR_*_BYTE_PC__ еще не было. Но они появились синхронно. Так что для 3-го байта и для EIND простая проверка.

А вот с RAMPZ, чтобы зря не сохранять/восстанавливать для контроллеров с <= 64K флеша, пришлось сделать с проверкой версии GCC.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 21:33
Рейтинг@Mail.ru


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