Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: tnkernel + sam7s256
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
MiDWalkeR
Доброго времени суток. Прошу пардону, если что то похожее создавалось, но я искал и не нашёл.
Теперь по теме: не могу запустить tnkernel на sam7s256. Скачал scm версии 2,7 и 2,4. В 2,4 нашелся пример под sam7s, но тут возникла другая проблема - не смог нормально завести свой стартап + их стартап. Получается какая то полнейшая каша wacko.gif Пишу в Eclipse, как следствие со своим makefile'ом. Бьюсь уже порядком недели, всё никак не выходит чаша. В общем, люди добрые, сами мы не местные, поможите кто чем может. Если есть у кого какой маломальски рабочий пример заведенной оси под sam7s(2.7 было бы вообще предел моих мечтаний) буду весьма признателен. Заранее спасибо.
AHTOXA
Цитата(MiDWalkeR @ Mar 6 2014, 19:15) *
Получается какая то полнейшая каша wacko.gif

Вот это вы точно подметилиsm.gif
Так что вы пытаетесь запустить - tnkernel или scmRTOS?
MiDWalkeR
Да...вот это я молодец) Всё напутал, как говориться - кони люди. Извиняюсь и исправляюсь - tnkernel, a не scmRTOS. (я, видать, когда выбирал ось, перечитал, хотя что я оправдываюсьsm.gif ). В целом мой посыл остаётся прежним: найти рабочий пример Tnkernel 2.7 под sam7s* под GCC.
AHTOXA
Тогда надо попросить модераторов перенести вашу тему на уровень выше по форуму, в "Операционные системы". Там вероятность получить помощь будет побольше.
MiDWalkeR
я тут сегодня кое что нарыл. Педали заключаются в следующем:
это мой:
Код
        sub        lr, lr, #4
        stmfd    sp!, {lr}
        mrs        r14, SPSR
        stmfd    sp!, {r14}
        stmfd    sp!, {r0}
        ldr        r14, =AT91C_BASE_AIC
        ldr        r0,  [r14, #AIC_IVR]
        str        r14, [r14, #AIC_IVR]
        msr        CPSR_c, #MODE_SVC
        stmfd     sp!, { r1-r3, r12, r14}
        mov        r14, pc
        bx        r0
        ldmia    sp!, { r1-r3, r12, r14}
        msr        CPSR_c, #NIRQ | MODE_IRQ
        ldr        r14, =AT91C_BASE_AIC
        str        r14, [r14, #AIC_EOICR]
        ldmia    sp!, {r0}
        ldmia    sp!, {r14}
        msr        SPSR_cxsf, r14
        ldmia    sp!, {pc}^

это кернеловское:
Код
     sub    lr,  lr, #4             /* Set lr to the actual return address */
     stmfd  sp!, {r0-r12, lr}       /* save all registers*/

     ldr    r0,  =tn_cpu_irq_handler
     mov    lr,  pc
     bx     r0

     ldr    r0,  =tn_curr_run_task  /*  context switch ? */
     ldr    r1,  [r0]
     ldr    r0,  =tn_next_task_to_run
     ldr    r2,  [r0]
     cmp    r1,  r2                 /* if equal - return */
     beq    exit_irq_int
     b      tn_int_ctx_switch       /* else - goto context switch */

вот сейчас сижу, ломаю голову, как одно привести ко второму или наоборотsm.gif
Дело ещё заключаеться в том, что когда я сперва завел кернел, он работал. Я был рад - жизнь удалась, до тех пор пока не завел второй процесс. И всё. Работает только один процесс, старший по приоритету, ну просто напросто он не переключаеться, да и с чего ему переключаться, если в моём стартапе этого нету.

З.Ы. О великий модератор, перенеси мою тему на уровень повыше, дабы помощь отыскать мне.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.