Jump to content
    

ATmega32u4 проблема.

ОС не стартует.

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

 

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

Edited by a9d

Share this post


Link to post
Share on other sites

ОС не стартует.

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

 

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

Вы бы проект выложили что ли...

Может стека не хватает?

Share this post


Link to post
Share on other sites

Кх кх.

ОС не стартует. Проекта еще никакого и нет. Там всего один процесс и ниодного пользовательского прерывания.

Share this post


Link to post
Share on other sites

Проекта еще никакого и нет.

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

 

Там всего один процесс и ниодного пользовательского прерывания.

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

 

 

Была такая же фигня как-то. Так и не понял что: просто всё стёр и начал занового.

А ведь интересно узнать как можно добится такого эффекта...взять и испортить хорошую вещь.

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Проекта нет.

Я скомпелировал шаблон с одним процессом и по юарту шлю байты.

В main 0

В proc1 1

 

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

Share this post


Link to post
Share on other sites

Я скомпелировал шаблон с одним процессом и по юарту шлю байты.

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

Компилятор какой кстати?

 

В main 0

В proc1 1

 

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

А OS::Run(); у вас в main есть, и что в конфигах, какое количество процессов?

Share this post


Link to post
Share on other sites

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

Все работает.

 

Версия 4.0

Не пашет. Постоянно валится в main.

JTAG нет. Отследил только до прерывания таймера. После выхода из него ОС улетает.

Share this post


Link to post
Share on other sites

Я порт 4.0 для AVR и примеры GCC, IAR проверяю на atmega168, atmega64, atmega2561. Пока всё работало.

Давайте мне (real на real.kiev.ua) архив проекта целиком, я попробую разобраться.

 

Share this post


Link to post
Share on other sites

Проект отправил.

На меге168pа я в первый раз запустил 4.0 , там все нормально. Для того и этого проекта использовался идентичный шаблон.

Share this post


Link to post
Share on other sites

Похоже, зараза, близкая к тому, что было с 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

Share this post


Link to post
Share on other sites

Вбросил обновление.

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

 

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...