Jump to content
    

All Activity

This stream auto-updates     

  1. Past hour
  2. День добрый. У меня вопрос, а кто ни будь знает где можно почитать какой алгоритм работы встроенного загрузчика для F1C100s? У меня плата Lichee nano и если в нее вставлена SD карта, то не происходит загрузка с SPI Flash.
  3. Скачал mkdist.py, заменил, все на том же месте. Ниже листинг сборки.
  4. Я вот начинающий и M7+M4 не испугался. Прекрасно всё работает (что нужно). И главное MIPI выводит, и M7 делом занят, и для М4 не стоит. Так что, волков бояться ...
  5. ИМХО, bank machines != ram bank, это фича что бы реализовать SDRAM command out-of-ordrer execution. А именно запараллеить работу команд открытия и закрытия банка. Больше 4-х не имеет смысла. 3 оптимально, 2 гораздо лучше чем один) А памяти у вас как было, так и останется, потому что отображение BA[] на биты адреса не меняется)
  6. В своем коде не более одного уровня подкаталогов. Компилятору передаю "-I." чтобы отмерял все пути от корня проекта, и не нужно было по разному подключать один и тот же заголовок из разных мест. Бывают исключения когда встроен какой-то сторонний код, путь получается длиннее, но за счет include path не сокращаю. Могу исправить этот сторонний код если совсем плохо вписывается. Например freertos у меня это одна плоская директория с файлами, оригинальную структуру я не сохранял, и еще поправил заголовки, так, чтобы подключать в своем коде только один а в нем уже включены все queue.h и остальное.
  7. Во-первых,разумный человек только предполагает,а ни как 20 летний мальчик пишет лозунги и пытается утверждать. Во-вторых,результат процедуры на лицо,там никого не обманешь. На 1000000 раз мощность не падает ни на Дж,она снимается прибором. Пишите по делу или идите лесом.
  8. Today
  9. И в результате, разводка — ничего общего, 77 отличий, которые даже искать не надо. Силовые цепи должны быть разведены в первую очередь, чтобы соблюсти главное правило, цитата из соответствующей главы паспорта NCP1034: А именно, сперва на ПП ставятся входной и выходной керамические конденсаторы, транзисторы и дроссель. И всё, больше ничего. Далее решается игра в пятнашки, чтобы все расстояния между этими пятью компонентами были практический ноль. Выводные транзисторы для 240 кГц — хуже не придумаешь. Поскольку входной конденсатор подключён к разнесённым друг от друга стоку и истоку, транзисторы требуется поменять местами — соответственно, он ставится нуле миллиметров от данных их выводов. Далее, в нуле миллиметров от него, ставится выходной конденсатор. Наконец, горячий вывод дросселя ставится в нуле миллиметров от выхода полумоста, чтобы медь этих трёх выводов была минимальной площади. Затем на ПП ставится ИС контроллера и разводятся его силовые цепи, т.е. три его силовых конденсатора, общий провод и цепи затворов и истоков — все эти соединения должны быть так же практическим нулём. После этого разводится силовая подводка, и в конце — слаботочные цепи, их разводка должна быть в верхнем слое над сплошным нижним слоем общего провода, без его повреждений, и с отдалением от силовых импульсных цепей, т.е. выхода полумоста и затворов.
  10. А, Вы про это: ? Мне кажется, это нереалистичная ситуация, не представляю, как такое возможно и не рассматривал всерьёз. При обрыве ОС в ПХ конвертере разве что, но там максимум в 2 раза. В ОХ скорость нарастания невелика - реле успевает отработать. Для таких гипотетических случаев - можно добавить стабилитрон с тиристором. Сваривается при польшом токе при срабатывании, а при отключении - либо ничего не будет, либо, если на входе больше 40В - то дуга и выгорание контактов.
  11. Как то не верится... Дайте листинг сборки. Я скачал этот файл, вставил в проект. Ошибок связанных с этим файлом нет. Есть ошибки в файле mkdist.py - но там они все связаны с print - скобки надо расставить, Вы это уже делали. Пристегиваю правленый mkdist.py, скачайте его и замените в своем проекте. Оба файла должны находиться в директории tools. В результате компиляции должна остаться одна ошибка, чисто си-шная (libc_errno.h:32:31: fatal error: asm-generic/errno.h: No such file or directory), разберетесь. scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... scons: building associated VariantDir targets: build CC build/applications/Apps/UartCursor.o In file included from /home/rain/workspace/BoloRTT/include/rtlibc.h:30:0, from /home/rain/workspace/BoloRTT/include/rtdef.h:1077, from /home/rain/workspace/BoloRTT/include/rtthread.h:37, from applications/Apps/UartCursor.c:2: /home/rain/workspace/BoloRTT/include/libc/libc_errno.h:32:31: fatal error: asm-generic/errno.h: No such file or directory compilation terminated. scons: building terminated because of errors. scons: *** [build/applications/Apps/UartCursor.o] Error 1 "scons" terminated with exit code 2. Build might be incomplete. И да, building.py нужно скачивать из второго сообщения с вложением .. mkdist.py
  12. Коллеги с бывшей работы подсказали, что можно попробовать самим написать, уложившись в примерно 200 строк кода.
  13. Собрал в Линуксе тулчейн для Винды под ABI-call0. Так называемая "канадская" кросс-компиляция 🙂 Теперь можно забыть о головной боли, связанной с регистровыми окнами, контроле/подмене стека, исключениях. В ABI=call0 эти исключения не нужны: Window owerflow/underflow, Alloca, Syscall. Вся работа с регистрами процессора прозрачна и в стиле "обычных" архитектур. А также доступны манипуляции с указателем стека для резервирования временных данных(стековые фреймы). Простейший рабочий стартап выглядит так: .section .entry.text,"x" .align 4 .global Start Start: j BypassLiteral .section .literal,"a" .global Literal Literal: //Literals located here .text .align 4 .global BypassLiteral BypassLiteral: movi a0,0 //disable all interrupts wsr.intenable a0 movi a0,VECTORS //vector table base address wsr.vecbase a0 movi a0,0 //PS.WOE = 0, PS.UM = 0, PS.EXCM = 0, PS.INTLEVEL = 0 wsr.ps a0 rsync /* Xtensa® Instruction Set Architecture (ISA) Reference Manual 8.1.9 Stack Initialization. p. 618 */ movi a0,0 movi sp,__stack-16 addi a4,sp,32 //point 16 past extra save area s32e a4,sp,-12 //access to extra save area call0 libc_init call0 board_init call0 main Пример как выглядит обработчик прерывания: //... .org 0x1FC //Kernel (IntLevel1) Vector j Kernel //... .align 4 Kernel: addi sp,sp,-64 s32i a0,sp,0 s32i a2,sp,4 s32i a3,sp,8 s32i a4,sp,12 s32i a5,sp,16 s32i a6,sp,20 s32i a7,sp,24 s32i a8,sp,28 s32i a9,sp,32 s32i a10,sp,36 s32i a11,sp,40 s32i a12,sp,44 s32i a13,sp,48 s32i a14,sp,52 s32i a15,sp,56 movi a2,PS_INTLEVEL(1) //mask interrupts to prevent stack corrupt in C/C++ calls wsr.ps a2 rsync call0 INTC_Handler l32i a15,sp,56 l32i a14,sp,52 l32i a13,sp,48 l32i a12,sp,44 l32i a11,sp,40 l32i a10,sp,36 l32i a9,sp,32 l32i a8,sp,28 l32i a7,sp,24 l32i a6,sp,20 l32i a5,sp,16 l32i a4,sp,12 l32i a3,sp,8 l32i a2,sp,4 l32i a0,sp,0 addi sp,sp,64 rfi 1 Дополнительно собрал libhal(включение кеширования для DSP) под ABI-call0 из исходников. Скачать GCC-тулчейн и исходники либы libhal (вместе с готовой либой) под ABI=call0 для T113-s3 HiFi4 DSP.
  14. Yesterday
  15. да, но экселевском файле есть полевики с соразмерными емкостями... таких под рукой нет, но... скоро будут ))) После долгих мучительных раздумий появилась зацепка. При плавном увеличении нагрузки на выходе при окрытии верхнего транзистора появляется "звон" 50MHz на фронте, который удалось поймать в макс амплитуде прямо перед срабатыванием защиты. Вот осциллограмма в точке VS в данный момент: Как видно, амплитуда превышает 20V входного напряжения. Думаю, срабатывает защита от pozitive current нижнего ключа. Зная частоту звона и предположив, что в данной колебательной системе емкость - это вых емкость транзистора, можно рассчитать RC снаббер для подавления звона. Но меня смущает, что с ростом нагрузки этот звон увеличивается не плавно, а очень резко перед самым отключением. Не могу понять, почему...
  16. ... Да и ассемблер лучше на простом изучать. Сравните объем набора команд для M3 и M7... Да-да, (((-8Ж сравните: Чё за фигня: с включённым JS поле ввода - узкая полоска; отсутствуют инструменты и картиночку не вставить )-8Ж
  17. И того и другого. Очевидные вещи говорите. Факт есть факт. И он установлен. Причина: процессор при включенном кеше кода бежит быстрее, и выход из прерывания происходит раньше, чем регистр успевает обновиться. Известная проблема. Я лишь акцентировал внимание на то, как это можно избежать. Три варианта: 1. отключить кеш (самый плохой вариант) 2. прочитать регистр после его записи (кросс-портабельный вариант) 3. вставить инструкцию memw (самый лучший вариант для DSP, но платформенно-зависимый) Линукс, RTOS и другие ОС, не покажут вам спорадические прерывания. Слишком многое остаётся скрыто "за капотом" ))) Вот за это мне и нравится BareMetal: особенности архитектуры чувствуешь на себе ))
  18. https://www.meanwell.com/webapp/product/search.aspx?prod=RSD-300 https://www.chipdip.ru/product/ddr-240b-24-mean-well
  19. А с заглушкой на входе устройство будет принимать помехи? Ещё наводка с корпуса может идти на другие дорожки большой площади или высокоомные (высокоиндуктивные) цепи. Можно попробовать замедлить транзистор маленьким конденсатором база-коллектор чтобы он не был сильно быстрее чем ОУ.
  20. Не знаю, насколько это тут влияет, но полевики вы взяли с входными емкостями в три раза большими, чем у тех что на фирменной демо-плате. И индуктивность я бы что то типа вот такой поставил - https://www.chipdip.ru/product/b82559a9103a024-10
  21. Интересно еще вот что (для ознакомления с опытом тутошних коллег) 1. Насколько глубоки директории ваших проектов? Т.е. разбит ли проект на кучку осмысленных папок? Или все почти в одной куче? 2. Если директорий много (проект хорошо логически разбит), есть ли какие-то правила, какие из этих директорий вносить в список include path среды? С одной стороны, чтобы в файлах исходников отвязаться от очень длинных абсолютных или чуть менее, но тоже длинных относительных путей, например, // вместо #include "platform/target/basic/types.h" // писать #include "types.h" нужно каждую папку и каждую подпапку (вообще все места, где есть заголовочные файлы) вносить в список поисковых include path. В чем плюс: не нужно писать длинных путей #include "...". Минус же в том, что если директории проекта реально развесистые, задолбаешься вносить все эти пути в include path в свойствах проекта. С другой стороны, если писать все эти относительные пути (относительно, например, самой "верхней" папки проекта), эти #include "..." будут весьма длинными, да и не особо переносимыми, т.к. при перетаскивании каких-то заголовков в другие папки проект перестанет собираться. Тоже такое себе. Зато если в исходник надо будет подключить несколько заголовочников с одинаковыми именами (но разным содержимым, т.к. они в разных директориях и относятся к разным вещам), никакой путаницы - по пути сразу все понятно что подключается. Может есть какая-то серебряная пуля - в идеале - простое #include "types.h" ищет этот самый types.h в том же каталоге, в котором лежит файл с этой строчкой #include "types.h" (стандартное поведение большинства компиляторов), ну а если надо указать какой-то конкретный файл в длинной директории, эту директорию не надо было писать полностью: например #include "platform/../types.h"? Глянул в репозиторий линукса - там папка include вообще отдельная (мне так не нравится ибо мухи вместе с котлетами перемешаны), а большинство исходников начинаются с #include <linux/file.h>. Т.е. такое чувство, что список путей поиска включений у линукса весьма маленький и основной каталог как раз linux/include/linux где все, повторюсь, в кучу свалено.
  22. Индуктивность на основе двух CDRH127-12uH в параллель. Отключение происходит при 1.8A.
  23. Нет, с двухъядерного начинать не надо. Я вот вроде как уже не начинающая, но двухъядерных до сих пор страшусь :). А вот H7-го (например, H743 или H750) страшиться не надо - хороший контроллер "на вырост", хотя и с особенностями. Но начинающий в дебри не полезет, а потому слишком большого отличия от STM32F4 поначалу не заметит. И потому я бы советовала начитать с STM32F4, т.к. его сходство со старшими моделями гораздо сильнее, чем с STM32F1. А чтобы старт не был слишком дорогим, посоветую эту дешевую (190 руб с бесплатной доставкой) плату на STM32F401. Это здесь: https://aliexpress.ru/item/1005005807100324.html Она сильно похожа на "голубую таблетку", только называется черной таблеткой :). Хороша еще и тем, что не требует программатора - прошивается через USB (у всех STM32F4 и выше стоит встроенный загрузчик через USB) - не надо программатор в придачу покупать. А после STM32F401 все старшие модели (кроме двухъядерных) покажутся подобными, т.к. в основном совместимы сверху вниз.
  24. Заменил файл, ошибка осталась на том же месте, буду пробовать разбираться.
  25. Если просто c LVGL поиграться, то может и можно без ОС. А если нужен сетевой стек, обработка датчиков и т.д, то без ОС уже как-то не так весело. Можно конечно еще buildroot рассмотреть, но официально репозитория от Allwinner я не видел, поэтому с поддержкой драйверов будет не просто.
  26. ...но изучать то надо от простого к сложному. На платы Blue Pill (F103) и Black Pill (F401/F411) цена небольшая, чтобы поскупиться и начать с простого. Тем более, что для начала этого хватит за глаза. Пока освоит основные модули, пока присоединит дисплейчик и отработает на нем основы, пока с кнопочками-клавиатурками разберется. Да и ассемблер лучше на простом изучать. Сравните объем набора команд для M3 и M7. На практике написание на ассемблере нужно в одном случае из мильёна. Кстати, нашел я на Алишке плату, похожую на WeAct, с H723. Нууу даа, есть такая. Однако, она практически голая, и на ней, в принципе, не шибко то чего сделаешь. Ну, это я сравниваю с платой STM32H747I-DISCO, на которой есть чуть ли не всё 🙂
  27. Ну, в качестве платформы на долгое обучение железку надо брать помощнее. Ну а asm изучать вообще на любом железе можно, не возбраняется)) Другое дело, когда этот самый asm тащится основным языком при разработке... тогда да, вопросики.
  28. А топикстартер видимо выбирал микроконтроллер чисто по циферкам тактовой частоты - взял то, где самая большая циферка, 550 МГц 🙂 Надеюсь, он хотябы не на ассемблере его будет дрюкать. А то у меня был один знакомый чел, любитель ассемблера, так сказать... H750 пытался на асме с толкача завести, хехе. Двухъядерные появились еще до кризиса 20-го года, в то время экономич.ситуация была немного иной. Хотя да, даже по тем временам это был весьма дорогой микроконтроллер.
  1. Load more activity

  2. Mark site read
×
×
  • Create New...