Jump to content

    

Prowler

Свой
  • Content Count

    180
  • Joined

  • Last visited

Everything posted by Prowler


  1. Разобрался, опять невнимательность), в блок ROM_CONTENT обозначенный в icf-файле не входит таблица векторов прерываний, и размер собственно без нее. А я думал что-то с конца прошивки байтов недосчитывается..
  2. И где там про сохранение размера, занятой программой, области флэша по заданному адресу? Вопрос сводится к тому, как с помощью IAR прописать в секцию памяти "ROM_length_used" адрес другой секции "checksum_end_mark"после всех действий линкера на выходным файлом? Вот вырезка из icf файла: define block ROM_CONTENT with fixed order { readonly section ROM_length_used, readonly section checksum_start_mark, readonly, readonly section checksum_end_mark, readonly section checksum, }; keep { section ROM_length_used }; place in ROM_region { block ROM_CONTENT };
  3. Второй день штудирую данную тему в интернете, если не сложно - киньте ссылку на то, как надо делать.
  4. Суть проблемы: рассчитываю контрольную сумму прошивки как написано в http://supp.iar.com/Support/?note=62709 в пункте "Alternative solution using checksum-start and checksum-end markers". Сохраняю размер блока ROM_CONTENT как описано в http://supp.iar.com/Support/?note=52791. Но при этом значение ROM_length_used равна не размеру всей области до "checksum_end_mark", а только до адреса 0x0802bd04 (см. map-файл ниже). Подозреваю, что размер прошивки надо рассчитывать в Post-Build Actions и сохранять в заранее выделенную секцию выходного файла, но как это сделать не нашел. Можно ли это сделать средствами линкера и его утилит? Контрольная сумма считается правильно для всей прошивки. Контроллер STM32. ******************************************************************************* *** PLACEMENT SUMMARY *** "A1": place at 0x08002000 { ro section .intvec }; "P1": place in [from 0x08002000 to 0x080edfff] { block ROM_CONTENT }; "P2": place in [from 0x20000000 to 0x20017fff] { rw, block CSTACK, block HEAP }; Section Kind Address Size Object ------- ---- ------- ---- ------ "A1": 0x130 .intvec ro code 0x08002000 0x130 startup_stm32f10x_xl.o [1] - 0x08002130 0x130 "P1": 0x29d04 ROM_CONTENT 0x08002130 0x29d04 <Block> ROM_length_used const 0x08002130 0x4 Place holder ROM_CONTENT_size checksum_start_mark const 0x08002134 0x1 main.o [1] .rodata const 0x08002138 0x10 arrow_down2.o [1] .rodata const 0x08002148 0x10 arrow_up2.o [1] .rodata const 0x08002158 0x1c calendar.o [1] .text ro code 0x0802b234 0x62 memcmp_unaligned.o [5] .text ro code 0x0802b298 0x10 startup_stm32f10x_xl.o [1] .text ro code 0x0802b2a8 0x10 stm32f10x_adc.o [1] .text ro code 0x0802b2b8 0x894 stm32f10x_it.o [1] .text ro code 0x0802bb4c 0x15c system_stm32f10x.o [1] .text ro code 0x0802bca8 0x1a cmain.o [5] .text ro code 0x0802bcc2 0x4 low_level_init.o [3] .text ro code 0x0802bcc8 0x28 data_init.o [5] .text ro code 0x0802bcf0 0x4 exit.o [3] .text ro code 0x0802bcf4 0xa cexit.o [5] .text ro code 0x0802bd00 0xc XXexit.o [5] Initializer bytes ro data 0x0802bd0c 0x20 <for P2-1> (used: 0x1c) .text ro code 0x0802bd2c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd30 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd34 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd38 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd3c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd40 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd44 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd48 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd4c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd50 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd54 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd58 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd5c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd60 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd64 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd68 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd6c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd70 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd74 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd78 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd7c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd80 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd84 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd88 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd8c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd90 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd94 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd98 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bd9c 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bda0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bda4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bda8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdac 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdb0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdb4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdb8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdbc 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdc0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdc4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdc8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdcc 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdd0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdd4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdd8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bddc 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bde0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bde4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bde8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdec 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdf0 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdf4 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdf8 0x4 startup_stm32f10x_xl.o [1] .text ro code 0x0802bdfc 0xc cstartup_M.o [5] .iar.init_table const 0x0802be08 0x24 - Linker created - .rodata const 0x0802be2c 0x0 zero_init3.o [5] .rodata const 0x0802be2c 0x0 copy_init3.o [5] checksum_end_mark const 0x0802be2c 0x4 main.o [1] checksum const 0x0802be30 0x4 Place holder ielftool_checksum - 0x0802be34 0x29d04
  5. Может кто подскажет, где приобрести монохромный ЖК дисплей Powertip PG320240WRFHE9HP9Q? Разрешение 320*240, контроллер S1D13700, размер видимой области 76.78*57.58мм. Или может есть его аналоги?
  6. Схема примитивна. конденсаторы в затворных цепях, это паразитные емкости затвора, чисто для моделирования. Вместо резистора можно цап подвести для задания тока, схема сама будет поддерживать нужный ток, мосфеты параллелить по необходимости. Моделировал в микрокапе
  7. А необходимо с контроллера менять ток? Если этого не нужно, то схема становиться чрезвычайно простой и собирается на кусочке платы с посадочным под ОУ. Единственно, что лучше промоделировать на предмет возбуждения ОУ, не любят они емкостную нагрузку. На схемке слева переменник для задания тока. Rn - нагрузка, Rs - шунт измерения тока.
  8. Че так сложно? зачем лишние теплоносители? Дарю идею: берем катеттеры, нагреватель, насос и подогреваем сразу кровь!
  9. Выравнивающий заряд? 12В АКБ это уже батарея, а не отдельная ячейка (2В) и разброс в ней уже может быть между секциями. Хотя есть и такие готовые устройства - http://12v.ua/index.html?ID=goods&goodid=108
  10. Полагаю графиком, которые вы почему-то не видите. Конечно ток уменьшается, напряжение же постоянное и не превышает 4,2В. Что вы понять то не можете?!? Все серьезно, но это уже из испытаний на стойкость, типа nail penetration, после которого ничего не должно взорваться)
  11. Из вашей же ссылки заряд ведется методом CC-CV (постоянный ток - постоянное напряжение). Напряжение действительно не должно превышать 4,2В (хотя большинство производителей гарантируют отсутствие повреждений до 4,5В, со снижением ресурса естественно), но пока ток спадает (при постоянных 4,2В) может набраться еще процентов 10 заряда, а если первичный ток заряда превышает 1С или 2С, то и все 30%, так как внутреннее сопротивление аккумулятора еще никто не отменял.
  12. Не вижу смысла дальнейшей дискуссии. Я хотел лишь обратить внимание топикстартера, что по данному чертежу невозможно организовать производство данной ПП, тем более с военной приемкой.
  13. Да если даже открыть ГОСТ 2.001-93 Общие положения, который является своего рода конституцией ЕСКД :) то ваш подход уже противоречит ему, а не только смыслу проделанной вами работы в принципе. Вы видно с производством по вашим чертежам никогда не сталкивались, или производству просто по барабану ваши рисунки. Как руководитель КБ в прошлом, много нервов потратил на борьбу со подобным мракобесием. :01: P.S. И вообще действительно зачем девушке печатные платы? Умеете рисовать в кадах идите в дизайн и т.п. ;)
  14. Че-то вспомнился рассказ Альтова про муху) Чертеж это руководство к действию для технолога, ОТК, экономистов, рабочих и др. сотрудников в цепочке производства изделия и чем грамотнее он разработан (а не просто оформлен), тем рациональнее идет вся работа.. это надо в первую очередь понимать и ЕСКД нацелена как раз на это.
  15. Зачем вносить заведомо бредовые требования в чертеж? это о выдерживании конфигурации проводников по чертежу.. (при этом проводники обозначены просто линиями!) в чертеже должна быть ссылка на файл на носитель данных, которому также присвоен децимальный номер и он также сдается в архив... Собственно как уже тут сказали. Тоже работал во фгупе, но с учетом соответствия ЕСКД, оформляли документацию гораздо более осмысленно.. По большей части чертеж ПП нужен для экономистов, для обсчета стоимости и как пояснительная записка с требованиями для производства.. И еще вдогонку: все размеры на чертеже, которые не для справок, подлежат проверке, по вашему чертежу все контактные площадки специально образмеренные вами будут проверять на соответствие указанным вами допускам в каждом экземпляре платы.. Вы представляете трудоемкость?
  16. Т.е. они у вас работают в постоянном подзаряде? при постоянном внешнем напряжении? Бытует мнение что литий нельзя держать в подзаряде. Но каких-то аргументированных доводов этому я не встречал. Интересно было бы услышать что-то по этому поводу.
  17. габарит микросхемы зарядки это соик8 (а есть и того меньше), а для организации зарядки на контроллере все равно минимум требуется внешний транзистор, так что выигрыша по площади большого не будет, схему из первого поста заменяет сдвоенный диод типа BAT54. Для сохранения аккумулятора надо предусмотреть микропотребляющий режим устройства в случае разряда аккумулятора ниже 2,8В (для Lion, Lipol). Ну и желательно конечно чтобы аккумулятор шел с платой защиты.
  18. Есть открытая спецификация на интерфейс умных батарей http://sbs-forum.org/specs/
  19. Батарея в любом случае будет высосана, т.к. имеет собственные токи саморазряда. BQ78PL116 имеет режим транспортировки при котором потребление менее 85мкА, а при падении напряжения на какой-либо ячейке ниже 2,5-2,7В переходит в UnderVoltage Shutdown с током потребления менее 1мкА. Еще раз повторю, что применение этой микросхемы с внутренними платами защиты ячеек - некорректно! (хотя все зависит от того в каком объеме вы используете ее функции).
  20. В схеме с контроллером bq78pl116 внутренние платы защиты не нужны, контроллер сам обеспечивает отключение при разряде ниже заданного уровня, также им предусмотрена возможность восстановительного заряда малым током при глубоком разряде. Так что платы защиты лучше просто отпаять, и присоединить к контроллеру непосредственно аккумуляторные ячейки. В даташите описана правильная последовательность присоединения ячеек при сборке батареи, при неправильном порядке соединения, а также при срабатывании собственных плат защит ячеек возможна некорректная работа контроллера.
  21. Разрабатывал двухслойную плату для 4 ячеек на данной микросхеме с токами заряда до 4А. Необходимости в 4-х слоях нет.
  22. Есть готовые микросхемы с активной балансировкой, типа bq78pl116, также все необходимые защиты и алгоритмы уже имеются внутри.
  23. Основной плюс многоканальности, это копирование расположения компонентов и трассировки с одного канала в остальные. А нумерацию можно задать глобальную для всех каналов, тогда в перечне и на плате номера не будут повторяться. Но по ЕСКД вроде можно нумеровать и с префиксами-суффиксами, как функциональные группы.
  24. если ток заряда не будет превышать тока срабатывания защиты, то все должно быть в норме. Как себя поведет зарядка при срабатывании защиты сказать сложно, по идее должна отключиться.