2. в документации практически ничего не описано по CLINT и MTIMER которые нужны для оси. не понятно есть ли прерывание от MTIMER, и как его добавить.
3. не понятна система векторов прерываний. есть ли векторная или только программный обработчик на основе анализа MICC/UICC?
4. для разработчиков мк - из РП:
Код: Выделить всё
Регистр CLINT_MTIMECMP0 содержит 64-битное значение таймера. Значение увеличивается по сигналу timer_pulse внешнего интерфейса процессорного комплекса. Структура регистра CLINT_MTIMECMP представлена в таблице 9.2.
5. при попытке подключения оси мк запирается в бесконечном цикле обработчика исключений из plic.c: trap_handle.
mcause = 6 (MCAUSE_EXCEPT_STAMOADDRMISALGN=Доступ по не выровненному адресу при операции записи)
mepc указывает на адрес 800018de
Код: Выделить всё
load_x x5, portCRITICAL_NESTING_OFFSET * portWORD_SIZE( sp ) /* Obtain xCriticalNesting value for this task from task's stack. */
800018d8: 52d6 lw t0,116(sp)
load_x x6, pxCriticalNesting /* Load the address of xCriticalNesting into x6. */
800018da: 8841a303 lw t1,-1916(gp) # 40000004 <pxCriticalNesting>
store_x x5, 0( x6 ) /* Restore the critical nesting value for this task. */
800018de: 00532023 sw t0,0(t1)
по даташиту SW - 32bit инструкция перемещения...
этапы запуска мк по примерам производителя - пройден. светодиоды моргают.
к сожалению на арм пользовал другую ось, и она risc-v не поддерживает, потому пришлось на эту перейти.
вобщем буду благодарен за помощь