Jump to content
    

danusha

Участник
  • Posts

    22
  • Joined

  • Last visited

Reputation

1 Обычный

About danusha

  • Rank
    Участник
    Участник

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. То есть “настоящая” первая инструкция для ARM64 U-Boot: _start в arch/arm/cpu/armv8/start.S. А ELF entry задается в arch/arm/cpu/armv8/u-boot.lds через ENTRY(_start). Для 32-битного Zynq-7000 похоже, но _start лежит в таблице векторов: arch/arm/lib/vectors.S, оттуда переход в reset из arch/arm/cpu/armv7/start.S.
  2. Клод код opus . дизасемблер гидра
  3. напряг ИИ. вот что выдал f2mc16lx_disasm.py MB90F395HA_patched.bin patch_diff.txt и ещё ANALYSIS.txt
  4. А сколько нынче за это платят?
  5. ии: Добрый день! Ошибка не в Keil и не в настройках памяти — у вас опечатка в поле Start Address в Gowin Programmer. Посмотрите внимательно на свой скриншот: Start Address: 0x4000000 ← 7 нулей = 64 МБ (0x04000000) А загрузчик у вас SA_0x400000, то есть стартовый адрес должен быть: Start Address: 0x400000 ← 6 нулей = 4 МБ Отсюда и сообщение: программатор пытается записать данные, начиная со смещения 64 МБ (67108864 = 0x4000000), плюс ~3 КБ полезной нагрузки — итого 67111168 байт. А флэшка W25Q64 — это 8 МБ (8388608 байт), вот он и ругается «exceeding the limit». Исправьте на 0x400000 — и всё запишется. Заодно проверьте, что в Keil в настройках Target стоит именно IROM1: Start = 0x400, Size = 0x7C00 (как у вас на втором скриншоте — это правильно для ITCM_Size_32KB, потому что первые 0x400 байт ITCM зарезервированы под векторы/служебную область бутлоадера), и что в опциях линкера .bin генерируется без смещения (то есть начинается с адреса 0x400, а не с 0x0 — иначе бутлоадер скопирует мусор). Если после исправления адреса бутлоадер всё равно не подхватит прошивку — проверьте в bin-файле первые байты: там должны быть стек и Reset_Handler, а не нули.
  6. мой ии : Главная причина — ты не сбрасываешь флаги DMA перед повторным запуском потока. У STM32 DMA есть особенность: пока в регистре LISR/HISR висит флаг TCIF (Transfer Complete) от предыдущей передачи, новый запуск DMA_Cmd(..., ENABLE) фактически не стартует — поток сразу «считает» себя завершённым или просто игнорирует включение. Первый раз после ресета флагов нет, поэтому одна передача ещё могла бы пройти, но у тебя и она не идёт, потому что в Init_DMA_USART1 поток TX вообще ни разу не включается — там только USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE), а сам DMA2_Stream7 остаётся выключенным до первого вызова USART1_Send_DMA. Исправь функцию отправки так: void USART1_Send_DMA(void) { DMA_Cmd(DMA2_Stream7, DISABLE); while (DMA_GetCmdStatus(DMA2_Stream7) != DISABLE); /* ОБЯЗАТЕЛЬНО: чистим все флаги Stream7 в HISR */ DMA_ClearFlag(DMA2_Stream7, DMA_FLAG_TCIF7 | DMA_FLAG_HTIF7 | DMA_FLAG_TEIF7 | DMA_FLAG_DMEIF7 | DMA_FLAG_FEIF7); /* На всякий случай чистим TC у USART (он взводится после прошлой передачи) */ USART_ClearFlag(USART1, USART_FLAG_TC); DMA_SetCurrDataCounter(DMA2_Stream7, 1000); DMA_Cmd(DMA2_Stream7, ENABLE); } И ещё несколько моментов, которые тебя укусят следом: Обработчик DMA2_Stream7_IRQHandler. Ты включил DMA_IT_TC и NVIC_EnableIRQ для Stream7/Stream5, но если в проекте нет соответствующих void DMA2_Stream7_IRQHandler(void) и void DMA2_Stream5_IRQHandler(void), при первом же прерывании улетишь в HardFault (точнее в дефолтный обработчик-ловушку). Внутри обработчика обязательно сбрасывай флаг: DMA_ClearITPendingBit(DMA2_Stream7, DMA_IT_TCIF7); иначе зациклишься. GPIO PB6/PB7 для USART1 на F4 — это валидный альтернативный маппинг (есть ещё PA9/PA10), так что тут ок, но проверь, что у тебя именно F4 и что ноги физически разведены туда, куда смотришь осциллографом. На частой ошибке люди тыкают в PA9. tx_cnt = 1 — судя по имени, у тебя где-то логика по этому счётчику. С DMA она роли не играет, но убедись, что ничего параллельно не лезет в USART1->DR напрямую — это сломает поток DMA. DMA_Mode_Normal для TX + размер 1000 каждые 20 мс. На 832000 бод 1000 байт уходят примерно за 12 мс — впритык, но влезает. Если когда-нибудь захочешь чаще — получишь наложение, и без проверки DMA_GetCmdStatus/TC до старта новой передачи будет каша. Мелочь: на TX-ноге GPIO_PuPd_UP не нужен (линия и так в idle = 1 за счёт самого USART), на RX подтяжка вверх как раз полезна — у тебя обе одинаковые, это не ошибка, просто к сведению. Сначала добавь сброс флагов в USART1_Send_DMA — с вероятностью 95% TX оживёт сразу.
  7. https://aliexpress.ru/item/1005011795537569.html?spm=a2g2w.detail.rcmdprod.18.76073737BeWCip&mixer_rcmd_bucket_id=controlRu3&pdp_trigger_item_id=0_1005011808418352&ru_algo_pv_id=dbf3c2-476f2e-05a938-340d49-1774947600&scenario=pcDetailBottomMoreOtherSeller&shpMethod=CAINIAO_STANDARD&sku_id=12000056583171788&traffic_source=recommendation&type_rcmd=core продавец вроде как кучу документаци прилагает к своей плате. просто спроси
  8. Вот кстати сделал ради интереса программатор emmc на танг нано 9. Вещь походу бесполезная. Можно же купить какой нибудь ридер на реалтеке и он тоже самое умеет делать 😁.
  9. Уже. Но это не очень. Во первых нет usb3 быстрого интерфейса. Во вторых нельзя удобно выбирать напряжение на банках. У них у всех дефолтно ставят везде 3.3 на все банки кроме танг нано 9к там есть один банк 1.8в. Ну и я с рассчетом что это будет аврора 5 самый мощный плис у них. Ну и ненужная лабуда которая там уже натыкана и занимает место и пины
  10. Сипид не делает такой голой платы, я, пример привёл в том посте.
  11. посоны,есть ли смысл сделать плату разработки на говине типо таких которые делают китайцы: ? я к тому есть ли потребность у разработчиков в таком ?
  12. Готов взяться за ваши заказы не супер большой сложности. Работаю в основном с клод кодом. Есть успешные проекты вайбкодинга на esp32, rp2350. На esp32 собран контроллер в геодезическом приёмнике, блютус вайфай работают для связи с телефоном и геодезическим ПО и вывод на экран. Язык си. На rp2350 собрана плата эмуляции ublox протоколоа для встраивания в дроны dji , защита от спуфинга. Язык раст. Так же делал разводку плат в альтиуме и заказывал в Китае со сборкой целиком. Связь в телеге @danusha , почта i@danusha.ru
  13. были микрушки которые адреса меняют. с помощью перемычек на плате)
×
×
  • Create New...