Перейти к содержанию
    

Alex03

Свой
  • Постов

    359
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Alex03

  • Звание
    Местный
    Местный
  1. AT91RM9200 + Angstron linux

    Может не в тему, но иногда очень полезна опция ядра init=xxxx, типа: init=/bin/bash
  2. Если я ничего не путаю то... Во времена CrossWorks 1.5, LPC 2103 ещё не было. Значит Вы воспользовались "чужим" memorymap файлом, или свой кривовато создали?
  3. Да нифига она не звучит, даже у нас, в провинциальном городе Челябинской обл. По крайней мере для тех кому семью кормить надо, проблемы с жильём решать, да и отдых не на диване тоже денег стоит.
  4. Т.е. между ISA и ARM имеется некая двухпортовая память.... Вот отсюда и надо плясать, если двухпортовость честная, то никаких RDY, WAIT и т.д. в сторону ARM не должно быть. Если псевдо-двухпортовость то в зависимости от того как она реализована возможно и можно решить проблему (те же вэйтстэйты правильно расчитать и т.д.). Думаю на одной ПЛИС-ине и СРАМ-ине легко решить эту задачу (может и готовые решения есть). P.S. Помнится ADSP-2181 очень легко вешалить на ISA шину (с отображением своей внутренней памяти)
  5. Может читаете регистр данных дважды? В любом случае экстрасенсов нет, приведите код.
  6. 60/8=7.5МГц максимум частота для SPI. Если остановитесь именно на этих процах (они в линейке LPC довольно старые и дорогие) то не зубудте про обязательное подтягивание slave select для каждого SPI. В более новых есть более шустрые SSP
  7. Варианты: 1. vsprintf() хочет double а получает float. 2. Не хватает стека .... Хоть бы компиллер и вызывающий код указали?
  8. Эт как? Всё таки 512кБ, как и понял zltigo? У меня CAN в LP2292 вполне нормально работает, естественно с учётом errata, и не используется некоторая функциональность типа FullCAN (изначально не планировалось использовать).
  9. В том же CrossWorks для разных процев имеются разные загрузчики, которые первоначально грузятся в RAM и запускаются, а уже потом эти загрузчики принимают команды/данные через JTAG (либо через определённые ячейки RAM, либо DCC(debug comms channel)) и производят запись во flash обращаясь либо к определённым регистрам проца, либо вызывая функции IAP как в LPC. Посмотрите как написаны загрузчики, исходники там прилигаются.
  10. Лучше разделить case IIR_RLS: // error manage temp = rU1LSR; if (temp&(7<<2)) // PE,FE,BI { data=rU1RBR; ... } ... break; case IIR_RDA: // receive data case IIR_CTI: // time out for(;;) { temp = rU1LSR; // Если данных нет (RDR=0), выходим if ((temp&0x01)==0) break; // Читаем с вершины FIFO data=rU1RBR; tn_my_queue_isend_polling(&queueRX,data); } break; meister Согласен. У меня любая ошибка - это ошибка и далее соответствующие действия не зависимо от типа ошибки. Правда отдельно тикают счётчики разных ошибок, прерываний, принятых/переданных байт и т.д. :)
  11. Приведите тогда код всего обработчика прерываний... Break interrupt, а также OE/PE/FE - это другой тип прерывания, и проверять их надо не в CTI а в RLS. И читать при Break interrupt надо не U1RBR а U1LSR У меня обработчик начинается так: uint register nIIR; while( ((nIIR = U0IIR) & U0IIR_INT_PENDING) == 0 ) { switch(nIIR & U0IIR_INT_ID_MASK) { case U0IIR_INT_ID_RLS: // прерывание по ошибке U0LSR; ... break;
  12. Странно... у меня вполне работает case U0IIR_INT_ID_RX_TIMEOUT: // прерывание по отсутствию данных case U0IIR_INT_ID_RDA: // прерывание по приему while(U0LSR & U0LSR_RDR) { uchar uc = U0RBR; ... } break; А что в начале/конце обработчика прерывания (главный switch как выглядит)? И не пользуетесь ли отладчиком для просмотра регистров проца в(от) которых сбрасываются флаги по чтению (тот же UхRBR)? О! кстати! Видимо вместо if ((temp&0x11)==0) надо if (!(temp&0x03)) а то и if (!(temp&0x01)) ???
  13. Ну и ещё надо Вам самим сначала продумать какую память как использовать, а потом реализовать эти идеи. Вариантов много, зависит от задачи, и в общем случае, в процах без MMU, стандартных решений нет чтобы использовать два несмежных куска памяти не задумываясь что и где лежит. Во внутреннюю RAM как минимум стоит засунуть стеки... Возможно написание собственного менеджера кучи, работающего с 2-мя (несколькими) кусками памяти и т.д. в общем повозиться с сегментами придётся.
  14. А каков объём RAM-а нужен? А то мож какойнить LPC2292 со SRAM-ом покатит? Хотя первые LPC почемуто продаются по цене большей чем нынешние...
  15. Если вы знаете соглашение о вызовах, например что результат unsigned long из функции передаётся в r0, то и пользуйте r0. Ну а чтобы не было мата про возвращаемое значение и чтобы компилятор не генерил пролог/эпилог функцию можно объявить как naked. Как это делается в ИАРе я не знаю, ибо не пользую (может __raw), в GCC всё просто, в том числе входные/выходные параметры в АСМ-блок. :)
×
×
  • Создать...