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

 
 
 
Reply to this topicStart new topic
> IAR компилер, Как принудительно отключить внешнее ОЗУ
UraGun
сообщение Oct 11 2005, 14:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 11-10-05
Из: Запорожье
Пользователь №: 9 516



Как сконфигурировать xcl файл на принудительное отключение внешней памяти ? Её нет в системе, но контроллер постоянно лезет с ней общаться, что приводит к появлению ненужных сигналов на линиях ALE и адресных выходах. (Работаю с АТМЕГА128) ? Ума не приложу....
unsure.gif
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Oct 11 2005, 14:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Используй стандартный cfgm128.xcl и усё будет ок.
Go to the top of the page
 
+Quote Post
UraGun
сообщение Oct 12 2005, 08:00
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 11-10-05
Из: Запорожье
Пользователь №: 9 516



какая-то фантастика...
этот файл подключен... sad.gif
Go to the top of the page
 
+Quote Post
she
сообщение Oct 12 2005, 15:31
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 10-08-05
Пользователь №: 7 507



А у вас точно мега конфигурится XCL-файлом, а не диалогами? А то в опциях проекта->System->Enable external memory bus
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 12 2005, 16:36
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Я думаю XCL файл здесь не причем.
просто в стартапе включается внешняя память
ALE будет дергаться даже если не будет происходить обращения к внешней шине. можно ее либо отключить потом
либо написать свой стартап

либо тщательно проверить все настройки проекта!
Go to the top of the page
 
+Quote Post
UraGun
сообщение Oct 13 2005, 06:12
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 11-10-05
Из: Запорожье
Пользователь №: 9 516



Цитата(she @ Oct 12 2005, 18:31)
А у вас точно мега конфигурится XCL-файлом, а не диалогами? А то в опциях проекта->System->Enable external memory bus
*

Да, конечно smile.gif ух эту опцию я нашел smile.gif кроме того стоит и галочка там где спрашивается чем пользоваться, диалогом или файлом...
Может ли быть такое, что одна из подключенных библиотек (а их достаточно очень много) вытворяет эти обращения даже если xcl сконфигурирован правильно ?
Go to the top of the page
 
+Quote Post
UraGun
сообщение Oct 13 2005, 06:50
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 11-10-05
Из: Запорожье
Пользователь №: 9 516



Цитата(KRS @ Oct 12 2005, 19:36)
Я думаю XCL файл здесь не причем.
просто в стартапе включается внешняя память
ALE будет дергаться даже если не будет происходить обращения к внешней шине. можно ее либо отключить потом
либо написать свой стартап

либо тщательно проверить все настройки проекта!
*
простите можно тут по подробнее ? что нужно принудительно сделать в стартапе или чего не делать ?
И ещё вопрос, наверняка его задавали уже тысячу раз, но есть ли у кого нибудь толковая документация на русском языке (или даже можно бестолковую но подробную ) на IAR для AVR ? Перекопал пол сети, нашел только в применении к 8051, а это несколько не то, что надо smile.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 13 2005, 08:31
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(UraGun @ Oct 13 2005, 09:12)
...
Может ли быть такое, что одна из подключенных библиотек (а их достаточно очень много) вытворяет эти обращения даже если xcl сконфигурирован правильно ?
*

Нет, не может.
В перемещаемом коде библиотек нет прямого указания на то, какую память использовать. Это определяется линкером во время сборки проекта на основании файла *.xcl.
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 13 2005, 08:32
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(UraGun @ Oct 13 2005, 09:50)
Цитата(KRS @ Oct 12 2005, 19:36)
Я думаю XCL файл здесь не причем.
просто в стартапе включается внешняя память
ALE будет дергаться даже если не будет происходить обращения к внешней шине. можно ее либо отключить потом
либо написать свой стартап

либо тщательно проверить все настройки проекта!
*
простите можно тут по подробнее ? что нужно принудительно сделать в стартапе или чего не делать ?
И ещё вопрос, наверняка его задавали уже тысячу раз, но есть ли у кого нибудь толковая документация на русском языке (или даже можно бестолковую но подробную ) на IAR для AVR ? Перекопал пол сети, нашел только в применении к 8051, а это несколько не то, что надо smile.gif
*



Для IAR AVR cstartup должен проинициализировать оба стека (возвратов и данных) обнулить сегменты xxx_Z и скопировать xxx_ID в xxx_I
обычно таких сегментов по 1 и нсделать 0->NEAR_Z и NEAR_ID->NEAR_I
есть еще служебный сегмент INIT_TAB где находится таблица адресов сегментов для инициализации, но ее можно выкинуть!
ссылки на сагмент INITTAB идут через специфическую директиву PUBWEAK
и елси такие метки будут где нибудь PUBLIC то сегмента INITTAB не будет
я использую примерно такой стартап
подходит для использования в устройсвах меньше 64 кб флеша если больше надо править для модели тини тоже править (названия сегментов другие да и длина уже макимум байт)

Код
#include    <macros.m90>
//segments uses for initialization
       RSEG   CSTACK:DATA:NOROOT(0)
       RSEG   RSTACK:DATA:NOROOT(0)
       RSEG   NEAR_Z:DATA:NOROOT(0)
       RSEG   NEAR_I:DATA:NOROOT(0)
       RSEG   NEAR_ID:DATA:NOROOT(1)

//reset vector
       COMMON  INTVEC:CODE:ROOT(1); Align at an even address
         ORG   $0
         XJMP  ?C_STARTUP

       RSEG   CODE:CODE:ROOT(1)
?C_STARTUP:
       //здесь я обычно инициализирую порты и т.д.
//NEAR_Z initialization
       RSEG   STARTUPCODE:CODE:NOROOT(1)
PUBLIC `?<Segment init: NEAR_Z>`
`?<Segment init: NEAR_Z>`:
         lda   Z, SFB(NEAR_Z)
         lda   X, SIZEOF(NEAR_Z)
         clr   r16
filloop:
         st    Z+, r16
         sbiw XL, 1
         brne filloop

//NEAR_I initialization
       RSEG   STARTUPCODE:CODE:NOROOT(1)
PUBLIC `?<Segment init: NEAR_I>`
`?<Segment init: NEAR_I>`:
         lda   Z, SFB(NEAR_ID)
         lda   Y, SFB(NEAR_I)
         lda   X, SIZEOF(NEAR_I)
         
moveloop:
         lpm r0, Z+
         st Y+, r0
         sbiw XL, 1
         brne moveloop

//Return address stack (hardware stack) & software stack (Y)
       RSEG   STARTUPCODE:CODE:ROOT(1)

         LDI   R17,LOW(SFE(RSTACK)-1)
         OUT   SPL,R17
         LDI   R17,HIGH(SFE(RSTACK)-1)
         OUT   SPH,R17
         
         LDI   YL,LOW(SFE(CSTACK)-1)
         LDI   YH,HIGH(SFE(CSTACK)-1)
       
EXTERN main
         XJMP main
     END


Здесь хитрые метки `?<Segment init: NEAR_I>` придумал IAR здесь они используются что бы подавить создание INITTAB
да и если эти сегменты не используются линкер выкенет этот код
XJMP - макрос преобразуется в jmp или rjmp в зависимости от проца
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 13 2005, 08:34
Сообщение #10


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



да выше забыл свой макрос
Код
// lda - load addr to Z, X, or Y pair
lda MACRO rPtr, Offset
    ldi \1L, LOW(Offset)
    ldi \1H, HIGH(Offset)
   ENDM
Go to the top of the page
 
+Quote Post

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

 


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


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