Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EWARM 5.10
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Страницы: 1, 2, 3
Kitsok
Поставил 5.1
Перестало работать с H-JTag 0.4.4, кроме этого, не завелся сходу проект под FreeRTOS.

Вечером поставлю макгрегора и попробую еще раз.
zltigo
Цитата(Kitsok @ Aug 28 2007, 11:16) *
кроме этого, не завелся сходу проект под FreeRTOS.

Удивили-бы БЕЗМЕРНО, если-бы "завелся" smile.gif. Отличия в ASM и Линкере абсолютно не совместимые,
да и по сишному тексту есть немного, но иногда тяжелых отличий - читайте сопроводительную документацию.
Kitsok
Цитата(zltigo @ Aug 28 2007, 12:22) *
Удивили-бы БЕЗМЕРНО, если-бы "завелся" smile.gif. Отличия в ASM и Линкере абсолютно не совместимые,
да и по сишному тексту есть немного, но иногда тяжелых отличий - читайте сопроводительную документацию.


wink.gif Весьма вероятно, что я буду подождать, пока выйдет FreeRTOS c примерами, компилябельными под 5.10 wink.gif
zltigo
Цитата(Kitsok @ Aug 28 2007, 13:08) *
wink.gif Весьма вероятно, что я буду подождать, пока выйдет FreeRTOS c примерами, компилябельными под 5.10 wink.gif

Совершенно неразумно. Если Вы сами отпортировать под 5.10 (а в примерах собственно портировать особо нечего и нюансов просто никаких) не сможете, то дальше будет хуже - будете ждать, пока все кажущиеся Вам нужными исходники не оппортируют?
Nikola Kirov
H-JTag 0.4.4 заработал у меня.

Попробовал с AT91Sam7S64.
Но ест проблем при отладке в асемблер файл когда работаем из флаш. Если в опции дебагера галочка Stack установлена невозможно пошаговое изполнение.
Цитата
[RDI Error: 148] No more breakpoints left for this type of memory (RAM/ROM)
Tue Aug 28 13:08:48 2007: Unable to execute: driver error.

а если не установлена такой проблем ест при пошаговой отладки C кода.

Такой проблем с Raven-a нет.

Но ето не проблем H-JTag-a.
zltigo
Если кому интересно, то в приложении асемблерные стартапы и линковочные скрипты одного и того же проекта под 4.xx и 5.10 проект 'мусорный', поскольку живет у меня исключительно для проверки всякой всячины на демоборде с LPC2294. Но начинал я пробы именно с него.
По собственно FreeRTOS никаких дополнительных правок не было (кроме нескольких portability warnings в собственно порте, которые естественно надо подавлять).
Kitsok
zltigo

Я прошу прощения за столь ламерский вопрос, но... нельзя ли просто взять cstartup.s из 5.10 и заменить им cstartup.S79 из 4.xx?

На первый взгляд я не обнаружил сильных различий.

Кроме этого, я глянул на .xcf и на .icf и в общем-то, по сути (не по формату, естественно) не обнаружил никаких различий....
Pasha 111
zltigo, возвращаясь к вопросу кей гена (просьба не бить)...
Поставил 30-тидневную версию 5.10, через месяц работать прекратила. После этого удалил ИАР, все файлы из c:\windows\system32, очистил реестр. Попробовал поставить с новым 30-тидневным ключем - не помогло. Уникряк, после "лечения", убивает ИАР: при загрузке проекта ИАР вылетает с ошибкой (вываливается в отладчик визуал студии). Изначально поставить иар с номером и ключем, который генерирует иарид и иаркг не получилось, т.к. он делает только 06_WIN, а нужен, судя по всему, 12_WIN (пробовал сувать ему 06 - пишет, что ключ не от того продукта).
Нужно проект быстрее заканчивать, а тут такое дело... sad.gif
P.S. Шаманство в реестре, в C:\Program Files\Common Files\IAR Systems и в менеджере лицензий тоже эффекта не доло.
zltigo
Цитата(Kitsok @ Aug 28 2007, 15:16) *
но... нельзя ли просто взять cstartup.s из 5.10 и заменить им cstartup.S79 из 4.xx?

Имеется ввиду базовые штатные? Если Вы ранее ими без изменения пользовались, то скорее всего они для такого использования и предназначены smile.gif. Я сам на них и не cмотрел, ибо не устраивают совсем.
Цитата
На первый взгляд я не обнаружил сильных различий.

Собственно сам ASM код содержит только несколько изменений при инициализации стеков, остальное правится достаточно очевидно почитывая Migration Guide
Цитата
Кроме этого, я глянул на .xcf и на .icf и в общем-то, по сути (не по формату, естественно) не обнаружил никаких различий....

Аналогично вышесказанному. Но отличия принципиальные, для реального применения, тем не менее есть sad.gif - попробуйте, например, для LPC зарезервировать место под Protect Key, посчитать контрольные суммы, получить адрес конца программы,.... Механически это не переносится, а первое удалось сделать исключительно через заднепроходное отверстие.



Цитата(Pasha 111 @ Aug 28 2007, 23:23) *
он делает только 06_WIN, а нужен, судя по всему, 12_WIN (пробовал сувать ему 06 - пишет, что ключ не от того продукта).

НУ ТАК ИСПРАВЬТЕ ВНУТРИ KEYGEN СТРОЧКУ xx_WIN НА ЛЮБОЙ НУЖНЫЙ WIN И ПОЛУЧИТЕ НУЖНЫЙ KEYGEN.
Pasha 111
Цитата
НУ ТАК ИСПРАВЬТЕ ВНУТРИ KEYGEN СТРОЧКУ xx_WIN НА ЛЮБОЙ НУЖНЫЙ WIN И ПОЛУЧИТЕ НУЖНЫЙ KEYGEN.

Что значит внутри? Там ведь 2 .exe файла?
zltigo
Цитата(Pasha 111 @ Aug 29 2007, 00:19) *
Там ведь 2 .exe файла?

Я понятия не имею о чем Вы говорите, сходите, на FTP, может и возьмите один файл и исправте. Ну поиском попользуйтесь, ну нельзя-же, право каждый раз по появлении очередногоо релиза из пустого в порожнее переливать....
_Алекс
Берете программу, WinHex (редактор) в нем открываете Генератор.exe, поиском ищите строчку EWARM, там смотрим рядом 06_WIN, правим на 12_WIN, сохраняем изменения и все запускаем.
Kitsok
zltigo

Вроде вчера удалось скомпилировать и запустить, но при запуске шедулера сразу возникает DataAbort, причем он меня просто вводит в ступор.

При создании задач формируются стеки этих задач, соответственно, туда кладется содержимое регистров задачи, это понятно. Первым в стек суется адрес возврата, вторым - содержимое R14 (LR), равное 0xaaaaaaaa. Остальные регистры забиваются тоже чепухой. Понятное дело, после переключения туда (в стек задачи) будут записаны реальные значения.

Потом при старте шедулера, выполняется vPortStartFirstTask, который на самом деле запрещает прерывания и вызывает portRESTORE_CONTEXT, коий я приведу тут целиком:
Код
portRESTORE_CONTEXT MACRO

; Set the LR to the task stack.                                     
    LDR        R1, =pxCurrentTCB
    LDR        R0, [R1]
    LDR        LR, [R0]

; The critical nesting depth is the first item on the stack.     
; Load it into the ulCriticalNesting variable.                     
    LDR        R0, =ulCriticalNesting
    LDMFD    LR!, {R1}
    STR        R1, [R0]

; Get the SPSR from the stack.                                     
    LDMFD    LR!, {R0}
    MSR        SPSR_cxsf, R0

; Restore all system mode registers for the task.                 
    LDMFD    LR, {R0-R14}^
    NOP

; Restore the return address.                                     
    LDR        LR, [LR, #+60]

; And return - correcting the offset in the LR to obtain the     
; correct address.                                                 
    SUBS    PC, LR, #4

    ENDM


На строке LDMFD LR, {R0-R14}^ во все регистры записывается соответствующий мусор (оно и правильно, первый запуск), а вот в LR записывается вот то самое 0xaaaaaaaa, которое было записано в стек, а не адрес возврата. Понятно, на LDR LR,[LR, #+60] мы имеем DAbort.
При этом в случае с 4.х после выполнения этой инструкции LR просто увеличивается, как ему и положено.

Вот такие чудеса.
alexander55
Цитата(Kitsok @ Aug 29 2007, 11:39) *
zltigo

Вроде вчера удалось скомпилировать и запустить, но при запуске шедулера сразу возникает DataAbort, причем он меня просто вводит в ступор.

Не знаю, о чем речь (подозреваю о прикручивании каких-то колес), но судя тексту у Вас pxCurrentTCB не правильно инициализируется где-то выше.
Kitsok
Цитата(alexander55 @ Aug 29 2007, 13:55) *
Не знаю, о чем речь (подозреваю о прикручивании каких-то колес), но судя тексту у Вас pxCurrentTCB не правильно инициализируется где-то выше.


Речь о прикручивании FreeRTOS к новой версии wink.gif
Очень верное замечание! Раньше стек выравнивался к 4 байтам, а теперь - к 8. Буду копать, спасибо за наводку!
zltigo
Цитата(Kitsok @ Aug 29 2007, 17:58) *
Буду копать, спасибо за наводку!

Я не знаю, куда Вы там 'закопались', но с портированием ядра FreeRTOS проблем нет. Совсем нет. Тупо за полчаса поверхностного изучения линкера и ассемблера портируется.
Поблемы вылезают, но не на банальной демке ядра.
Kitsok
Цитата(zltigo @ Aug 29 2007, 19:44) *
Я не знаю, куда Вы там 'закопались', но с портированием ядра FreeRTOS проблем нет. Совсем нет. Тупо за полчаса поверхностного изучения линкера и ассемблера портируется.
Поблемы вылезают, но не на банальной демке ядра.


Я тоже так подумал, поменял во всех ассемблерных исходниках имена сегментов, подставил стартап-файлы из поставки 5.10 и теперь имею реальный полтергейст с инструкцией LDMIA.

Там, где работает:
Код
ДО
SP=0xFEA4
LR=0x34EC
0x34EC-0x3527:
00 00 00 00 01 01 01 01 02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05 06 06 06 06 07 07 07 07 08 08 08 08 09 09 09 09 10 10 10 10 11 11 11 11 12 12 12 12 28 35 00 00 aa aa aa aa

portRESTORE_CONTEXT
  000001F4  E8DE7FFF  LDMIA        LR, {R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,SP,LR}^

ПОСЛЕ
SP=0xFEA4
LR=0x34EC


В новом компиляторе:
Код
ДО
SP=0x3290
LR=0x40CC
0x40CC-0x412C:
00 00 00 00 01 01 01 01 02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05 06 06 06 06 07 07 07 07 08 08 08 08 09 09 09 09 10 10 10 10 11 11 11 11 12 12 12 12 08 41 00 00 aa aa aa aa

portRESTORE_CONTEXT
  0000232C  E8DE7FFF  LDMIA        LR, {R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,SP,LR}^

ПОСЛЕ
SP=0x4108
LR=0xAAAAAAAA


Я не понимаю, почему так, буду разбираться с режимом процессора.
zltigo
Цитата(Kitsok @ Aug 29 2007, 21:03) *
Я тоже так подумал, поменял во всех ассемблерных исходниках имена сегментов

Совсем не обязательно - пусть будут самостоятельным сегментом, никаких проблем. Я вообще ничего не менял во FreeRTOS асмовских исходниках при переходе под 5.10
Цитата
подставил стартап-файлы из поставки 5.10

Без понятия, что там 'в поставке' - подправил свой. И линковый скрипт с чистого листа.
Цитата
Я не понимаю, почему так, буду разбираться с режимом процессора.

Я в ARM моде гоняю. Пересобрал в Thumb (при этом ядро стало больше похоже на родное, поскольку
пришлось вернутся к штатным CRITICAL_SECTION, ибо мои исключительно под ARM Mode заточены) - естественно, неизменно превосходный результат.
Kitsok
Цитата(zltigo @ Aug 29 2007, 23:07) *
Я в ARM моде гоняю. Пересобрал в Thumb (при этом ядро стало больше похоже на родное, поскольку
пришлось вернутся к штатным CRITICAL_SECTION, ибо мои исключительно под ARM Mode заточены) - естественно, неизменно превосходный результат.


Я про другие режимы wink.gif
Собственно, проблема обнаружилась в том, что при подходе к main() старые стартапы переводили процессор в supervisor mode, а новые в другой режим. Так что, придется разбираться в стартапах, хоть и не хотелось.
zltigo
Цитата(Kitsok @ Aug 30 2007, 09:59) *
Так что, придется разбираться в стартапах, хоть и не хотелось.

Огорчили sad.gif, попытками что-то писать хоть слегка не разбираясь в стартапах.
Kitsok
Цитата(zltigo @ Aug 30 2007, 11:15) *
Огорчили sad.gif, попытками что-то писать хоть слегка не разбираясь в стартапах.

smile.gif Ну теперь слегка разбираюсь, так что не огорчайтесь wink.gif
Kitsok
В общем, после адаптации старых стартапов к новому компилеру вроде завелось, но как-то странно.

Во-первых, пришлось в лоб в startup.s задавать начало памяти, бо раньше (поправьте если не так) можно было пользоваться именами из .xcl, а в новом - фиг, по крайней мере, у меня не получилось.

Во-вторых, не знаю почему, но в случае если таблица векторов объявляется не как b <туда-то>, а как ldr pc,[pc,#+24], и в соответствующих местах размещать b или прямо код (в случае с FIQ), то при первом-же прерывании возникает undefined instruction. Подозреваю, что что-то не так с thumb/arm, но разобраться не получилось.

В общем, поскольку этот переход затянулся, я откатился на 4.х.

На всякий случай, вот полу-рабочие стартапы и конфиг.

comments are welcome smile.gif
zltigo
Цитата(Kitsok @ Aug 31 2007, 10:02) *
Во-первых...

Во-первых я свои startup и скрипрт выкладывал, причем было-стало и рабочие.
Цитата
а в новом - фиг, по крайней мере, у меня не получилось.

Нет, конечно.
Цитата
случае если таблица векторов объявляется не как b <туда-то>, а как..

Нет, конечно.
MALLOY2
Нашел 2 голюка, прошу проверить smile.gif, глюки не критичны.

1) у меня свой в проекте файл х.icf, если этот файл править из визарда в среде (я првил START ROM)и нажать save, то исчезает точка с запятой в конце файла что приводит к ошибке smile.gif, потом ручками ставить надо smile.gif


2) второй глюк связан с симулятором. У меня стратап состоит из 2 файлов, в первом инициализация стеков, памяти и переход на майн, во втором вектора прерываний и обработчики прерываний. Привожу немного кода первого файла. Всякие дефайны выкинул для экономии места.
Код
       MODULE       ?program_start
    SECTION       IRQ_STACK:DATA:NOROOT(3)
                SECTION       FIQ_STACK:DATA:NOROOT(3)
                SECTION       UND_STACK:DATA:NOROOT(3)
                SECTION       ABT_STACK:DATA:NOROOT(3)        
                SECTION       SVC_STACK:DATA:NOROOT(3)
                SECTION       CSTACK:DATA:NOROOT(3)
                SECTION    .text:CODE:NOROOT(2)
                PUBLIC     __iar_program_start
                EXTERN  ?main
                CODE32
                

__iar_program_start:
        NOP  ; execute some instructions to access CPU registers after wake
        NOP  ; up from Reset, while waiting for OSC stabilization
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
; --- Initialize Stack pointer registers
      ; Enter each mode in turn and set up the stack pointer
           MSR     CPSR_c, #Mode_FIQ|I_Bit|F_Bit   ; No interrupts
           LDR     SP, =SFE(FIQ_STACK)

           MSR     CPSR_c, #Mode_IRQ|I_Bit|F_Bit   ; No interrupts
           LDR     SP, = SFE(IRQ_STACK)

           MSR     CPSR_c, #Mode_ABT|I_Bit|F_Bit   ; No interrupts
           LDR     SP, = SFE(ABT_STACK)
    
           MSR     CPSR_c, #Mode_UND|I_Bit|F_Bit   ; No interrupts
        LDR     SP, = SFE(UND_STACK)

           MSR     CPSR_c, #Mode_SVC|I_Bit|F_Bit   ; No interrupts
           LDR     SP, = SFE(SVC_STACK)
; --- Set bits 17-18 (DTCM/ITCM order bits) of the Core Configuration Control Register
        MOV     r0, #0x60000            
        MCR     p15,0x1,r0,c15,c1,0
; --- Now change to USR/SYS mode and set up User mode stack,
        MSR     CPSR_c, #Mode_SYS              ; IRQs & FIQs are now enabled
        LDR     SP, = SFE(CSTACK)
; --- Now enter the C code
        B       ?main   ; Note : use B not BL, because an application will
                        ; never return this way
        LTORG
        END


2 файл с векторами
Код
IMPORT  __iar_program_start
        SECTION    .intvec:CODE(2)    ;<- эта секция расположена с 0 адреса         
        CODE32
;*******************************************************************************
;                      Import exception handlers
;*******************************************************************************
        IMPORT  Undefined_Handler
        IMPORT  SWI_Handler
        IMPORT  Prefetch_Handler
        IMPORT  Abort_Handler
        IMPORT  FIQ_Handler
;*******************************************************************************
;            Export Peripherals IRQ handlers table address
;*******************************************************************************

;*******************************************************************************
;                        Exception vectors
;*******************************************************************************

        LDR     PC, Reset_Addr
        LDR     PC, Undefined_Addr
        LDR     PC, SWI_Addr
        LDR     PC, Prefetch_Addr
        LDR     PC, Abort_Addr
        NOP                            ; Reserved vector
        LDR     PC, IRQ_Addr
    LDR    PC, FIQ_Addr
;*******************************************************************************
;               Exception handlers address table
;*******************************************************************************
Reset_Addr      DCD     __iar_program_start
Undefined_Addr  DCD     UndefinedHandler
SWI_Addr        DCD     SWIHandler
Prefetch_Addr   DCD     PrefetchAbortHandler
Abort_Addr      DCD     DataAbortHandler
                DCD     0               ; Reserved vector
IRQ_Addr        DCD     IRQHandler
FIQ_Addr    DCD     FIQ_Handler       ; Branch to fiq_handler

       LTORG

       END


Глюк заключается в метке __iar_program_start, если ее переименовать на __my_start (в обеих файлах естественно smile.gif ), то в симуляторе всь код игнорируется и переход делается на __iar_program_start, правда откуда он берется загадка, но если посмотрить листинг с 0 адреса то все нормально, стоит переход на мой стартап, при загрузке проца все нормально работает, а в симуляторе код игнорируется после чего отладчик начинает ругаться что стек начинается с нулевого адреса и т.д. то есть симулятор не выполнил мой сартап код. Вот такая фишка, а может где я чего не понял ?
zltigo
Цитата(MALLOY2 @ Aug 31 2007, 12:26) *
Глюк заключается в метке __iar_program_start

Это типа не баг,это фича sad.gif у них такая появилась - имя, блин, зарезервировали...
Тоже наступил, потом уже документ прочитал.
Цитата
правда откуда он берется загадка...

Линкуется 'готовый'.

По поводу первого бага - не скажу, визардами никогда не пользуюсь - своих ошибок, если надо, сделаю smile.gif
Kitsok
Цитата(zltigo @ Aug 31 2007, 12:04) *
Нет, конечно.

Нет - нельзя пользоваться теперь, нельзя было пользоваться раньше, неправильно задавать начало-конец памяти напрямую в startup.s?
Цитата
Нет, конечно.

Нет - это не связано с переходами между thumb и arm?
MALLOY2
Цитата
По поводу первого бага - не скажу, визардами никогда не пользуюсь - своих ошибок, если надо, сделаю


я тоже не пользуюсь, но так как линкер порубали и править теперь там толком нечего, решил визарт попробывать и вот грабли smile.gif.

Еще блин потратил 2 дня что бы прилинковать 3 бинарных файла к проэкту, раскажу мож кому пригодится smile.gif. В версии 4.х в линк файле можно было задать такую строку
Код
--image_input= "Путь к файлу", SYMBOL, SEGMENT

Сейчас такую фичу естесно не принимает, выход вставлять эту строку в
Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды.
zltigo
Цитата(MALLOY2 @ Aug 31 2007, 13:05) *
но так как линкер порубали и править теперь там толком нечего

Ну Вы не правы - линкер вполне управляем и синтаксис приятнее (правда кое-что из документированного у меня не сработало sad.gif ) и не хуже прежднего, ну разве только некоторые, в общем-то несвойственные линкеру функциии, теперь binutils и другие приблуды выполняют.


Цитата
Сейчас такую фичу естесно не принимает, выход вставлять эту строку в
Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды.

ну и куда их wizard дальше вставляет? smile.gif - в тот-же скрипт. Ну а вообще правильнее пользовать абсолютно переносимый вариант с конвертацией в массив с последующей компиляцией и линковкой в нужное место.
MALLOY2
Цитата
ну и куда их wizard дальше вставляет? - в тот-же скрипт.

нет он передает командной строкой smile.gif сам скрип не подерживает такой фичи, хотя должна быть команда INCBIN помоему так кличется но м мануале гдето читал что она не потдержана.

Цитата
Ну а вообще правильнее пользовать абсолютно переносимый вариант с конвертацией в массив с последующей компиляцией и линковкой в нужное место.


да както файлы прошивок FPGA и DSP не красиво выглядят в массивах учитывая их размер smile.gif да и время забирает это преобразование....
zltigo
Цитата(MALLOY2 @ Aug 31 2007, 13:56) *
да както файлы прошивок FPGA и DSP не красиво выглядят в массивах учитывая их размер smile.gif да и время забирает это преобразование....

Ну время это ерунда. А я вообще такие вещи просто приклеиваются в конец при заливке и если их несколько разыскиваются по сигнатуре.
MALLOY2
--image_input это и делает smile.gif
starmos
Подскажите, как в IAR узнать время работы участка кода? В машинных циклах или тактах синхронизации. Не могу найти и всё. Туплю, что ли. У меня EWARM 5.
alexander55
Цитата(starmos @ Sep 1 2007, 13:07) *
Подскажите, как в IAR узнать время работы участка кода? В машинных циклах или тактах синхронизации. Не могу найти и всё. Туплю, что ли. У меня EWARM 5.

В Keil это есть в EWA никогда не видел.

Цитата(MALLOY2 @ Aug 31 2007, 14:05) *
Сейчас такую фичу естесно не принимает, выход вставлять эту строку в
Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды.

У меня Linker выругался, когда я ввел туда некорректные значения
-Z(CODE)...
-Z(DATA)...
Позже я разобрался с этим вопросом.
Но по ходу дела нашел файлы с расширением .icf (подключаюся на основной странице конфигурации Linker) и там путем тупого редактирования все делается попроще, на мой взляд.
В примерах к 5.10 есть образцы, на что ссылается и Migration Guide.
MALLOY2
Цитата
Подскажите, как в IAR узнать время работы участка кода? В машинных циклах или тактах синхронизации. Не могу найти и всё. Туплю, что ли. У меня EWARM 5.

В иар в дебагере есть профайлер, view -> profiling, но в его точности у меня есть сомнения, а если еще им пользоваться не в симуляторе, а через jtag, так это вобще извращение.

Лучший способ это таймером, к примеру так
Код
unsigned int start, stop, overhead;
start = start_timer(); /* измерение времени запуска*/
stop = stop_timer();  /* таймера */
overhead = stop − start;
start = start_timer();
//вызов функции для которой делается измерение
stop = stop_timer();
printf(”cycles: %ld\n”,(unsigned long)(stop − start – overhead));
MALLOY2
По поводу стартовой метки __iar_program_start эта фича отключается из среды
linker -> library-> override default programm entry, дальше можно свою создать или сказать что бы как в приложеннии было.
zltigo
Цитата(MALLOY2 @ Sep 3 2007, 14:37) *
По поводу стартовой метки __iar_program_start эта фича отключается из среды

Да это ясно, что линкеру указывается любая. Для чего поменяли не понятно smile.gif а почему при экспорте старого проекта старый default не используют еще более не понятно.
starmos
Спасибо за помощь. Но я тоже нашел. В симуляторе, Registers - CPU Registers - CYCLECOUNTER.

Зато теперь другая фигня. Софт отлажен, шъётся нормально - не работает. Т.е. в симуляторе всё нормально, в железе никак. Микроконтроллер LPC2214. Может было подобное? Я подозреваю компоновщик, но как проверить? Зашиваю через последовательный порт.
Сергей Борщ
Цитата(starmos @ Sep 5 2007, 15:11) *
Софт отлажен, шъётся нормально - не работает.
P0.14 куда подтянут?
MALLOY2
Цитата
Спасибо за помощь. Но я тоже нашел. В симуляторе, Registers - CPU Registers - CYCLECOUNTER.


Только нестоит забывать что этот "CYCLECOUNTER" на самом деле "COMANDCOUNTER" то есть счетчик команд, и с циклами (точнее с временем выполнения никак не связан), а это значит что толку от него никакого.

Цитата
Я подозреваю компоновщик, но как проверить?


Если не вериш своим глазам, точнее тому что написал в линкере, тогда включи генерацию map файла и посмотрю что где лежит.



Цитата
Цитата
(starmos @ Sep 5 2007, 15:11)
Софт отлажен, шъётся нормально - не работает.

P0.14 куда подтянут?


еще добавлю, по адресу 0x0000 0014 правельная контрольная сумма стоит ?

P.S. может я что путаю и в 22хх уже нету этой заморочки.
starmos
P0.14 подтянут куда надо smile.gif Я уже проверил.
Контрольная сумма правильная, считал из памяти и проверил.
Интересную вещь обнаружил, но ещё не осмыслил. Программа запускается из утилиты LPC 2000 Flash Utility, там есть Flash Buffer, а там кнопка Run from Address. Так вот этой кнопкой запускается, а сбросом нет.


PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling.
alexander55
Цитата(starmos @ Sep 6 2007, 07:50) *
P0.14 подтянут куда надо smile.gif Я уже проверил.
Контрольная сумма правильная, считал из памяти и проверил.
Интересную вещь обнаружил, но ещё не осмыслил. Программа запускается из утилиты LPC 2000 Flash Utility, там есть Flash Buffer, а там кнопка Run from Address. Так вот этой кнопкой запускается, а сбросом нет.
PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling.

Тут есть такой интересный момент. Утилита Philips программирования ISP сама счтает дополнительный код и подставляет в 0x14. Для корректного подсчета надо, чтобы там был 0 (иначе облом).
MALLOY2
Цитата
PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling.


А вы запишите в порт значение 3 раза подряд и посмотрите сколько циклов покажет smile.gif, он покажет 3.


P.S. считать циклы в ядрах с конвеером, да еще когда куча перефирии работающей на разной частоте проктически невозможно, слишком много всяких параметров надо вводить в симулятор.
starmos
Запустил. Как обычно в таких случаях чувствуешь себя глупцом. Просто есть контроллер внешней памяти. И надо ещё подтягивать при сбросе выводы BOOT1 и BOOT0.
Vict59
Насколько я понял для переформатирования .elf файла, который делает линковщик, в raw binary .bin надо использовать objcopy utility из комплекта binutils.
Вопрос: как проще делать эту операцию, я не нашел в IDE IAR автоматизации сего процесса?
Может быть вопрос "чайницкий" - но я пока только перехожу от avr к arm. :-)
alexander55
Цитата(Vict59 @ Sep 21 2007, 12:16) *
Насколько я понял для переформатирования .elf файла, который делает линковщик, в raw binary .bin надо использовать objcopy utility из комплекта binutils.
Вопрос: как проще делать эту операцию, я не нашел в IDE IAR автоматизации сего процесса?

Интересно, а чем Вас Hex или mot не устраивают (они получаются Converter и содержат информацию о размещении)?
zltigo
Цитата(Vict59 @ Sep 21 2007, 11:16) *
не нашел в IDE IAR автоматизации сего процесса?

Postbuild опишите в проекте.
Vict59
Цитата
Интересно, а чем Вас Hex или mot не устраивают (они получаются Converter и содержат информацию о размещении)?

Насколько я понял для SAM-BA нужен .bin, можно наверное программировать и по другому, но для начала попробую на SAM-BA.

Цитата
Postbuild опишите в проекте.

Спасибо попробую разобраться!
Vict59
Ну вот попробовал. Командная строка типа:
objcopy.exe -O binary -S file.out file.bin
работает, а когда пробую записать Post-build Command line:
$PROJ_DIR$\Release\Exe\objcopy.exe -O binary -S file.out file.bin
Выбрасывает ошибку. Видимо все-таки я не врубаюсь.... :-(
zltigo
Цитата(Vict59 @ Sep 21 2007, 20:36) *
работает, а когда пробую записать Post-build Command line:
$PROJ_DIR$\Release\Exe\objcopy.exe -O binary -S file.out file.bin

- Для начала кокого-то путь objcjpy зачем-то указан и причем явно не правильно
- А что проект называется 'file' smile.gif ?
Цитата
Выбрасывает ошибку. Видимо все-таки я не врубаюсь.... :-(

Немедленно найдите smile.gif, куда он ее выбросил и разберитесь на что жалуется....
Vict59
Цитата
- Для начала кокого-то путь objcjpy зачем-то указан и причем явно не правильно

Точно! Ошибся!
Цитата
- А что проект называется 'file'

file - это файл, который я хочу превратить в .bin
Цитата
Немедленно найдите , куда он ее выбросил и разберитесь на что жалуется....

Куда он ее кинул я пока не разобрался, но все-таки в Post-build Command line заработала строка:
$TOOLKIT_DIR$\bin\objcopy.exe -O binary -S $PROJ_DIR$\Release\Exe\file.out $PROJ_DIR$\Release\Exe\file.bin
СПАСИБО ЗА ПОДДЕРЖКУ! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.