Jump to content
    

yes

Свой
  • Posts

    3,450
  • Joined

  • Last visited

Reputation

0 Обычный

About yes

  • Rank
    Гуру
    Гуру

Контакты

  • ICQ
    Array

Recent Profile Visitors

15,005 profile views
  1. спасибо, посмотрю. я не знал про такое - корневую таблицу (0 левел) нужно же по любому заполнять?
  2. надо посмотреть в RTL коде, как транслируются адреса (конкретно VIPT кэш) - не теоретически, а конкретную реализацию запускать линукс на симуляторе тяжело, поэтому хотелось бы минимальную программку с виртуальной памятью - ну то есть считать/записать по указателю... ну и код мне тяжело читать - не понимаю... ---------------------- идея вобщем-то понятна - сделать таблицу 0-уровня, для мапирования 1-1 (VA==PA) положить в satp.... но хотелось бы готового кода...
  3. когда-то и Verilog-XL всем хватало я так понял, что у автора все работает и код не особо сложный, но хочется попробовать "взрослые подходы". поэтому нужны UVM, автоматическая сборка регрессионных тестов, генерация отчетов по комиту и т.д. по-моему, навык очень полезный, как и при поиске работы, так и вообще, но чтоб все это поднять с 0 нужно много энтузиазма (наверно для маленького проекта смысла в этом не много, но потренироваться)
  4. также есть описание/подход uC/OS https://micrium.atlassian.net/wiki/spaces/osiidoc/pages/163866/Memory+Management ну а у "взрослых", насколько я помню, malloc вызывает системный sbrk от которого и получает память. а уж как ее дефрагментировать и вообще управлять - это хитрая задачка внутри ядра может в каких-то скриптовых языках посмотреть как работает автоматический сбор мусора, но там могут перформанца не жалеть совсем...
  5. modelsim, насколько я помню, не годится для верификации - в нем нет рандомизации и (по-моему) асершинов то есть надо на questаsim переходить. --------------------- а так подходов полно (я сам не верификатор просто маску нашел смотрю что они делают) - как встроеных в тулзы, так и сторонних
  6. Allwiner F133-A (D1-s)

    интересно, насколько этот alwiner соответствует этому коду? https://github.com/T-head-Semi/opene906 --------------------------- насколько я знаю, стандартных CSR для кэша в архитектуре нету (то ли еще не стандартизировали - не успели, то ли считают, что кэш/ММУ отдельный юнит, не ядро) в NOELV кэш управляется fence.i ---------------------------- для кодов opene906 по-моему, много нестандартных расширений
  7. судя по ответам, не я один не понял... ---------------------- в RV (да как и в большинстве подобных) jal это и call и jump одновременно, зависит от аргумента ---------------------- как (по-моему) можно сделать без ассемблера : например, в линкере указать что линковать функции-обработчики по константным адресам (например, каждой функции отдельную секцию) или передать символы из линкера в код https://mcuoneclipse.com/2016/11/01/getting-the-memory-range-of-sections-with-gnu-linker-files/ сформировать табличку (global/static) из кодов jal zero, addr (и таки да - это тоже символ линкера, и положить желательно в .text, а не .data) и ее адрес в mtvec (в принципе можно и без этого - в uint64/32 преобразуем указатели (фукций и таблицы) - в С получится некая формула, которая будет считаться рантайм - но что делать если разность больше imm[20:1] - хз) напоминаю формат (спасибо креативщикам из riscv) JAL : imm[20][10:1][11][19:12] rd opcode J-type младшие 12 бит 0x06F imm это собственно разница (signed) между адресом функции и адресом jal в табличке
  8. извиняюсь конечно, за офтоп - но зачем? тут же дело не в красоте, а в том, что таблица этих векторов должна быть до запуска main. опять же если хочется переложить базовый вектор, то тоже лучше через ассемблер, по-моему (там и выравнивание, и четко все :) ----------- в С можно иметь наблицу с указателями на функции, но все равно понадобится какой-то обработчик с сохранением tmp регистра (ну если возврат нужен) и через него jump ----------- я тоже восновном чипы проверяю, а не софт пишу - но меня такая идея не посещала...
  9. только через присваивание (предполагаем, что поля в record std_logic* - зачем другие) in_record.field <= std_logic_signal; .... std_logic <= out_record.field; ну если сигнал (вектор) надо разбить по полям, то слайсы (8 downto 3) и т.п.
  10. "более чем полностью" это такой оборот. в этом случае означает, что если частота от микроволновки попала в полосу wifi то пакет теряется, а если не попала - то не теряется. то есть имея доступ к низкоуровневому интерфейсу бейсбанда это можно заметить без анализатора спектра, а если только к TCP - то не так просто. я не измерял падение скорости TCP - не было нужно, но непрерывная передача (необходимая для работы жпс и вообще ССЗ/фазой) без потерь была невозможна - собственно это я хотел и написать
  11. надо взять широкополосную антену и посмотреть спектроанализатором - я это не на одной микроволновке видел, даже не на однотипных (wifi этот делали для самсунга, то есть достп к микроволновкам разным был)
  12. ну например wifi теряет от микроволновки с закрытой дверцей пакеты более чем полностью. ну по крайней мере лет 10 назад я с этим сталкивался. wifi спасает то, что микроволновка не очень точный резонанс и его шарашит по всей полосе + пакетная передача. а мы пытались из wifi сделать что-то типа слежения, то есть более-менее непрывно нужно было принимать стараться надо, чтоб работало - там не так все просто с телефонами и его антенами опять же из своего прошлого опыта - в Азарт-П очень долго мучались с разнесением трактов, когда я прекратил работу с ними, ситуация была такая - либо жпс, либо разговаривать. надеюсь допилили...
  13. может gcc-шный формат вставок? вроде бы IAR раньше не поддерживал gcc-шные расширения (если не прав - извиняюсь)
  14. спасибо! последнюю статью не нашел, но наверно, по названию, мне она и неинтересна буду пробовать. upd: уточню (если кому-то солвнет недоступен) команды config vhdlassertignore failure config vhdlassertignore error config vhdlassertignore warning config vhdlassertignore note config vhdlassertignore noignore соответственно нужный уровень выбирается, ну или в tcl скрипт это записать а среда - почему-то export в bash не сработал, но если в synopsys_sim.setup написать ASSERT_IGNORE_WARNING = TRUE и т.п. то работает, проверяется командой show_setup
  15. подайте частоту вдвое выше на тактовый вход триггера в IO (upd: ну при этом на вход триггера надо подать сигнал /2 - то есть проще с DDR - на входы D0 / D1 константы 1 и 0 ну и тактовую на С) то есть чтобы вывод опоры был прямо в ножке это стандартный способ ------------------------- можно еще с DDR повозиться (чтобы вдвое не увеличивать), но не помню как там в ProASIC-ах DDR сделан ------------------------- наверно, дело не в том, что "влияют сигналы", а разводка от триггера до ножки может пойти каким-то кривым путем и метода исправить это (гарантировать одинаковость при каждом изменении) практически и нету
×
×
  • Create New...