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

 
 
> scmRTOS. Порт под AT91SAM7X, у кого есть уже отлаженный?
LessNik
сообщение Jan 9 2008, 12:23
Сообщение #1


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Привет всем.
Решил поиграться с scmRTOS. Скачал порт под арм, но поддержки AT91Sam7x... там не было. Дописал часть сам, но ОС работает как-то не стабильно. Может где-то ошибся...
Может кто-нибудь поделится уже отлаженным портом?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 9 2008, 12:45
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(LessNik @ Jan 9 2008, 14:23) *
Решил поиграться с scmRTOS. Скачал порт под арм, но поддержки AT91Sam7x... там не было.
А чем SAM7X отличается от SAM7S с точки зрения исходников ОС? Я бегло просматривал документацию на SAM7X, но не нашел там принципиальных отличий, которые могли бы повлиять на работу ОС.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
LessNik
сообщение Jan 9 2008, 15:36
Сообщение #3


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата(Сергей Борщ @ Jan 9 2008, 15:45) *
А чем SAM7X отличается от SAM7S с точки зрения исходников ОС? Я бегло просматривал документацию на SAM7X, но не нашел там принципиальных отличий, которые могли бы повлиять на работу ОС.


Принципиальных различий вроде нет, но возникли некоторые проблемы:
1. Вылазила ошибка Memory access timed out @ 00003F00 -> JTAG speed too high при попытке выполнить Reset.
Поправил mac файл, вроде легче стало. Надеюсь тут не ошибся:

Код
_InitRSTC() {
    __writeMemory32(0xA5000001, 0xFFFFFD08,"Memory");    // Allow user reset
}

_InitPLL() {

    __message "Set Main Oscillator";
    __writeMemory32(0x00004001,0xFFFFFc20,"Memory");    // MOSC
    while( !(__readMemory32(0xFFFFFc68,"Memory") & 0x1)  );

    __message "Set PLL to 96MHz";
    __writeMemory32(0x10483f0e,0xFFFFFc2c,"Memory");    // LOCK
    while( !(__readMemory32(0xFFFFFc68,"Memory") & 0x4)  );

    __message "Set Master Clock to 48MHz";
    __writeMemory32(0x00000004,0xFFFFFc30,"Memory");    // MCKRDY
    while( !(__readMemory32(0xFFFFFc68,"Memory") & 0x8)  );
    __writeMemory32(0x00000007,0xFFFFFc30,"Memory");    // MCKRDY
    while( !(__readMemory32(0xFFFFFc68,"Memory") & 0x8)  );
}


execUserPreload()
{
    Reset();
    Remap_RAM();
    __writeMemory32(0xD3,0x98,"Register");                          // CPSR = SVC mode, ARM, IRQ, FIQ disabled
    
   _InitRSTC();    
}

execUserReset()
{
    Reset();
    
    Remap_RAM();

    __writeMemory32(0xD3,0x98,"Register");                          // CPSR = SVC mode, ARM, IRQ, FIQ disabled
    __writeMemory32(0x00000000,0xB4,"Register");
    
__emulatorSpeed(0);                 // Set JTAG speed to full speed
    
}

__var tmp;
Remap_RAM()
{
    tmp = __readMemory32(0x00200000, "Memory");                     // read from RAM area
    __writeMemory32(~tmp, 0x00200000, "Memory");                    // alter RAM area
    if( ~tmp != __readMemory32(0x00000000, "Memory") )              // check if altering mirrored to remap area
    {
        __writeMemory32(0x00000001, 0xFFFFFF00,"Memory");
    }
    __writeMemory32(tmp, 0x00200000 ,"Memory");                     // restore RAM data
    __message " remap ";
}


Reset()
{
    __message "execUserReset()";
    __emulatorSpeed(30000);             // Set JTAG speed to 30kHz to make a hardware reset
    
    __writeMemory32(0xA5000004, 0xFFFFFD00, "Memory");              // reset the peripherals    
    
    _InitPLL();                         // Allow to debug at JTAG Full Speed
    __emulatorSpeed(0);

}


2.
Дописал ещё в device.h
#elif defined(AT91SAM7X256)
#include <ioAT91SAM7X256.h>
и в OS_Target_core.h
| defined(AT91SAM7X256)

Надеюсь ничего больше не забыл, нето ведь всё равно скомпилится -) -(

Сейчас вроде всё работает.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 9 2008, 16:19
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(LessNik @ Jan 9 2008, 17:36) *
Принципиальных различий вроде нет, но возникли некоторые проблемы:
1. Вылазила ошибка Memory access timed out @ 00003F00 -> JTAG speed too high при попытке выполнить Reset.
Вроде на последних версиях иара с adaptive clocking уже не слетает. Аналогичные вашим действия у меня вроде как делались в Reset(), правда там они были сделаны с проверкой на наличие JLink, если у вас другой отладчик - надо просто выкинуть проверки.
Цитата(LessNik @ Jan 9 2008, 17:36) *
Дописал ещё в device.h
и в OS_Target_core.h
Это тоже уже дописано в той версии, которая лежит в репозитории. Попробуйте ее - там много улучшений, и она же будет включена в ближайший релиз.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
LessNik
сообщение Jan 10 2008, 05:33
Сообщение #5


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата
Это тоже уже дописано в той версии, которая лежит в репозитории. Попробуйте ее - там много улучшений, и она же будет включена в ближайший релиз.


Этот репозиторий на ftp электроникса? У меня нет к нему доступа. Может можно ещё откуда-нибудь скачать. Если можно, дайте прямую ссылку.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- LessNik   scmRTOS. Порт под AT91SAM7X   Jan 9 2008, 12:23
|- - dxp   Цитата(LessNik @ Jan 10 2008, 11:33) Этот...   Jan 10 2008, 07:07
|- - LessNik   Цитата(dxp @ Jan 10 2008, 10:07) Нет, име...   Jan 10 2008, 11:46
|- - Сергей Борщ   Цитата(LessNik @ Jan 10 2008, 13:46) Спас...   Jan 10 2008, 12:36
|- - LessNik   Цитата(Сергей Борщ @ Jan 10 2008, 15:36) ...   Jan 11 2008, 10:03
|- - Сергей Борщ   Цитата(LessNik @ Jan 11 2008, 12:03) Что ...   Jan 11 2008, 11:20
|- - LessNik   Цитата(Сергей Борщ @ Jan 11 2008, 14:20) ...   Jan 11 2008, 13:32
- - Waso   Пересаживаюсь с FreeRTOS на scmRTOS. Проц AT91SAM7...   Jun 18 2008, 08:41
|- - Сергей Борщ   Цитата(Waso @ Jun 18 2008, 11:41) КодLoad...   Jun 18 2008, 14:33
- - Waso   C макросом я пока париться не стал. А со стеком во...   Jun 19 2008, 07:31
|- - Сергей Борщ   Цитата(Waso @ Jun 19 2008, 10:31) Как я п...   Jun 19 2008, 08:20
- - Waso   Скажите, а у вас стек ниспадающий чтоле? 0_о Запол...   Jun 20 2008, 08:28
|- - Сергей Борщ   Цитата(Waso @ Jun 20 2008, 11:28) Скажите...   Jun 20 2008, 09:02
- - Waso   Ясно. Незнал, простите. Вобщем теперь реализация т...   Jun 20 2008, 09:32
- - Waso   После ручного сброса или сьема/подачи питания пере...   Jun 23 2008, 08:43
|- - Сергей Борщ   Цитата(Waso @ Jun 23 2008, 11:43) После р...   Jun 23 2008, 09:52
- - Waso   Дописал в инициализацию AT91C_BASE_PMC->PMC_PC...   Jun 23 2008, 11:14
- - Сергей Борщ   Цитата(Waso @ Jun 23 2008, 14:14) Дописал...   Jun 28 2008, 12:51


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

 


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


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