Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC + CRP в ADS 1.2
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Romario
Как бы покрасивее разместить число для активизации CRP в LPC средствами ADS 1.2 ?

умнее чем просто забить 0-ми до 0x1FC (подгоном) и объявить DCD 0x87654321
не придумал (не получилось).

а хочется универсально...
zltigo
Цитата(Romario @ May 11 2006, 17:36) *
Как бы покрасивее разместить число для активизации CRP в LPC средствами ADS 1.2 ?

умнее чем просто забить 0-ми до 0x1FC (подгоном) и объявить DCD 0x87654321
не придумал (не получилось).

а хочется универсально...


Естественно ORG.
Код
               ............
                ldr     r0,=?main
                bx      r0

                ORG     0x1FC
                dc32    0x0x87654321      // Protect Label

                ENDMOD; ?CSTARTUP
aaarrr
Цитата(zltigo @ May 11 2006, 19:42) *
Естественно ORG.


Не знает ADS такого слова.
Сделайте отдельную секцию и разместите её по нужному адресу в scatter файле.
Romario
Цитата(zltigo @ May 11 2006, 19:42) *
Цитата(Romario @ May 11 2006, 17:36) *

Как бы покрасивее разместить число для активизации CRP в LPC средствами ADS 1.2 ?

умнее чем просто забить 0-ми до 0x1FC (подгоном) и объявить DCD 0x87654321
не придумал (не получилось).

а хочется универсально...


Естественно ORG.
Код
               ............
                ldr     r0,=?main
                bx      r0

                ORG     0x1FC
                dc32    0x0x87654321      // Protect Label

                ENDMOD; ?CSTARTUP



обана! он там есть?smile.gif искал в assembler guid.pdf "ORG" не нашел.
благодарю!

ну нет так нет...

aaarrr,
да уж как только секции не делал, поэтому и спрашиваю
вот пример
Код
FLASH 0x00000000
{
    ROM1 0x00000000
    {
        vectors.o (Vect , +First)
        crt0.o    (crt_0, +First)
    }

    ROM2 0x000001FC
    {
        vectors.o (crp_dat)
    }

    ROM3 0x00000200
    {
        * (+RO)
        * (+TEXT)
    }

    RAM    0x40000000 0x8000
    {
      *(+RW,+ZI)
    }

    STACK  0x40007C00 0x0400
    {
      stack.o (+ZI)
    }


}


может кто реальный примерчик подкинет, досталось немного в scf ковыряться
собственно у меня такой был наитупейший scf и он меня полностью устраивает.
попытки закинуть секцию по адресу 1FC приводят к непонятным руганиям
Код
FLASH 0x00000000
{
    ROM 0x00000000
    {
        vectors.o (Vect, +First)
        crt0.o    (crt_0)        
        * (+RO)
        * (+TEXT)
    }
    RAM    0x40000000 0x8000
    {
      *(+RW,+ZI)
    }

    STACK  0x40007C00 0x0400
    {
      stack.o (+ZI)
    }
}


вот ругань линкера
zltigo
Цитата(aaarrr @ May 11 2006, 19:06) *
Не знает ADS такого слова.

Жуть какая :-( прямо потрясение жизненных основ какое-то :-)
aaarrr
В действительности все оказалось не так просто, как хотелось бы sad.gif

Итак, решение:

в scf:
Код
FLASH 0x00000000 0x00020000
{
    FLASHA 0x00000000 0x000001fc
    {
        start.o (startup, +First)
    }
    FLASHB 0x000001fc FIXED
    {
        start.o(crp)
    }
    FLASHC 0x00000200 0x0001fe00
    {
        * (+RO)
    }
    RAM 0x40000000 0x00010000
    {
        * (+RW, +ZI)
    }
}


В файле start.s:
Код
; ***************************************************************************
; *
        AREA    crp, DATA, READONLY

        EXPORT    crp_data

crp_data
        DCD        0x87654321


Секции Region$$Table и ZISection$$Table можно засунуть в FLASHA для экономии места.
Romario
(---- сморозил------)
aaarrr
Какие ещё "дырки"? Будет забитый 0-ми кусок между концом
первой секции (start.o(startup)) и адресом 0x1fc.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.