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

esaulenka

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    2

Весь контент esaulenka


  1. Штука вся в том, что адрес в регистре подменяется самостоятельно. Копирование идёт не по какому-то хитрому указателю, а в локальный буфер, который компилятор в стек кладет (я и строку вызова этой функции привёл). Более того, копирование с адресов, отличающегося от "глючного" замечательно проходит. Вот MAM я в том случае отключить не догадался...
  2. проблема проявлялась, если код обращался к данным вблизи того места, где этот код лежит. вот, у меня даже записано 0x000388F8 E12FFF1C BX R12 0x000388FC 00038901 DD 0x00038901 strlen: 0x00038900 2100 MOV R1,#0x00 0x00038902 E000 B 0x00038906 0x00038904 3101 ADD R1,#0x01 0x00038906 1C02 ADD R2,R0,#0 0x00038908 3001 ADD R0,#0x01 0x0003890A 7812 LDRB R2,[R2,#0x00] 0x0003890C 2A00 CMP R2,#0x00 0x0003890E D1F9 BNE 0x00038904 0x00038910 1C08 ADD R0,R1,#0 0x00038912 4770 BX LR 0x00038914 E59FC000 LDR R12,[PC] 0x00038918 E12FFF1C BX R12 0x0003891C 00038921 DD 0x00038921 memcpy: 0x00038920 B430 PUSH {R4-R5} 0x00038922 1C03 ADD R3,R0,#0 0x00038924 1C18 ADD R0,R3,#0 0x00038926 E005 B 0x00038934 0x00038928 1C0C ADD R4,R1,#0 0x0003892A 7825 LDRB R5,[R4,#0x00] 0x0003892C 1C04 ADD R4,R0,#0 0x0003892E 7025 STRB R5,[R4,#0x00] 0x00038930 3101 ADD R1,#0x01 0x00038932 3001 ADD R0,#0x01 0x00038934 1C14 ADD R4,R2,#0 0x00038936 3A01 SUB R2,#0x01 0x00038938 2C00 CMP R4,#0x00 0x0003893A D1F5 BNE 0x00038928 0x0003893C 1C18 ADD R0,R3,#0 0x0003893E BC30 POP {R4-R5} 0x00038940 4770 BX LR вызов memcpy (0x40002390, 0x00038910, 0x10) ; data abort: R0 = 0x0000008A R1 = 0x00038911 R2 = 0x0000000D R3 = 0x40002390 R4 = 0x0000008A R5 = 0x0000001C R13 (SP) = 0x40002524 R14 (LR) = 0x00038936 SPSR = 0x00000030 С разнообразными const char array[] = {}, константными строками и т.д. проблем и у меня не возникало. 2138 всех ревизий, 2138/01 одной (из двух) ревизий Потому что наизусть не помню, а привычки "что-то работает не так? иди читай errata" до сих пор не завёл...
  3. с проблемой сталкивался два раза. Первый раз, на 2134, кусочек кода, который считал контрольную сумму прошивки побайтным сложением, при определённом расположении в памяти выдавал дата аборт. Лечилось "методом научного тыка", изменением уровня оптимизации - код "уходил" из проблемного места. Второй раз, на 2138, memcpy (buff, адрес вблизи memcpy, N) стабильно вылетала в аборт. Реализация memcpy тупая, просто побайтное копирование. Вылечил изменением memcpy. Я даже писал об этом с год назад, но понял, в чём проблема, сильно позже. Мнение NXP на этот счёт: Under certain conditions when the MAM is fully enabled (Mode 2) code execution from internal Flash can fail. The conditions under which the problem can occur is dependent on the code itself along with its positioning within the Flash memory. If the above problem is encountered then Mode 2 should not be used.
  4. Описание проблемы не понял, но... Попробуйте MAM отключить. На вопрос "зачем" читайте errata. На 2138 (ревизию не помню) была проблема с побайтным чтением, процессор попадал в data abort. Чтение dword'ами ситуацию исправило.
  5. Граблей с наличием двух каталогов - C:\Keil и C:\Keil.old не обнаружено. Но неудобно, блин...
  6. И у меня грабли. The connected J-Link has been designed for IAR embedded workbench. It may not be used with KEIL uVision / MDK. uVision 4.03 MT-Link v5.0 (serial 11111117, как у всех ;) )
  7. новый Keil 4 & старый CARM

    Есть у нас старые проекты, разработанные N лет назад под старый компилятор CARM. А у меня есть неуёмное стремление обновиться... :) Итого, имеем. Keil 4.10 с местного ФТП. аддон - компилятор CARM с keil.com Запускаем первый раз - компилируется, запускается, всё хорошо. Сохраняем проект, получаем окошко "мы придумали новый формат хранения проектов, сейчас всё сконвертируем". OK. Запускаем второй раз - неправильные параметры вызова компилятора; при попытке поменять настройки проекта IDE помирает. Что б такое сделать? Не трогать, раз работает, и вернуть старую версию? (тем более к новым вкладкам я не привык :) )
  8. LPC2478 умеет всё

    А куда деваться-то? Вот у нас маленький мезонин 6 слоёв (память, процессор, флеш) и здоровая плата (почти с лист А4) с кучей разъёмов и всевозможной рассыпухой - 2 слоя. Делать 6 слоёв на всю плату дорого... Да и переделывать нижнюю плату приходится раз в полгода (изменения периферии, всевозможные проблемы...). А это выльется в заказ опытной партии многослойки (долго, не дёшево), монтаж BGA... Хотя, конечно, разъём (SODIMM) нашу техподдержку уже достал, периодически смещается при транспортировке...
  9. Процессоров этих не видел, но проверьте настройки Project - Options - Target и Linker. Там указываются адреса флеша и ОЗУ. Во вкладке линкера также стоит проверить файл scatter, если он используется (подробное описание - в хелпе). Для простых случаев все адреса указываются только во вкладке target. Для выяснения, куда деваются 0x04B8 байт, стоит посмотреть файл map (Options - Listing - Linker listing).
  10. Господа, где б почитать - про подбор жидкости - про подбор мощности Собственно, проблема: плохо отмыты платы. Производство (китайцы) утверждает, что они не могут их мыть в ультразвуке ввиду наличия "big capacitors on the power circuit" (самый габаритный - 4700 мкФ * 6.3 В). При этом на наличие на той же плате пары дросселей, десятка микросхем, пьезо-пищалки и проч. они не жалуются.
  11. ISA это хорошо, да. Небыстро, драйвера разобраны в мильёне источников. Одна проблема - в недорогих мат.платах её уже несколько лет как нельзя найти, и в дальнейшем ситуация уж точно не улучшится. Лучше по PCI что-нибудь насоветуйте :)
  12. Рассматриваем идею устройства на плате mini/micro ITX и нашей плате расширения. На нашей плате будет 2-3 уарта и 20-25 ног для "дрыганья", требования по скорости обмена - небольшие (уарты на 115200 не будут упираться в межплатный интерфейс - и хорошо). Всё это будет упаковано в один корпус. Собственно, требуются идеи, как это дело соединить в единое целое: - USB. Самый правильный, пожалуй, вариант: скорости достаточно, широкий выбор компонентов с обеих сторон (на мат.платах выведен всегда, выбор процессора для нашей платы тоже большой). Минус - если одной из операционок будет ДОС (вопрос прорабатывается, но наличие ДОСа со всеми драйверами является плюсом), получаем проблему с написанием стека драйверов. - UART. Плюсы - стандартно и просто. Минусы - скорость небольшая, да и уартов нам надо много (занимать один жалко). - софт-SPI. На большинстве плат есть несколько GPIO, на которых можно реализовать SPI. Минусы - решение кривовато, GPIO есть не везде, возможны проблемы со скоростью. - PCI / PCI-Express. Плюсы - скорость обмена, не очень сложные драйверы. Минусы - я слабо себе представляю аппаратную часть. Какую минимальную ПЛИС нужно использовать? Итак, расскажите, какие грабли меня ждут? ;)
  13. макет LPC2368

    Не работает. АЦП умеет мерять только относительно входа VREF. Следовательно, раз напряжение питания плавает, туда нужен источник опорного напряжения. Цепь стабилитрон/резистор я не понял. Чаще используется обычный делитель из двух резисторов. Кто и что тут отключает, также непонятно.
  14. макет LPC2368

    Ага, не очень. Чуть-чуть лучше - завести напряжение на аккумуляторе на АЦП и сигнализировать о конце зарядки. Ещё чуть-чуть лучше - самостоятельно её прекращать. Ещё лучше - соорудить хитрый ограничитель тока и напряжения на регулируемом LDO. Самый правильный вариант (он же - самый дорогой) поискать спец. микросхемы у Maxim и Texas. Точно, выключить устройство, если один транзистор выкинуть, не получится. Хотя... Надо б подумать. Какое питание? Внешнее? Ну так на внешнее и надо сажать :) Но, так ведь устройство всегда включено, если есть внешнее питание... Вы в итоге-то что хотите, не понимаю... Да, для этого гораздо лучше использовать светодиоды с тремя выводами (с общим коллектором или эмиттером), чем двухвыводные (два противовключенных диода). VBUS - это ВХОД. Сообщает контроллеру, что на шине возможна некоторая активность. Типовая схема включения, если не ошибаюсь, есть в electric manual. Честно говоря, с MicroSD не возился, а в обычных - один контакт наличия карточки, другой - защита от записи. Но на micro рычажка защиты нету...
  15. макет LPC2368

    Поворчать всегда готов ;) Как-то неочевидно сделано питание от USB (где стабилизатор?) Какая-то непонятная схема зарядки батарейки (D5 R7 - это ведь оно?) D7 светится всегда. Так задумано? Наличие Q2 и Q3 неочевидно. Или я не понимаю идеи, или нужен только один транзистор. Схема вокруг JP3 странная. R17 и R29 образуют делитель. Вообще, подумайте, может и не нужна эта "автоматическая" перепрошивка? На наших изделиях пользователь ручками переставляет джампер, включает питание и только потом перешивает... Питание VBAT в даташите требуют заводить на кристалл всегда. 2366 при попытке чтения RTC без питания падал в аборт. USB. Заведите VBUS, не помешает смотреть, когда к хосту подключились. А вот мегаомные резисторы я не понял. Зачем? Джитаг отличается от стандартного. Место критично, что-ли? И ещё. Не надо так экономить место на схеме. Когда питание сверху, земля снизу, а блоки разделяет хоть какое-то свободное пространство, ориентироваться (мне, во всяком случае) проще. PS демоплаты делают куча производителей. Может, будет проще воспользоваться их услугами? :)
  16. ключик -debug с цифрой побольше выдаёт кучу информации, возможно, по ней получится что-то разобрать. а вообще, кажется мне, тут возможны три причины: неправильное питание неправильный преобразователь rs232 неправильный процессор осциллографа, как я понимаю, нету?
  17. Как это - управление потоком не нужно? А как модем будет сообщать "у нас тут на линии помехи, подождите секунд n-цать" ? Буфер у "самого обычного модема" небольшой, его переполнить несложно... А xon/xoff, если я правильно помню - решение "бесплатное": полосу пропускания модема не ест (скорость порта, как правило, много выше), линий лишних не требует...
  18. Да, слона в условиях задачи я не заметил :) Работает вся схема от 6В свинцового аккумулятора, специальной батарейки для часов нет. RTC встроены в контроллер LPC, требований к какой-либо стабильности нет, лишь бы меньше 6В :)
  19. Не знаю, что там внутри, но, тем не менее, в документации приведены именно такие цифры - входное напряжение ограничено напряжением на ядре. Вам интересно, будет ли оно работать в принципе, или работать согласно документации? Я пообещать могу, а вот Атмел - нет... Претензии прошу предъявлять Атмелу :)
  20. OnSemiconductors посмотрите, они заметно дешевле конкурентов - у них оно называется NCP1117. Кстати, раз уж подняли тему. Дешёвый микропотребяющий стабилизатор как сделать? RTC запитывать надо. Сделал на резисторе и стабилитроне - потребляет в несколько раз больше самих часов, некрасиво.
  21. V_G! Ведь только вчера rezident посчитал, что Ваш совет - радиолюбительский, и мега с питанием 5 В как лог. единицу сигнал в 3 вольта принимать не обязана. Хотя работает, да... Кажется мне, и тут ошибка. ни разу не работал с ПЛИС, краем глаза посмотрел даташит на EPM7xxx питание ядра Vccint - 4.75..5.25 питание IO Vccio - 4.75..5.25 или 3.0..3.6 напряжение на входах Vi -0.5 .. (Vccint+0.5) напряжение на выходах Vo 0..Vccio Т.е. там эти резисторы и не нужны, Vccio - это питание ВЫХОДОВ, по входу можно и 5 В.
  22. Нет. Ни теоретически (в даташите про питание 3.3 не сказано), ни практически (запаивали по ошибке ADM202, в 50% передача идёт с ошибками).
  23. В протеусе программа ложится, начиная с адреса 0 ? Тогда всё должно быть нормально. Не сильно в это верю, но если напрячься, можно заставить линкер собрать программу для работы в ОЗУ (т.е. адреса там будут начинаться с 0x40000000), а hex сформировать с адреса 0. Работать такое не будет :) Сигнатуру (кстати, в число не верю. как считали?) флешмэджик считает (и перезаписывает) самостоятельно. Может, допустим, что программа всё-таки стартует? ;)
  24. на правду похоже. дизассемблировать не обучен, :) но начало на вектора прерываний похожи... После резета стартует загрузчик, проверяет необходимость обновления прошивки (нога boot в нуле или отсутствие контрольной суммы векторов) и передаёт управление по адресу 0 (это начало флеша). Если программа собрана правильно (т.е. для работы из флеш), всё должно быть хорошо.
  25. На самом деле, надо просто уметь готовить :) Вот, например, здесь умеют: http://www.zebra.com/id/zebra/na/en/index/...ers/mobile.html Несерьезно - это пятивольтовый, а не 3.3 В, контроллер ;)
×
×
  • Создать...