|
scmRTOS. Порт под AT91SAM7X, у кого есть уже отлаженный? |
|
|
|
 |
Ответов
|
Jan 9 2008, 15:36
|

Частый гость
 
Группа: Свой
Сообщений: 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) Надеюсь ничего больше не забыл, нето ведь всё равно скомпилится -) -( Сейчас вроде всё работает.
|
|
|
|
|
Jan 9 2008, 16:19
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Jan 10 2008, 05:33
|

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

|
Цитата Это тоже уже дописано в той версии, которая лежит в репозитории. Попробуйте ее - там много улучшений, и она же будет включена в ближайший релиз. Этот репозиторий на ftp электроникса? У меня нет к нему доступа. Может можно ещё откуда-нибудь скачать. Если можно, дайте прямую ссылку.
|
|
|
|
|
Jan 10 2008, 11:46
|

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

|
Цитата(dxp @ Jan 10 2008, 10:07)  Нет, имеется в виду репозиторий на sourceforge.net. http://scmrtos.svn.sourceforge.net/viewvc/scmrtos/Спасибо. Скачал. Скомпилил и возникла ошибка. Дописал в Target_AT91SAM7.h #define OS_INTERRUPT __arm __irq и всё скомпилилось, но мой пример перестал работать стабильно(чип почему-то перезагружается).
|
|
|
|
|
Jan 10 2008, 12:36
|

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

|
Цитата(LessNik @ Jan 10 2008, 13:46)  Спасибо. Скачал. Скомпилил и возникла ошибка. Дописал в Target_AT91SAM7.h #define OS_INTERRUPT __arm __irq и всё скомпилилось, но мой пример перестал работать стабильно(чип почему-то перезагружается). Насчет #define проверю. По поводу перезагрузки - посмотрите, сколько стека выделяется для scmRTOS_IDLE_PROCESS_STACK_SIZE в файле scmRTOS_config.h Раньше там выделялось только то, что хочет пользователь для своих нужд и "в недрах" к этому числу добавлялось 17 * sizeof(TStackItem). Теперь надо полный размер указывать в scmRTOS_config.h, т.е. минимум 17 * sizeof(TStackItem) Цитата(LessNik @ Jan 10 2008, 13:46)  Дописал в Target_AT91SAM7.h #define OS_INTERRUPT __arm __irq Но оно там есть, в самом начале: Код #if scmRTOS_CONTEXT_SWITCH_SCHEME == 0 #define OS_INTERRUPT __arm #else #define OS_INTERRUPT __arm __irq #endif
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
LessNik scmRTOS. Порт под AT91SAM7X Jan 9 2008, 12:23       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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|