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

Освоение ARM контроллеров

Вменяемые? Мне тут на днях отладку на Nuvoton предлагали, который 300МГц и 64МБ внутри и LQFP и на плате куча разъёмов и дип-переключателей - судя по всему удобная плата.

И всего 10$ за отладку.

Нувотон трудно по цене перебить и камушки у них интересные встречаются часто. Но работать с ними в России тяжелова-то. Требуются большие объемы заявлять - по мелочи они не размениваются, документация под NDA.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документация вроде нормально к ним находится в инете. Глубоко правда не разбирался, но NUC970 Family Programming Guide (типа юзермануал) найти в инете можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документация вроде нормально к ним находится в инете. Глубоко правда не разбирался, но NUC970 Family Programming Guide (типа юзермануал) найти в инете можно.

Возможно, такая ситуация не со всеми семействами. Но, например, для NUC976 даташит распространяется под NDA. Ну и некоторые документы, возможно, можно найти благодаря "добрым людям", которые их выкладывают после получения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, такая ситуация не со всеми семействами. Но, например, для NUC976 даташит распространяется под NDA. Ну и некоторые документы, возможно, можно найти благодаря "добрым людям", которые их выкладывают после получения.

Вы читаете невнимательно. Я же пишу, что NUC970 Family Programming Guide находится за минуту. Это юзермануал с описанием периферии на всё семейство NUC97x.

Описание периферии правда (на поверхностный взгляд) не фонтан - у всяких NXP, STM и т.п. более объёмное описание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаем разбираться. Получил железо, просмотрел несколько уроков, помигал светодиодами, передал в UART. Все вроде не особо сложно, так как сотни примеров есть. Начал разбираться с чего же все начинается. Тут уже инфы меньше и полез смотреть в мануал. Просьба поправить меня если я что то не так понял:

- Все начинается с адреса 0000 0000 (собственно это регистр syscfg_memrmp), который принимает значения состояния штырьков boot;

- У него только младшие 2 байта, которые указывают с какого места продолжить загрузку;

- Есть 3 варианта flash, SRAM и System memory. Во Flash наша основная программа, в System memory заводской бутлоадер, а в SRAM может быть любая временная программа (возможно даже свой бутлоадер, пока еще толком не понял).

- Из Flash мы запускаемся когда мы выполняем основной алгоритм работы.

- Из System memory если хотим обновить прошивку (не совсем понятно зачем это нужно, на сколько я понял у него нет шифрования данных, то есть прошивка должна иметься открытая). Ну возможно для каких то целей отладочных и пригодится.

- Из SRAM мы не можем загрузиться с первого раза, так как в нем будет бяка после подачи питания. Нужно первый раз загрузится нормально, записать в SRAM код программы которую нужно выполнить из SRAM, программно установить syscfg_memrmp для загрузки из SRAM и выполнить программный reset.

Изменено пользователем maxntf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Адрес 0x00 не принимает никакого значения boot. Туда записывается указатель стека.

Зачем вы лезете в дебри, которые вам не нужны? Отработали переферию - делайте логику.

 

а вот уже на 2 слове идет адрес старта кода (и скорее всего это не main, а код инициализации тактирования. Создается что в кокосе, что в кейле)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Адрес 0x00 не принимает никакого значения boot. Туда записывается указатель стека.

Точно, спасибо. Не правильно перевел мануал, регистр SYSCFG как и положено находится в структуре регистров.

а вот уже на 2 слове идет адрес старта кода (и скорее всего это не main, а код инициализации тактирования. Создается что в кокосе, что в кейле)

Этот адрес устанавливается по состоянию регистра SYSCFG (состояние ножки boot)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Значение SYSCFG определяет, на какую область памяти будет отображаться адрес 0.

Т.е., выставляем в одно значение - и содержимое памяти по адресам 0x00000000 и 0x08000000 будет одинаковое (и так же одинаковым будут следующие N килобайт, цифирку за ненадобностью не помню). Выставляем другое значение - будут одинаковыми 0x00000000 и 0x20000000 и т.д.

 

Но вот правда - бросайте Вы эти глупости. Мне кажется, этим ремапом никто толком и не пользуется. Разве что штатный загрузчик, да отладчики в режиме "загружать код в RAM" (этакий быстрый режим отладки для маленьких программ, чтобы флеш каждый раз не стирать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ремапом приходится пользоваться в STM32F0 серии так как нет VTOR

Все загрузчики используют

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но вот правда - бросайте Вы эти глупости. Мне кажется, этим ремапом никто толком и не пользуется.

 

Ремамп - единственный корректный способ залить код в внешнюю sdram из внешней 25qxx, и запустить ну очень жирную прошивку в нативном режиме - с поддержкой отладки. А на новых чипах от st этот режим уже часть периферии - исполняется самостоятельно, без ручных бутов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Значение SYSCFG определяет, на какую область памяти будет отображаться адрес 0.

Т.е., выставляем в одно значение - и содержимое памяти по адресам 0x00000000 и 0x08000000 будет одинаковое (и так же одинаковым будут следующие N килобайт, цифирку за ненадобностью не помню). Выставляем другое значение - будут одинаковыми 0x00000000 и 0x20000000 и т.д.

Интересно - и как это тут все определили о каком именно МК автор ведёт речь? Что он имеет в виду под "Получил железо ..."?

И уже прямо кучу советов понадавали. И тоже непонятно - по какому именно МК советы.

Прям экстрасенсы одни вокруг...... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

STM32F407VG.

Как в программе выполнить reset?

В PIC можно было функцией RESET();

Универсально (для любого МК) - через встроенный WDT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Универсально (для любого МК) - через встроенный WDT.

А ещё можно соединить GPIO и RESET и дёргать этот сигнал :yeah:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...