Есть такая проблема!
Есть МК - Sharp LH79520, в нем присутствует MMU. Хочу его настроить и использовать для разграничения работы с памятью, т.е. попытаться защитить код программы, загруженной в SDRAM от любой ее модификации.
Посмотрел примеры, прочитал архитектуру, вроде бы все согласно букварю сделал, однако после включения MMU происходит останов программы (вылет по прерыванию).
Вот каким образом я создаю таблицу для настройки MMU:
Код
#pragma segment="MMU_TT"
#pragma location="MMU_TT"
#pragma data_alignment=16384
__no_init Int32U L1Table[L1_ENTRIES_NUMB];
#pragma location="MMU_TT"
#pragma data_alignment=2048
__no_init Int32U L2CoarseSRAM[L2_CP_ENTRIES_NUMB];
const TtSectionBlock_t TtSB[] =
{
// L1
L1_SECTIONS_ENTRY (1, 0x00000000,0x00000000,0,1,1,0), // SDRAM mirror, application
L1_SECTIONS_ENTRY (31, 0x20100000,0x20100000,3,0,1,1), // SDRAM, workspace
L1_SECTIONS_ENTRY (7, 0x40100000,0x40100000,3,0,0,0), // Flash storage
L1_COARSES_PAGE_ENTRY (1, 0x60000000,(Int32U)L2CoarseSRAM,0), // SRAM
L1_SECTIONS_ENTRY (1, 0xFFF00000,0xFFF00000,3,0,0,0), // Peripherals
TSB_INVALID,
// L2 SRAM
L2_CT_SMALL_PAGE_ENTRY (8, 0x60000000,0x60000000,3,3,3,3,0,1),
TSB_INVALID
};
const TtTableBlock_t TtTB[] =
{
{L1Table,TableL1},
{L2CoarseSRAM,TableL2_Coarse},
TTB_INVALID
};
#pragma location="MMU_TT"
#pragma data_alignment=16384
__no_init Int32U L1Table[L1_ENTRIES_NUMB];
#pragma location="MMU_TT"
#pragma data_alignment=2048
__no_init Int32U L2CoarseSRAM[L2_CP_ENTRIES_NUMB];
const TtSectionBlock_t TtSB[] =
{
// L1
L1_SECTIONS_ENTRY (1, 0x00000000,0x00000000,0,1,1,0), // SDRAM mirror, application
L1_SECTIONS_ENTRY (31, 0x20100000,0x20100000,3,0,1,1), // SDRAM, workspace
L1_SECTIONS_ENTRY (7, 0x40100000,0x40100000,3,0,0,0), // Flash storage
L1_COARSES_PAGE_ENTRY (1, 0x60000000,(Int32U)L2CoarseSRAM,0), // SRAM
L1_SECTIONS_ENTRY (1, 0xFFF00000,0xFFF00000,3,0,0,0), // Peripherals
TSB_INVALID,
// L2 SRAM
L2_CT_SMALL_PAGE_ENTRY (8, 0x60000000,0x60000000,3,3,3,3,0,1),
TSB_INVALID
};
const TtTableBlock_t TtTB[] =
{
{L1Table,TableL1},
{L2CoarseSRAM,TableL2_Coarse},
TTB_INVALID
};
Кто чем может помочь в этой ситуации?
Заранее благодарен за ответы
