Примеры для NIIET-EVAL-K1921VK028

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Ответить
dtolstov
Сообщения: 5
Зарегистрирован: 14 дек 2022, 16:07
Предприятие: ОАО ВНИИР

Примеры для NIIET-EVAL-K1921VK028

Сообщение dtolstov »

Здравствуйте.

У нас есть вопросы по настройке КФДЛ.441461.024, которой нет на http://ao-sms.ru/om.html, но есть на https://niiet.ru/product/%d0%ba%d1%84%d ... 41461-024/

Я склонировал репозиторий из https://bitbucket.org/niietcm4/k1921vkx_sdk и попробовал позапускать примеры из projects/NIIET-EVAL-K1921VK028/, а именно led_run (стоковая прошивка), ext_sram и lwip_helloworld.

Использовал Ubuntu 22.04 LTS (в виде Linux Mint 21)
Компилятор арм-none-eabi-gcc (15:10.3-2021.07-4) 10.3.1 20210621 (release) https://packages.ubuntu.com/jammy/gcc-арм-none-eabi
CMake 3.22.1, Ninja-build 1.10.1, Qt Creator 6.0.2, OpenOCD-0.12.0-rc2+niiet.

1. led_run работает соответственно ожиданиям, lwip_helloworld заработал только при форсировании 10 Мбит/с со стороны тестирующего сеть ноутбука, ext_sram показывает ошибки в тесте записи внешней ОЗУ, а читает всегда 0xFF.

Пробовал уменьшать тайминги EXT_RAM с дефолтных 15-15-15 (должно быть достаточно 9*5нс для 45нс-СОЗУ), понижать частоту ядра с 200 МГц, попутно проверил механизм аварийной перепрошивки. Пробовал 8-битный режим (по умолчанию 16-битный). Не смог добиться полностью безошибочной работы. Согласно https://bitbucket.org/niietcm4/k1921vkx ... c#lines-81 используется банк MEM_EXT2=0x82000000UL и CE2 на GPIOD6 (т.к. на CE0 висит внешняя параллельная Flash), альтернативная функция 1.

Проверил распиновку и iomux/AF в bsp.c по приехавшей бумажной документации и по файлу КФДЛ.441461.024 РП.docx -- вроде всё соответствует. Все джамперы и DIP-переключатели стоят в положениях по умолчанию, вроде бы корректных.

Только при замене функций доступа BSP_SRAM_Write/Read с пары 16-битных на одинарные 32-битные обращения и в режиме 8-битной трансляции я увидел хоть какой-то ответ от памяти:
Serial log | Показать

Код: Выделить всё

All peripherals inited, SYSCLK = 200 MHz
Write to external SRAM:
  0: 0x00000 <- 0x80818283
  1: 0x00004 <- 0x94959697
  2: 0x00008 <- 0xa8a9aaab
  3: 0x0000c <- 0xbcbdbebf
  4: 0x00010 <- 0xc0c1c2c3
  5: 0x00014 <- 0xd4d5d6d7
  6: 0x00018 <- 0xe8e9eaeb
  7: 0x0001c <- 0x12345678
Read from external SRAM:
  0: 0x00000 -> 0xffffffff
  1: 0x00004 -> 0xffffffff
  2: 0x00008 -> 0xaaaaffff
  3: 0x0000c -> 0xffffffff
  4: 0x00010 -> 0xf7f7ffff
  5: 0x00014 -> 0xffffffff
  6: 0x00018 -> 0xefefffff
  7: 0x0001c -> 0x5656ffff
Check results:
  0: addr 0x00000 error, expected 0x80818283, got 0xffffffff
  1: addr 0x00004 error, expected 0x94959697, got 0xffffffff
  2: addr 0x00008 error, expected 0xa8a9aaab, got 0xaaaaffff
  3: addr 0x0000c error, expected 0xbcbdbebf, got 0xffffffff
  4: addr 0x00010 error, expected 0xc0c1c2c3, got 0xf7f7ffff
  5: addr 0x00014 error, expected 0xd4d5d6d7, got 0xffffffff
  6: addr 0x00018 error, expected 0xe8e9eaeb, got 0xefefffff
  7: addr 0x0001c error, expected 0x12345678, got 0x5656ffff

Write to external SRAM:
  8: 0x00020 <- 0x80818283
  9: 0x00024 <- 0x94959697
 10: 0x00028 <- 0xa8a9aaab
 11: 0x0002c <- 0xbcbdbebf
 12: 0x00030 <- 0xc0c1c2c3
 13: 0x00034 <- 0xd4d5d6d7
 14: 0x00038 <- 0xe8e9eaeb
 15: 0x0003c <- 0x12345678
Read from external SRAM:
  8: 0x00020 -> 0xf7f7ffff
  9: 0x00024 -> 0x9696ffff
 10: 0x00028 -> 0xffffffff
 11: 0x0002c -> 0xffffffff
 12: 0x00030 -> 0xffffffff
 13: 0x00034 -> 0xfefeffff
 14: 0x00038 -> 0xffffffff
 15: 0x0003c -> 0xd7d7ffff
Check results:
  8: addr 0x00020 error, expected 0x80818283, got 0xf7f7ffff
  9: addr 0x00024 error, expected 0x94959697, got 0x9696ffff
 10: addr 0x00028 error, expected 0xa8a9aaab, got 0xffffffff
 11: addr 0x0002c error, expected 0xbcbdbebf, got 0xffffffff
 12: addr 0x00030 error, expected 0xc0c1c2c3, got 0xffffffff
 13: addr 0x00034 error, expected 0xd4d5d6d7, got 0xfefeffff
 14: addr 0x00038 error, expected 0xe8e9eaeb, got 0xffffffff
 15: addr 0x0003c error, expected 0x12345678, got 0xd7d7ffff
Подскажите, пожалуйста, почему пример не работает с ОЗУ CY62126ESL-45ZSXI? Нас очень интересует работа с внешней памятью в режиме прямой адресации, (по возможности ещё и исполняемой), и Ethernet MAC, с точки зрения применимости микроконтроллера для будущих проектов. Нужно ли что-то посмотреть осциллографом, лог.анализатором, ST-Link и gdb?


2. Мне пришлось извлекать ваши изменения к OpenOCD в виде патчей самостоятельно, включая поиск выбранной вами релизной версии, портирование на upstream и доработку исходников к убежавшему внутреннему ABI. Теперь у меня openocd-0.12.0-rc2-amd64 с поддержкой k1921vk028.cfg, успешно шьёт flash и отлаживает ядро. Версии 0.11.0 или старее -- нас не интересуют, так как с тех пор добавили важные исправления, поддержку новых ядер, а мы работаем с разными микроконтроллерами и микропроцессорами.

Кто-нибудь у вас занимается поддержкой вашей версии openocd? На OpenOCD gerrit вроде нет активных changeset по ВК028. Последняя активность в 2015 https://review.openocd.org/c/openocd/+/3011/ , в 2016 https://review.openocd.org/c/openocd/+/3171 и в 2019 https://review.openocd.org/c/openocd/+/5082
Если вам интересна поддержка настольных дистрибутивов Linux -- доработайте, пожалуйста, код vk028-035, или я могу выслать три патча (на nor, flash_loader, tcl_target).
Ответить

Вернуться в «32-разрядные микроконтроллеры»