ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
243474
74ALS (17.03.2011 11:10, просмотров: 4145)
Для себя потихоньку изучаю Cortex-M3 на уровне хобби. Попытался наскоком проморгаться светодиодом на LPC1768. Не получилось... Среда: uVision 4. Кристалл тактируется внутренним 4 MHz RC-генератором. Забил в uVusion следующий код на асме: STACK EQU 0x10008000 FIO2DIR EQU 0x2009C040 FIO2SET EQU 0x2009C058 FIO2CLR EQU 0x2009C05C AREA RESET,DATA,READONLY DCD STACK DCD Start AREA MAIN,CODE,READONLY ENTRY Start MOV R0,#0x0001 LDR R1,=FIO2DIR STR R0,[R1] NOP LDR R1,=FIO2SET STR R0,[R1] B Start END Исходник успешно собрался. Захожу в отладку через встроенный симулятор. Прогнал пошагово всю программу - результат положительный: как и ожидал по адресам FIO2DIR (0x2009C058) и FIO2SET (0x2009C058) было записано значение 0x01. Далее заливаю прошивку в кристалл через J-Link 8 и по JTAG выполняю пошаговое исполнение как ранее в симуляторе. В итоге получаю следующее: По адресу FIO2DIR (0x2009C058) происходит корректная запись 0x01. А вместо того, чтобы писать по адресу FIO2SET (0x2009C058) на деле 0x01 пишется по совсем левому адресу. Далее добавляю после первой записи в FIO2DIR различное количество NOP и это влияет на значения мусора который образуется вместо заданых адресов FIO2DIR (0x2009C058) и FIO2SET (0x2009C058), т.е. идет запись по совсем левым адресам. Но при этом опять же в Keilовском симуляторе все исполняется корректно. Подскажите, кто разобрался с CM3 ядром, где собака порылась? Спасибо.