Перейти к содержанию
    

systemmind

Участник
  • Постов

    19
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о systemmind

  • Звание
    Участник
    Участник
  1. У меня такая же проблема. Так сделать можно, но что делать, если использовать микроконтроллер у которого памяти больше, чем 64Кб? Згрузчик находится за пределами 0xffff, а IAR, как было сказано, не размещает сегмент NEAR_F дальше этого адреса.
  2. Уже сам допетрил. Нужно было в конфигурационном файле размер стека просто уменьшить и все. Правда там еще пару подобных ошибок высветилось, которые решились таким же образом. Однако вопрос остался открытым, поскольку возникла следующая несостыковка. Дело в том, что атмеловский проект бутлоадера написан на С и в опциях проекта (General Options -> Library Configuration -> Library) стоит значение CLIB. У меня же проект написан на С++ и в этих же настройках стоит Full DLIB. Когда сменяю на CLIB, естественно исчезает возможность писать на С++, а когда ставлю на Full DLIB, то IAR не видит ассемблеровкие подпрограммы, которые входят в состав проекта бутлоадера AVR231. Компилятор пишет, что такие внешние процедуры не найдены. Думаю, спрашивать почему так смысла нет, можеть кто-нибудь подскажет где можно найти информацию по управлению и настройками этих библиотек, кроме как в иаровском мануале на английском?
  3. Здравствуйте. У меня стоит задача объединить один проект с бутлоадером AVR231 (собственный писать не хочется). Первым делом скопировал конфигурационный файл линкера из IAR-а и создал в нем сегмент: -D_..X_BOOTLOAD_SEGMENT_START=1F000 -Z(CODE)BOOTLOADER=_..X_BOOTLOAD_SEGMENT_START-_..X_FLASH_END После этого всем процедурам бутлоадера присвоил адрес этого сектора: __C_task void loader(void) @ "BOOTLOADER" { //Code } void busInit(void) @ "BOOTLOADER" { //Code } и т.д. Также изменил сегмент в ассемблеровских файлах: //RSEG CODE RSEG BOOTLOADER После этого при компиляции выскочила ошибка: Fatal Error[e72]: Segment NEAR_ID must be defined in a segment definition option (-Z, -b or -P) Ну что, маст би дефайн, так маст би дефайн. Добавил NEAR_ID в строку конфигурационного файла линкера: -Z(CODE)TINY_ID,NEAR_ID,__program_start=_..X_INTVEC_SIZE-_..X_FLASH_END После этого выскочила еще одна ошибка: Error[e16]: Segment CSTACK (size: 0x200 align: 0) is too long for segment definition. At least 0x1d more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_SRAM_BASE-_..X_SRAM_END", where at the moment of placement the available memory ranges were "DATA:f1d-10ff" Reserved ranges relevant to this placement: DATA:100-10e NEAR_I DATA:10f-edc NEAR_Z DATA:edd-f1c RSTACK DATA:f1d-10ff CSTACK На этом месте я зашел в тупик. При чем тут CSTACK ?? Как связаны между собой сегменты DATA и CODE не ясно, поскольку я изменял только CODE. В чем может быть проблема и как ее исправить? И второй вопрос: Получилось, что процедура main() присутствует и в бутлоадере и в основном проекте. Естественно, компилятору это не нравилось, и он выдавал ошибку. Поэтому main в бутлоадере я оставил как есть, а main в основном проекте переименовал в main_proj. Когда делал наоборот, то компилятор размещал в области памяти начиная с адреса 0x1f000 не все процедуры бутлоадера. В том числе переименованную мною процедуру main не размещал вообще (она ведь нигде не вызывается). Да и просто из соображений логики : если любая программа в С начинается с процедуры main(), то она и должна присутствовать в бутлоадере, поскольку работа программы начинается с него. А теперь собственно вопрос: как мне поступить, когда после включения устройства я не буду жать на кнопочку, и бутлоадер закончит работу без прошивки флеш? Нужно, чтобы он вывалился в адрес 0x0000 либо прямиком в main_proj? И еще. В конфигурационном файле компилятора есть сегмент __program_start: -Z(CODE)TINY_ID,NEAR_ID,__program_start=_..X_INTVEC_SIZE-_..X_FLASH_END Он же упоминается в настройках проекта: Project -> Options -> Linker -> Config -> Override default program entry -> Entry label Может ли это помочь мне в решении второго вопроса? Спасибо. З.Ы. Я вложил конфигурационный файл линкера в этом письме, если он вдруг понадобится. lnkm128s.txt
  4. Да,оба матода сработали, но теперь протеус при старте эмуляции выдает ошибку: invalid opcode 0xFFFF at PC=0x0002 О, уже исправил. В настройках кристала поставил размер бутлоадера 2048 слов. Спасибо!
  5. Здравствуйте, учасники форума. Вопрос следующий. Мне необходимо использовать бутлоадер AVR231 для mega128. Инструкцию использования этого загрузчика взял от сюда: http://www.embeddedarticles.com/atmel-avr/...der-avr231.html В результате, дошел до пункта 6 в котором нужно скомпилировать бутлоадер в hex. Но в IAR появляется следующая ошибка: Error[e122]: The address 0x1f000 is too large to be represented in the output format 'intel-standard' В настройках компилятора, в качестве выходного формата стоит msd-i. Когда ставлю intel-extended, то ошибка исчезает, но вместе с ней hex заменяется на a90. Скажите, можно ли каким-нибудь образом сделать прошивку в формате hex? Либо откомпилить сначала в промежуточный формат, а потом в hex? Мне это необходимо, т.к. нужно проверить программу в протеусе.
  6. Цитирую сам себя, для тех, кто тоже столкнулся с этим. Размеры отверстий при всех вышеперечисленных настройках изменяются когда при трассировке нажимаешь * (звездочку). Тогда появляется отверстие с указанными размерами.
  7. Это значит у тебя компонент (или контактная площадка) расположен на верхнем слое. Нужно его на нижний поставить в его свойствах (из контекстного меню Properties - Layer - Bottom). DXP-Preferences-PCB Editor-Interactive Routing-Favorite Interactive Routing Via Sizes у меня имеет такой вид: В правилах они включены: А вот настройка самого правила: Но ничего не работает. Все переходные отверстия по прежнему имеют размер 1,27 mm в диаметре контактной площадки и 0.7112 mm само отверстие. От куда берется это значение?? А главное, как его изменить??
  8. Внизу там маленькие закладки всех слоев. Верхний - красный, нижний - синий и т.д. Для того, чтобы разводить на нижнем слое нужно кликнуть по его (синей) закладке и вперед!) У меня часто такие хвосты возникают. Я их просто вручную удаляю и все. Бывает, даже, что альтиум забывает переходное отверстие поставить и получается разрыв сразу на верхнем и на нижнем слое. Приходится все исправлять руками.
  9. Делаю плату интерактивной трасировкой. Как изменить диаметр переходных отверстий используемых на ней? Я пробовал через меню DXP-Preferences-PCB Editor-Interactive Routing-Favorite Interactive Routing Sizes, но ничего не изменилось. Диаметр отверстий использумых при трассировке так и остался не изменным. Скажите, как его можно изменить?
  10. Здравствуйте. Нужно сделать несколько одинаковых печатных плат методом ЛУТ. Как их можно распечатать на одном листе?
  11. У меня та же самая проблема, подскажи, как исправил??
  12. Да, разобрался, я не изменял значения в Find Similar, нажал ок и изменил сразу в инспекторе. Все получилось, спасибо за помощь!:-)
  13. Когда нажимаю применить (Apply) или Ок, то вылетает окно с ошибкой Error occured while Running script. Потом открывается инспектор, в нем я изменяю ширину, которая меняется только на одной дорожке. Т.е. группового изменения не происходит. Не знаете, что это за ошибка и как с ней бороться? З.Ы. У меня есть подозрение, что это из-за ограниченных прав на компьютере..
  14. Я сделал немного по другому, выбрал инструмент Place Fill, выделил нужную область и тоже самое применил параметр Locked. Частично все получилось, на этом месте отверстий не оказалось, впрочем, как и дорожек. Но в остально мплата выглядела ужасно, поэтому я забил на все новшества техники и развел ее в этом же редакторе, но только абсолютно вручную:) Здесь есть описание создания именно двухсторонней платы. Про запрет не находил.. Все отлично, печатка получилась даже ничего, только одно Но. Я не заметил того, что все дорожки имеют ширину 0,2 мм, а сделать такую, сами понимаете сложно. Само собой напрашивается вопрос. Как мне теперь выделить все дорожки и за один мах применить параметры ширины равной 0,3 мм??
  15. Сделал, но проблема возникла в дрругом, а минно, что теперь в этих местах, где я насеял заблокированных дорожек, как и следовало ожидать, не троссируются обычные дорожки.. Думаю, что где-то есть специальная настройка, чтобы он не ставил отверстия в конкретно указанных местах..
×
×
  • Создать...