Jump to content

    

slabnoff

Свой
  • Content Count

    82
  • Joined

  • Last visited

Community Reputation

0 Обычный

About slabnoff

  • Rank
    Частый гость

Контакты

  • ICQ
    Array
  1. Может кому пригодится. Ответ от саппорта: Dear Andrew, *** Question We became necessary to connect 8-bit wide SDRAM to the lpc18xx. In the user manual (UM10430) there is a line (in description of EMC features) "16-bit and 32-bit wide chip select SDRAM memory support...", but at the same time in the register description for DYNAMICCONFIGx has a configuration "...16 Mb (2Mx8), 2 banks, row length = 11, column length = 9" and some others for 8-bit wide SDRAM. The document AN10771, which describes the use of a very similar memory controller for lpc2478 has a line "In the case of an 8-bit SDRAM memory, the data bus is 8-bit wide and D8-D15 should not be connected to the EMC". Question: Is it possible to use an 8-bit SDRAM with lpc18xx? *** Answer No, an 8-bit SDRAM data bus is not supported. 8-bit devices can be used, but only when they are used to form a 16-bit data bus (two devices) or 32-bit data bus (four devices). The entry in the DYNAMICCONFIGx register must be made for the single device. Example: If you use four 64MB 8-bit devices to form a 32-bit data bus, you select the "64 MB (8Mx8)" entry in the 32-bit bus section, and not the 256MB 32-bit one. This was true already for the LPC2400 devices (indeed a similar EMC block), and therefore the comment in the appnote AN10771 is wrong. Please let us know if this does not resolve your inquiry. Your ticket will remain closed if we do not hear from you. Best Regards, The NXP Technical Support Team NXP Semiconductors =========================================================
  2. Интересный момент... Получается это недокументированная возможность. Т.к. штатно по описанию под внешнюю память у них выделены два первых региона и про одновременную выдачу обоих чипселектов не слова. Правда у нас большое желание уйти на кортексы, возможно даже не lpc18xx, а lpc43xx. Интересно получить большую скорострельность... P.S. Как и обещал - БОЛЬШОЕ СПАСИБО!!! Отписал в саппорт NXP. Может что-то ответят...
  3. 2*64 - получается. А 3*64 как? Там у EMC 16 бит адреса и два чипселекта. Если расскажете, как подцепить еще 64 килобайта - скажу большое спасибо.
  4. Сейчас есть девайс с lpc2388, к нему привешено 512 килобайт статического ОЗУ. Из которых я реально активно пользую 128, остальные только программно переключая страницы, что несколько неудобно. Возникла мысль сделать новую итерацию устройства, на lpc18xx или lpc43xx. Соответственно аппаратчик прорабатывая схему (в ответ на мои сетования по поводу страничной работы с внешним ОЗУ) предложил отказаться от статики и перейти на SDRAM. Компоновка платы плотная, поэтому крайне желательно уложиться в корпус 144 ноги, а не в 208. А теперь соответственно вопрос: по документации в Features про EMC написано, что SDRAM 16-bit and 32-bit wide, но нам бы надо 8 бит (скорость в пределах разумного не важна, нужен тупо объем для буферирования, веб-сервера и прочей ерунды; а лишние 8 ног как раз помогут остаться в пределах корпуса 144 ног), и далее в описании регистра DYNAMICCONFIGx в описании address maping есть конфигурации 2Mx8 и т.п.. В общем я запутался, можно ли подцепить 8-битную SDRAM? P.S. В lpc24xx вроде бы такой же EMC и в AN10771 есть такая интересная фраза "In the case of an 8-bit SDRAM memory, the data bus is 8-bit wide and D8-D15 should not be connected to the EMC." P.P.S. Не пинайте сильно, я в первый раз SDRAM в МК сталкиваюсь.
  5. Блинский... Чукча не читатель, чукча писатель.
  6. В общем нужно сделать автоматический билд проекта после добавления в svn. Проблема автоматического билда в общем-то решена, но уперся в командно-строковую сборку: есть проект, изначально собиравшийся из GUI, мейк-файлов не делалось, под сотню файлов (с библиотеками типа lwip) + несколько вариантов сборки в проекте. Написать руками makefile - уж очень долго получается, а генераторами как-то до этого пользоваться не пришлось (Cmake уже скачал...). В общем порекомендуйте какие-нибудь проверенные способы облегчить себе жизнь.
  7. Ну тогда напишите дисклаймер в начале статьи. P.S. Прочитал еще "Как писать программы без ошибок" - ну очень статья понравилась - сам интуитивно к подобному пришел.
  8. Руки дошли почитать статью... Не считайте придиркой, но все же не стоит создавать кашу в мозгах читателя: 1) Термин "реальное время" и производные от него по большому счету нормально применимы к конечным системам, а не к средствам из которых их делают (в том числе ОС). Вообще нормальное определение реального времени: "система (! не операционная система, а конечный продукт, в котором может использоваться ОСРВ, а может вообще быть суперлуп и даже... вообще не быть процессора и электроники) является системой реального времени, если времена реакций на события всегда меньше либо равны заданным". Далее если мягкость/жесткость вводить - то данное определение подходит для "жестких" систем, а для "мягких" надо вставить в конце "...в большинстве случаев". 2) Тип планирования (вытесняющее/кооператив) в общем-то ОТНОШЕНИЯ К ЖЕСТКОМУ/МЯГКОМУ реальному времени не имеет. По большому счету если вводить критерий "жесткости" применительно к ОС, то тогда с этой позиции - ОС является "жесткой" ОСРВ если задержки привносимые ОС всегда известны - т.е. можно использовать как инструмент для "жесткой" системы РВ, аналогично "мягкой" ОСРВ - если известно, что в большинстве случаев привносимые ОС задержки не превышают некоторых известных значений. А то, как воспользуется дисциплиной планирования программист - его дело и ответственность - я отлично делал на суперлупе и кооперативе системы "жесткого" реального времени. Какая бы крутейшая ОСРВ не использовалась, всегда можно реализовать программу, так что свойства реального времени в системе не будут обеспечены.
  9. LPC23xx, IAP и PLL

    Нормально работает lpc2388 на частоте 72 МГц. Выяснился очень интересный момент не описанный в errata: - записать буфер из любой памяти кроме внутреннего ОЗУ нельзя (т.е. и из ОЗУ USB и Ethernet (я не пользуюсь USB, так что Heap лежит в USB), а не только внешнего ОЗУ) - в некоторых случаях не работает запись буфера, если он не в первых 32 Кб встроенного ОЗУ: расширили устройство перейдя с 2387 на 2388 - по сути добавилось внешнее ОЗУ только, в итоге код работавший на 2387 перестал писать во flash, полдня секса, час интернета - и оказывается у кое-кого проблема уже встречалась
  10. В общем весь глюк действительно был в размере окна... Что в принципе очевидно. Увеличил с 1500 до 3000 - сразу получил выигрыш. В общем теперь стоит 65000 и ничего не тормозит. Но все равно надо бы поизучать вопрос... Эх, плохо я знаю стек TCP/IP. По уменьшению размера окна: алгоритм приема команд допускает прием их пачкой одним пакетом (или притормаживание устройства на такое время, что придет более одной команды сверху). Соответственно из-за некоторой кривости алгоритма приема-сборки-обработки команд (зато очень просто и экономно получилось + ничего копировать не надо) ответ на команду высылается до удаления самой команды из входного буфера.
  11. Памяти мало... Все что можно отдано под буферы результатов измерений, которые гоняю по UDP. TCP - чисто командный интерфейс, особой скорости от него не надо.
  12. В общем по ряду причин с привычного UDP перешли на TCP (надоело изобретать собственный велосипед с контролем целостности передачи). Многоканальное измерительное устройство на LPC2387, FreeRTOS, lwIP 1.3.1. До этого с TCP в общем-то опыта применения не было вообще (самодельный встроенный Web-сервер не считаю). В итоге при инициализации устройства (около десятка команд переменного размера, суммарно в устройство уходит около 5 КБайт данных) после посылки нескольких команд, в зависимости от их размера, перед очередной командой возникает задержка на несколько секунд. Итог - инициализация занимает слишком долгое время, а т.к. для некоторых технологических работ (оценка метрологических характеристик например) запускать ее приходится часто есть желание проблему победить. Сдается мне, что где-то как всегда не учел что-то элементарное. Вот лог обмена снятый Вайршарком. 192.168.0.5 - ПК-клиент, 192.168.0.210 - устройство-сервер. Глюк виден например между строками 12-13, 23-24. No. Time Source Destination Protocol Info 1 0.000000 AsustekC_07:5f:ba Broadcast ARP Who has 192.168.0.210? Tell 192.168.0.5 2 0.000185 HitexHol_00:01:09 AsustekC_07:5f:ba ARP 192.168.0.210 is at 00:30:6c:00:01:09 3 0.000193 192.168.0.5 192.168.0.210 TCP interbase > terabase [SYN] Seq=0 Win=65535 Len=0 MSS=1460 4 0.000516 192.168.0.210 192.168.0.5 TCP terabase > interbase [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1500 5 0.000531 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=1 Ack=1 Win=65535 Len=0 6 0.014791 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=34 7 0.015331 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=1 Ack=35 Win=1466 Len=36 8 0.015780 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=35 Ack=37 Win=65499 Len=36 9 0.025764 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=37 Ack=71 Win=1430 Len=36 10 0.026624 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=71 Ack=73 Win=65463 Len=1062 11 0.027612 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=73 Ack=1133 Win=368 Len=38 12 0.170707 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=1133 Ack=111 Win=65425 Len=0 13 4.999088 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=1133 Ack=111 Win=65425 Len=368 14 4.999604 192.168.0.210 192.168.0.5 TCP terabase > interbase [ACK] Seq=111 Ack=1501 Win=1500 Len=0 15 4.999613 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=1501 Ack=111 Win=65425 Len=694 16 5.000444 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=111 Ack=2195 Win=806 Len=38 17 5.001312 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=2195 Ack=149 Win=65387 Len=806 18 5.001996 192.168.0.210 192.168.0.5 TCP terabase > interbase [ACK] Seq=149 Ack=3001 Win=1500 Len=0 19 5.002007 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=3001 Ack=149 Win=65387 Len=256 20 5.002690 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=149 Ack=3257 Win=1244 Len=38 21 5.003502 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=3257 Ack=187 Win=65349 Len=1062 22 5.004492 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=187 Ack=4319 Win=182 Len=38 23 5.203194 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=4319 Ack=225 Win=65311 Len=0 24 9.934619 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=4319 Ack=225 Win=65311 Len=182 25 9.935082 192.168.0.210 192.168.0.5 TCP terabase > interbase [ACK] Seq=225 Ack=4501 Win=1500 Len=0 26 9.935090 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=4501 Ack=225 Win=65311 Len=508 27 9.935826 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=225 Ack=5009 Win=992 Len=38 28 9.936495 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=5009 Ack=263 Win=65273 Len=36 29 9.983857 192.168.0.210 192.168.0.5 TCP terabase > interbase [ACK] Seq=263 Ack=5045 Win=956 Len=0 30 11.662789 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=263 Ack=5045 Win=956 Len=36 31 11.663321 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=5045 Ack=299 Win=65237 Len=36 32 11.663917 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=299 Ack=5081 Win=920 Len=36 33 11.695274 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 34 11.720256 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 35 11.745261 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 36 11.770172 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 37 11.795267 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 38 11.820253 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 39 11.837932 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=5081 Ack=335 Win=65201 Len=0 40 11.845236 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 41 11.870154 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 42 11.895245 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 43 11.920236 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 44 11.945242 192.168.0.210 192.168.0.5 UDP Source port: pxc-spvr-ft Destination port: pxc-splr-ft 45 11.946038 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=5081 Ack=335 Win=65201 Len=36 46 11.958027 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=335 Ack=5117 Win=884 Len=36 47 11.958545 192.168.0.5 192.168.0.210 TCP interbase > terabase [PSH, ACK] Seq=5117 Ack=371 Win=65165 Len=32 48 11.959111 192.168.0.210 192.168.0.5 TCP terabase > interbase [PSH, ACK] Seq=371 Ack=5149 Win=852 Len=36 49 11.959280 192.168.0.210 192.168.0.5 TCP terabase > interbase [FIN, ACK] Seq=407 Ack=5149 Win=852 Len=0 50 11.959289 192.168.0.5 192.168.0.210 TCP interbase > terabase [ACK] Seq=5149 Ack=408 Win=65129 Len=0 51 14.187546 192.168.0.5 192.168.0.210 TCP interbase > terabase [FIN, ACK] Seq=5149 Ack=408 Win=65129 Len=0 52 14.187838 192.168.0.210 192.168.0.5 TCP terabase > interbase [ACK] Seq=408 Ack=5150 Win=851 Len=0
  13. Кстати и в XP есть такая проблема с портами начиная с COM10... Тоже пришлось переделать прогуна такое наименование, когда стали проверять прогу на машине с тремя мультипортовками. По теме - пока из проблем с 7-кой - 32-битная версия автокада отказалась ставиться под 64-битной семеркой - пришлось искать 64-битную.
  14. Чуть подробнее о проблеме. Люди решили попробовать откорректировать АЧХ ADS1255/6 (пока чисто теоретически). Для определенности - скорее всего ADS1255. Так как в описании формула только на АЧХ (корректирующий фильтр они сами изобрели исходя из этой формулы, чисто теоретически - результат неплохой) мне задали вопрос - "а нельзя ли получить не только АЧХ, но и КЧХ". Я напряг извилины, нашел древние лекции студенческих времен, вспомнил как работает дельтасигма АЦП и нарисовал КЧХ. Дальше людям уже стало интересно и оказалось, что им, помимо прочего еще надо и реакцию на скачок заиметь т.к. "по входу что-то может коммутироваться". Вот тут я и выяснил, что оказывается у меня в знаниях полный провал. А по ряду причин отказать в помощи этим людям очень не хочется... P.S. Я тоже как-то сомневаюсь в осмысленности аналогового фильтра. Но думаю тут мне нетрудно будет проагитировать за цифровой фильтр.
  15. АЦП ADS1256/55. Корректирующий фильтр (фильтр аналоговый, т.е. перед АЦП, по сути его в предусилитель добавили) подбирали с целью откорректировать АЧХ с целью расширения рабочего диапазона частот. Соответственно что происходит в частотной области понятно. Мне же теперь интересно посмотреть, что происходит уже во временной области. И прежде всего реакция на скачок, т.к. возможно использование в случае коммутируемых входных каналов.