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

    

BSACPLD

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Местный
  • День рождения 16.06.1986

Контакты

  • Сайт
    http://www.mcu-cpld.narod.ru
  • ICQ
    0

Информация

  • Город
    Москва

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

3 325 просмотров профиля
  1. Месячная зарплата помноженная на количество месяцев которое потребуется на разгребание всего этого безобразия. Уровень ЗП зависит от Вашего опыта и определяется на собеседовании. Если Вам не нужно ничего объяснять это одно, а если нужно учить отличать резистор от конденсатора, то это другое. По конкретным цифрам я ничего сказать не могу, т.к. уровень ЗП определяет руководство НИИ. Пока не будет разобран склад, мы не будем нагружать человека задачами по закупке и работой с поставщиками. Но нужно понимать, что время это не бесконечно. Думаю, 6-8 месяцев вполне достаточно чтобы все это разобрать. Мы не проходим таможню, т.к. работаем только с российскими фирмами. Прохождение таможни это головная боль поставщика. Единственное исключение это работа напрямую с Белорусскими предприятиями, но подробностей я не знаю, т.к. занимаюсь разработкой, а не закупкой. Знаю только что отдел закупок очень не любит работать с Белорусскими предприятиями напрямую.
  2. Коллеги, нам требуется кладовщик/снабженец для выполнения следующих задач (в порядке приоритета): На текущий момент: 1. Привести в порядок бардак склад оставшийся от расформирования одного из отделов. 2. Привести в порядок бардак склад всего НИИ. 3. Вести учет компонентов на складе. 4. Поддержка в актуальном состоянии кассы с рассыпухой 0603, 0805 и т.д. По мере необходимости формировать заявки на закупку/пополнение закончившихся позиций. 5. Сбор комплектации для отправки плат на монтаж в соответствии со спецификацией от разработчика. В будущем, когда будет налажена работа по предыдущим пунктам: 6. Отработка заявок на закупку компонентов. 7. Налаживание контактов с поставщиками. Если какого-то компонента нет в известных нам фирмах, это не значит, что его нельзя купить. Это значит что нужно найти фирму которая нам его поставит. Опыт работы приветствуется, но можно и без него. Главное голова на плечах и умение общаться с совершенно различными типами людей. Отличать резистор от конденсатора и транзистор от микросхемы мы научим :) Зарплата очень сильно зависит от уровня знаний и умений кандидата, поэтому это вопрос для обсуждения на собеседовании. Оформление в соответствии с ТК. Рабочий график 5/2, 8 часов. Время прихода на работу обсуждается. Работа в Москве. Свои резюме и организационные вопросы просьба присылать на почту: bsa-one(собака)yandex.ru или bsa(собака)bmstu.ru
  3. Нашел в чем была проблема :) Нужно было поставить галочку Debugger->Download->Use flash loader(s). Странно, что GD32 являющийся полным аналогом нормально шился и без этой настроки...
  4. Коллеги, помогите, пожалуйста, понять в чем грабли. Есть платы с STM32F103CBT6 и GD32F103CBT6. Если шить любую из этих плат через фирменный ST-Link с помощью IAR, то проблем нет. Если через китайский клон jlink v8.00, то, при попытке зашить STM32F103CBT6, почему-то включается Read-out protection. Если через этот же jlink прошить GD32F103CBT6 той же самой прошивкой, что и STM32F103CBT6, то проблем нет. Точнее почти нет, т.к. один раз Read-out protection все же почему-то включилась. Очень похоже, что jlink почему-то стирает Option bytes у STM32F103CBT6 и не стирает у GD32F103CBT6. И это очень странно, т.к. эти контроллеры отличаются только тактовой частотой и ресурсом flash, а в остальном они полностью одинаковы.
  5. GD32F103 проблема с FLASH_ErasePage

    Проблема решена. Была ошибка в цикле из которого вызывалась FLASH_ErasePage.
  6. GD32F103 проблема с FLASH_ErasePage

    Добрый день, Коллеги! Помогите, пожалуйста, понять где грабли. Пытаюсь стереть сектор(страницу) памяти через FLASH_ErasePage, но она почему-то не стирается. Последовательность следующая: FLASH_Unlock () ; перед началом работы бутлоадера FLASH_ErasePage (address) ; где address - физический адрес страницы FLASH_Lock () ; после завершения работы бутлоадера Пробовал перед стиранием страницы вызывать FLASH_ClearFlag, увеличивать таймауты на запись/стирание в коде библиотеки, но ничего не помогло. При этом если выполнить FLASH_EraseAllPages, то она отрабатывает корректно, но мне нужно стирать именно конкретную страницу, а не всю FLASH. В качестве библиотеки использую SPL 3.5.0 от ST.
  7. Уважаемые коллеги! В НИИРЭТ МГТУ им. Н.Э. Баумана требуется инженер-технолог по монтажу печатных плат. Обязанности: - Проверять файлы печатных плат разработчиков/заказчиков на этапе их запуска в производство и при необходимости внесения изменений информировать разработчика/заказчика; - Расчет стоимости монтажа печатных плат (при выпонении внешних заказов); - Обеспечение подготовки производства; - Поиск и внедрение в производство новых технологий; - Разработка технических требований к комплектующим и материалам; - Расчет и контроль норм расхода комплектующих и материалов; - Контроль качества комплектующих и материалов и готовой продукции; - Запуск изделий электронной техники в серию, подготовка опытных партий и опытных образцов; - Подготовка трафаретов; - Выводной и поверхностный монтаж печатных плат (в том числе нестандартных); - Ремонт печатных плат. - Отвечать на электронную почту в течении 1 суток после поступления письма. Требования: - Высшее техническое образование; - Знание способов и методов монтажа сложных блоков, узлов, модулей; - Знание технологии пайки радиокомпонентов поверхностного и навесного монтажа; - Умение паять BGA, QFN, LGA; - Знание критериев контроля качества паяных соединений; - Общие знания современной элементной базы, владение технологией отмывки электронных узлов; - Личные качества: аккуратность, ответственность, обучаемость; - Особые требования: прямые руки, умение думать головой, хорошая письменная грамотность, доброжелательность, умение общаться; - Знание ЕСКД, умение работать с технической документацией; - Умение работы c офисными и CAD приложениями (Microsoft Office, CAM350); - Минимальный рабочий стаж по специальности: 5 лет; - Опыт работы на госпредприятиях приветствуется; - Знание английского (чтение технической документации); - Гражданство РФ. Условия: - Уровень оплаты от 60 000 р. в зависимости от уровня квалификации; - Оформление в соответствии с ТК; - Рабочий график 5/2, 8 часов. Начало в 9:00, но можно скорректировать в небольших пределах; - Работа в Дмитрове (загородная база) недалеко от платформы 75 км (56.429463, 37.488787). Свои резюме и организационные вопросы просьба присылать на почту нашему руководству: min-st-1986(собака)mail.ru Технические вопросы и вопросы по взаимодействию разработчиков и производства просьба присылать мне: bsa-one(собака)yandex.ru или bsa(собака)bmstu.ru
  8. Пытаюсь организовать общую память между FPGA и HPS. Сделал мост fpga2sdram и простейший DMA со стороны FPGA. Тестирование провожу следующим образом: 1. Выделяю в Linux приложении буфер uint32_t размером 1024 элемента (с выравниванием по страницам) и заполняю его тестовыми значениями. 2. Получаю физический адрес буфера и передаю его в DMA контроллер. 3. Запускаю DMA на копирование данных из HPS SDRAM в FPGA. 4. Смотрю считываемые данные со стороны FPGA с помощью SignalTap. Если зарустить DMA сразу после заполнения буфера, то в FPGA копируется мусор, если подождать несколько миллисекунд, то корректные данные. Есть предположение что при заполнении буфера данные сначала хранятся в кэше процессора и лишь затем сбрасываются в SDRAM. Каким образом я могу заставить процессор протолкнуть буфер из кэша в SDRAM или как выделить некэшируемый буфер?
  9. Заработало :) Я сам себе злобный буратино :) Копировал preloader не в тот раздел sd карты. Остался только вопрос почему linux пишет сразу во все gpio хотя я прописал linux,default-trigger = "heartbeat"; только для GPIO53.
  10. Пробовал через loanio. Такой вариант вообще не работает. Пробовал на GPIO54, 55, 56. Т.е. сам linux стартует, но переключать пины настроенные как loanio не получается (на oe подавал 1, out выводил на кнопки). Причем если GPIO54 настроить как gpio, то он начинает работать. 55 и 56 не удалось заставить работать ни как gpio, ни как loanio. Подозреваю, что дело в некорректной настройке pinmux в preloader. Пробовал собирать preloader как в 15.1, так и в 18.0. Результат один и тот же. u-boot также пересобирал. Где-то читал, что вроде начиная с 13.1 loanio и gpio окончательно поломали. Так ли это? Во всяком случае очень похоже, т.к. при чтении регистров GENERALIO7 (GPIO55, 0xFFD0849C) и GENERALIO8 (GPIO56, 0xFFD084A0) для варианта gpio возвращается 1, хотя согласно документации там должен быть 0. При этом для GENERALIO6 (GPIO54, 0xFFD08498), который работает, как и положено, возвращается 0.
  11. Написал программу для тестирования GPIO. dts переделал так чтобы система моргала только GPIO53 (linux,default-trigger = "heartbeat"). Остальными GPIO управляет моя программа. #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <fcntl.h> #include <sys/types.h> #include <sys/mman.h> #include <unistd.h> #include <errno.h> int main() { int fd = 0; void *fpga_leds = 0; void *hps_leds = 0; try { fd = open( "/dev/mem", O_RDWR | O_SYNC ); if(fd < 0) throw "mem open error"; printf("fpga_leds\n"); fpga_leds = (mmap(0, (16/4), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xFF203000)); if(fpga_leds == MAP_FAILED) throw "fpga_leds mmap error"; for(int i=0 ; i<(16/4) ; i++) { uint32_t a = *(((uint32_t*)fpga_leds) + i); printf("0x%08X\n", a); } *(((uint32_t*)fpga_leds) + 0) = 0x0000000F; usleep(1000000); *(((uint32_t*)fpga_leds) + 0) = 0x00000000; usleep(1000000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000A; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x00000005; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000A; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x00000005; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000F; printf("\n"); usleep(1000000); printf("hps_leds\n"); hps_leds = (mmap(0, (120/4), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xFF709000)); if(hps_leds == MAP_FAILED) throw "hps_leds mmap error"; for(int i=0 ; i<(120/4) ; i++) { uint32_t a = *(((uint32_t*)hps_leds) + i); printf("0x%08X\n", a); } for(int i=0 ; i<32 ; i++) { *(((uint32_t*)hps_leds) + 0) = 1 << i; usleep(500000); } *(((uint32_t*)fpga_leds) + 0) = 0x00000000; *(((uint32_t*)hps_leds) + 0) = 0xFFFFFFFF; usleep(500000); printf("\n"); } catch(const char* msg) { printf("\n%s\n", msg); } if(fd != 0) close(fd); return 0; } GPIO со стороны FPGA отображенные в память процессора работают нормально, а вот со стороны HPS удается зажечь только первые 2 из 4. И ещё странный эффект. После того как я записываю 1 в GPIO54 он должен непрерывно гореть, но он сбрасывается после того как система моргнет GPIO53. P.S. Описание регистров и их адреса я брал вот отсюда: https://www.intel.com/content/www/us/en/programmable/hps/cyclone-v/hps.html#topic/sfo1410069909712.html#sfo1410069909712
  12. Очередные грабли. Пересобрал preloader и u-boot. Подправил dts и сделал из него dtb. Закинул все это дело на SD карту, но проект заработал не так как я ожидал. GPIO53, 54, 55, 56 настроены как GPIO. I2C0 отключен. Светодиоды прописаны следующим образом: Для HPS. leds { compatible = "gpio-leds"; hps0 { label = "hps_led0"; gpios = <0x33 0x18 0x0>; linux,default-trigger = "heartbeat"; }; hps1 { label = "hps_led1"; gpios = <0x33 0x19 0x0>; linux,default-trigger = "heartbeat"; }; hps2 { label = "hps_led2"; gpios = <0x33 0x1a 0x0>; linux,default-trigger = "heartbeat"; }; hps3 { label = "hps_led3"; gpios = <0x33 0x1b 0x0>; linux,default-trigger = "heartbeat"; }; }; Для FPGA. leds { compatible = "gpio-leds"; fpga0 { label = "fpga_led0"; gpios = <0x31 0x0 0x0>; linux,default-trigger = "heartbeat"; }; fpga1 { label = "fpga_led1"; gpios = <0x31 0x1 0x0>; linux,default-trigger = "heartbeat"; }; fpga2 { label = "fpga_led2"; gpios = <0x31 0x2 0x0>; linux,default-trigger = "heartbeat"; }; fpga3 { label = "fpga_led3"; gpios = <0x31 0x3 0x0>; linux,default-trigger = "heartbeat"; }; }; По идее все светодиоды должны моргать одновременно, но: 1) 2 и 3 светодиоды на HPS вообще не моргают. Причем это именно те GPIO на которые в изначальном проекте был выведен I2C0. Я его отключил, но они все равно не работают. 2) Светодиоды на HPS и FPGA переключаются по очереди. Что я делаю не так?
  13. UPD. Нашел в чем была проблема с переназначением светодиода на уже имеющийся GPIO. В u-boot.scr неправильно указал имя файла.
  14. А если система в QSYS не менялась и есть свободный GPIO, достаточно просто пересобрать dtb? Просто я пробовал вообще убрать светодиод из dts чтобы его отключить, но даже с пересобранным dtb он продолжил моргать.