Здравствуйте все!
Помогите, пожалуйста, кто может.
Я пробую поморгать светодиодами в учебных целях при помощи ядра 8051s. Работаю в Libero 9.1.
Собираю проект в SmartDesign, как учили. Пишу маленькую программу, просто попробовать. Вот она вся:
Код
#define APB3_BASE_ADDRESS 0xF000
__xdata at APB3_BASE_ADDRESS + 0x00A0 unsigned char tst;
void main()
{
tst = 0x00;
tst = 0xFF;
for (;;)
{
tst = 0x00;
tst = 0xFF;
}
}
0x00A0 - это смещение выходных данных CoreGPIO, который лежит в адресном пространстве шины APB первым. Компилирую эту программу в SoftConsole через меню Project - Build All. Полученный HEX или IHX файл конвертирую самодельной программой (прилагается) в описание блока памяти на VHDL.
Запускаю Modelsim и не могу получить никаких изменений ни в одном сигнале CoreAPB3. При этом обращение к памяти идёт нормально. На выходах CoreGPIO тоже тишина.
Ещё непонятная мне вещь: сколько бы операторов я ни писал в цикле программы, на модели она зацикливается на четырёх выборках из памяти, всегда одинаковых.
Всё это происходит и в debug, и в release версиях.
Я показывал это дело знающему человеку. Он загрузил ту же программу в отладочное ОЗУ. Сказал: "содержимое получаемое в памяти после вашего конвертора и после импорта .hex в RAM совпадают, те проблема не в конверторе".
Проект я тоже прикладываю.
Объясните, пожалуйста, почему шина APB не шевелится?
Заранее признателен.