Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Непонятное поведение IAR 4.41 ARM (+)

Отправлено VladimirM 16 мая 2008 г. 15:10


Бьюсь второй день.
Есть кусок кода (если что взято из примера от самого IAR - flash.c)
__ramfunc int AT91F_Flash_Write( unsigned int Flash_Address ,int size ,unsigned int * buff)
{
...
AT91C_BASE_MC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_START_PROG | (AT91C_MC_PAGEN & (page <<8)) ;
...
}
оптимизация по size - максимум.
Компилирую...
Смотрю листинг файла по этой строке:
0000003C 9B21 MOVS R1,#+155
0000003E C943 MVNS R1,R1 ;; #-156
00000040 0002 LSLS R0,R0,#+8
00000042 094A LDR R2,??AT91F_Flash_Write_0+0x4 ;; 0x3ff00
00000044 0240 ANDS R2,R2,R0
00000046 0948 LDR R0,??AT91F_Flash_Write_0+0x8 ;; 0x5a000001
00000048 1043 ORRS R0,R0,R2
0000004A 0860 STR R0,[R1, #+0]
Вроде все ОК.
Запускаю. Отладка JTAG. Смотрю дизасемблер по этой строке:
002029D8 219B MOV R1, #155
002029DA 43C9 MVN R1, R1
002029DC 0200 LSL R0, R0, #8
002029DE 4A09 LDR R2, [PC,#0x024] ; [0x202A04] =0x3FF00
002029E0 4002 AND R2, R0
002029E2 4809 LDR R0, [PC,#0x024] ; [0x202A08] =0x5A000001
002029E4 4310 ORR R0, R2
002029E6 7908 LDRB R0, [R1, #4]
Последняя инструкция вместо STR - LDR. И них.. не работает!!!
Иду за бубном.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru