Цитата(Сергей Борщ @ 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)
Надеюсь ничего больше не забыл, нето ведь всё равно скомпилится -) -(
Сейчас вроде всё работает.