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

AlexRayne

Участник
  • Постов

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

  • Посещение

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

    1

AlexRayne стал победителем дня 11 апреля 2023

AlexRayne имел наиболее популярный контент!

Репутация

7 Обычный

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

  • Звание
    Знающий
    Знающий

Старые поля

  • skype
    Array

Информация

  • Город
    Array

Контакты

  • Skype
    Array

Посетители профиля

6 964 просмотра профиля
  1. 1) это читаемо и явно для каждого поля. 2) если у вас поля битовые, или структурка константная, или она в регистрах/волатилях - такое присваивание самое простое. Иначе надо городить временные переменные.
  2. я ж написал - мне нужна отдельная секция. иначе искать инструмент который может переписать символ в эльфе, я такого не ведаю Я вас не про отдельное place-правило спрашивал. А про выделение секции .checksum в блок CHECKSUM. Зачем? если не положить секцию в блок - линкер её кладет в первое подходящее правило, а на втором выдает ошибку множественного подходящего патерна. как исключить секцию из правила не ведаю.
  3. я ж показал листинг "P3": 0x2 CHECKSUM 0x2'e884 0x2 <Block> .checksum zero 0x2'e884 0x2 crc_fw.o [9] - 0x2'e886 0x2 отдельным правилом линкер заводит отдельную секцию P3 для checksum. эту секцию я потом могу менять
  4. это секция объектного файла. А в итоговом elf все секции объектов кидаются в секции elf - для rw - своя, для ro - своя. и вот для cheksum - получается своя. Их именование перпендикулярно тому что мы привыкли видеть в линкере - он както по своему именует: "A0": place at address 0x0 { ro section .intvec }; "A1": place at address 0xc0 { ro section .Reset_Handler_text }; "P1": place in [from 0x0 to 0x7'ffff] { ro }; define block CSTACK with size = 1K, alignment = 8 { }; define block HEAP with size = 1K, alignment = 8 { }; "P2": place in [from 0x2000'0000 to 0x2000'ffff] { rw, block CSTACK, block HEAP }; define block CHECKSUM { ro section .checksum }; "P3": place in [from 0x0 to 0x7'ffff] { last block CHECKSUM }; Вот эти An, Pn - это и есть секции в итоговом elf Классические gnu тулы могут конешн видеть символы, но исходных секций объектов - их просто нет, а есть секции итогового образа. Еслиб тулы позволяли заменять содержимое символов - небыло б проблем. Но objcopy умеет менять только содержимое целой секции, поэтому checksum мне надо отдельно
  5. только оно положило в конец секции c ro, а мне надо отдельной секцией блок CHECKSUM, поэтому я его отдельным правилом и добавлял
  6. вот мой icf ... define block CHECKSUM { ro section .checksum }; initialize by copy { readwrite }; do not initialize { section .noinit }; keep { section .checksum* }; place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; place at address mem:__Reset_Handler_text_start__ { readonly section .Reset_Handler_text }; place in ROM_region { readonly }; place in RAM_region { readwrite, block CSTACK, block HEAP }; place in ROM_region { last block CHECKSUM }; а линкер отчитывается так: ******************************************************************************* *** PLACEMENT SUMMARY *** "A0": place at address 0x0 { ro section .intvec }; "A1": place at address 0xc0 { ro section .Reset_Handler_text }; "P1": place in [from 0x0 to 0x7'ffff] { ro }; define block CSTACK with size = 1K, alignment = 8 { }; define block HEAP with size = 1K, alignment = 8 { }; "P2": place in [from 0x2000'0000 to 0x2000'ffff] { rw, block CSTACK, block HEAP }; define block CHECKSUM { ro section .checksum }; "P3": place in [from 0x0 to 0x7'ffff] { last block CHECKSUM }; initialize by copy { rw }; keep { section .checksum* }; "P1", part 1 of 2: .text ... .rodata ... "P3": 0x2 CHECKSUM 0x2'e884 0x2 <Block> .checksum zero 0x2'e884 0x2 crc_fw.o [9] - 0x2'e886 0x2 "P1", part 2 of 2: 0x1b8 Initializer bytes const 0x2'e886 0x1b8 <for P2-1> - 0x2'ea3e 0x1b8 "P2", part 1 of 3: 0x2c21 P2-1 0x2000'0000 0x2c21 <Init block> .data inited 0x2000'0000 0xc8 cosem_app_calendar.o [11] ... В документации ненашел в какой секции держатся данные инициализации, поэтому и способа их положить явно ненашел
  7. А удавалось ли Вам положить в самый конец прошивы секцию? У меня ИАР после last section еще докладывает секцию с "Initializer bytes const" - она делается после сборки всех секций, и не удается мне положить чтото за ней, чтобы подсчитать реальный размер прошивы
  8. А есть в ИАР способ задания диапазона подсчета КС не по фиксированым адресам а по диапазону прошивки?
  9. А как вы КС считаете в рантайме с этим? в два захода - по таблице векторов + после CRC?
  10. терминологию я не четкую пользую. Поясню: дешевые туристические панельки идут в варианте либо прямого выхода порядка 18/24В с батареи, либо со стабилизатором 5В на УСБ разъем. Я ориентируюсь на 2й вариант - в этом случае имею встроенную в панельку дешевую импульсную понижайку со стабилизацией близко 5В. соответственно если я начну с такого "УСБ" напрямую заряжать суперкондер на слабой панельке - понижайка просто коротнет панель прямо на кондер. Панелька будет долго и мучительно заряжать его не в полную силу. Надо ловить МППТ чтоб забрать на суперкондер побольше
  11. дело не в разряде а в панельке - когда сонца мало надо ловить её МППТ, ограничивать ток заряда, чтоб напруга в 0 не высаживалась. чтоб это ограничение ловить - надо чутко смотреть напругу на выходе понижайки 5В в панели. И не уверен что это нормальный способ - может надо лезть всеж до самой панели. Но вскрывать панельку чето неохота
  12. понижайка должна работать по току - ток заряда надо ограничивать, и подбирать МППТ. может и не нужны, но нужны по питанию УСБ детекторы с чуствительностью в десятоки мВ. В идеале всеж надо мерять потребляемый от панельки ток, чтобы на тот же УСБ выставлять доступный режим. Нет в дешевых кетайских панелях этой функции.
  13. Вы не правы - про цену и качество я не говорил а видимо надо - цена не важна, а качество важно. Искомый девайс из разряда турстического или спорт оборудования. Если Вы смотрели сколько они платят за свои шалабушки, то ожидаемые цены должны быть понятны. (Да блина они строй-утеплитель продщают по цене 700р/кв метр. А в спорт-мастере - за 2.500/м:2. А за приличную пенку, хитрый кусок пластика я отвалил 2тыр, и не жалел ) нечто подобное и мыслится, но лезут нюансы - нужны токовые детекторы, а это злой аналог. Поэтому МК имхо потянет эту задачу с нетривиальным аналоговым обвесом. Скорее всего возьму готовую повышайку батарейного питания, а вот понижайку с програмируемым током видимо на МК придется таки делать.
×
×
  • Создать...