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

 
 
> tnkernel + sam7s256, Не пилится
MiDWalkeR
сообщение Mar 6 2014, 13:15
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 28-02-14
Пользователь №: 80 751



Доброго времени суток. Прошу пардону, если что то похожее создавалось, но я искал и не нашёл.
Теперь по теме: не могу запустить tnkernel на sam7s256. Скачал scm версии 2,7 и 2,4. В 2,4 нашелся пример под sam7s, но тут возникла другая проблема - не смог нормально завести свой стартап + их стартап. Получается какая то полнейшая каша wacko.gif Пишу в Eclipse, как следствие со своим makefile'ом. Бьюсь уже порядком недели, всё никак не выходит чаша. В общем, люди добрые, сами мы не местные, поможите кто чем может. Если есть у кого какой маломальски рабочий пример заведенной оси под sam7s(2.7 было бы вообще предел моих мечтаний) буду весьма признателен. Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MiDWalkeR
сообщение Mar 7 2014, 07:03
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 28-02-14
Пользователь №: 80 751



я тут сегодня кое что нарыл. Педали заключаются в следующем:
это мой:
Код
        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
Дело ещё заключаеться в том, что когда я сперва завел кернел, он работал. Я был рад - жизнь удалась, до тех пор пока не завел второй процесс. И всё. Работает только один процесс, старший по приоритету, ну просто напросто он не переключаеться, да и с чего ему переключаться, если в моём стартапе этого нету.

З.Ы. О великий модератор, перенеси мою тему на уровень повыше, дабы помощь отыскать мне.
Go to the top of the page
 
+Quote Post



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

 


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


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