реклама на сайте
подробности

 
 
> Не надо оптимизировать, Keil
toweroff
сообщение Mar 26 2009, 00:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Отдельный кусок с 3-мя циклами записи в external компилятор гонит полную чушь (но не с его, компилятора, точки зрения). В результате получаю 2 вместо трех шинных операций. Код для идентификациии чипа flash банален:

*((unsigned int*) (0x80000000 + (0x555<<2))) = 0xAA00;
*((unsigned int*) (0x80000000 + (0x2AA<<2))) = 0x5500;
*((unsigned int*) (0x80000000 + (0x555<<2))) = 0x9000;

Смещение на 2 разряда - т.к. шина 32 бита

в результате осциллом вижу только два обращения (записи) в память

Смещение на 8 бит - условие организации не от меня зависящей памяти

дополню:
Код
   281:         *((unsigned int*) (0x80000000 + (0x2AA<<2))) = 0x5500;
0x00002EA0  E3A01C55  MOV       R1,#0x00005500
   280:         *((unsigned int*) (0x80000000 + (0x555<<2))) = 0xAA00;
   281:         *((unsigned int*) (0x80000000 + (0x2AA<<2))) = 0x5500;
0x00002EA4  E3A00102  MOV       R0,#0x80000000
0x00002EA8  E58B1AA8  STR       R1,[R11,#0x0AA8]
0x00002EAC  E2800A01  ADD       R0,R0,#0x00001000
   282:         *((unsigned int*) (0x80000000 + (0x555<<2))) = 0x9000;
   283:


более из того куска компилятор не сделал


как компилятор заставить делать именно то (в данном случае) что я хочу? Есть ли описание C для Keil (ARM), чтобы не дергать лишний раз всех?

Сообщение отредактировал toweroff - Mar 26 2009, 00:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Mar 26 2009, 00:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Компилятор все делает правильно. Используйте volatile unsigned int.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016