Программа sam ba для прошивки карт прога
Быстрый старт для тех, кто хочет изучить 32 битные ARM микроконтроллеры. В статье подробно описываю установку среды программирования, прошивку платы, компилирование операционной системы и обращаю ваше внимание на такие детали, которые по моему значительные для начинающих.
В первую часть курса изучаем минимальный мултимедийнный компютер с операционной системой. На его основе в далнейшем соберём совершенный медиа плеер (часть 2).
Оглавление:
1, Блок-схема „минимального“ компютера и его функции
2, Основные части
3, Схема, демоплата, документация, программный пакет и всё необходимое
4, Установка среды программирования, запуск тестового образца программы для проверки работоспособности системы
5, Первая программа
6, Примеры, использование ADC, карта памяти, буззер и т.д.
7, Какую операционную систему реального времени выбираем и почему
8, Операционная система BeRTOS, Установка среды программирования, запуск демонстрационного примера программы
1, Блок-схема „минимального“ компютера и его функции
«Минималный» компютер с цветным дисплеем покажет картину, текст, выполнит вычисления и будет иметь графическое меню.
Такой компютер будет иметь три основные детали: цветной экран, микроконтроллер, клавиатура и конечно всё что нужно для их работы(осциллятор, блок питания и т.д.). Блок-схема правда сложнейшая :] и выглядит вот так.
2, Основные части
Микроконтроллер ATSAM3N4C компании Atmel.
Микроконтроллер имеет ядро ARM Cortex M3. Изучение серии M позволит гораздо легче освоить более сложные микроконтроллеры и микропроцессоры ARM.
Несложный и еффективный в использовании.
Эта модель имеет самую болшую программную память изо всех ATSAM3N-ов.
TFT цветной дисплей с SPI интерфейсом.
Результат будет более очевидным, если начать обучение с дисплея а не аудио-прибора и именно с SPI интерфейсным дисплеем потому что это простейсшиий способ вывода информации на экран. Нет необходимости в самом начале изучать принципы работы дисплеев с более сложными интерфейсами.
Клавятура, 2 кнопки любого типа
- SAM3N-EK демоплата (на нём уже вмонтирован программатор).
- Схема демоплаты (определим какие детали расположены на плате)
- Программный пакет
SAM3N-EK демоплату покупаем здесь.
Схему демоплаты скачиваем от сюда.
Программный пакет скачиваем одним файлом от сюда, архив содержит все четыре файла.
4, Установка среды программирования, запуск тестового образца программы для проверки работоспособности системы
Установливаем программный пакет (Работаем на 32 битном Windows XP SP3 или SP2, в других версиях могут возникнуть проблемы).
Установливаем make-3.81.exe. При установке и на этот раз ничего не меняем. Появится такое окно:
Открываем Start>>Control Panel>>System>>Advanced>>Environment Variables, выбираем PATH затем Edit
В конце строки добавим: ;C:\Program Files\GnuWin32\bin дальше OK>>OK>>OK
Установливаем sam-ba_2.10.exe. При установке ничего не меняем. При окончании компютер перезагрузится.
Установливаем SAM3N-EK_project.exe При установке ничего не меняем.
открываем C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc и запускаем build.bat.
Открывается чёрное окно и через некоторое время выглядит вот так:
И так мы закомпилировали программный код в папке C:\ATSAM\SAM3N-EK_project\examples\spi_lcd по меикфайлу C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\Makefile. Файлы main.c, spim_master_wrapper.c, image.h и библииотеки. В папке C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\bin был создан файл spi_lcd_sam3n_ek_sam3n4-flash.bin. Эта бинарная программа, которую прошьём в микроконтроллер с помощью COM порта.
Прошиваем.
При первом запуске на дисплее появляется Qtouch демо записанная пройзводителем. Зелённый круг двигается на экране по движению пальца.
Для прошивки сначала надо стереть то что записано. Отключаем и соединяем джампер JP3, опять включаем (на этот раз на экране ничего нет) ожидаем 10 секунд. Затем выключаем и открываем джампер JP3. Программа пройзводителя стёрлась.
Присоединяем плату COM портом к компютеру и подключаем блок питания. Открываем Start>>All Programs>>ATMEL Corporation>> SAM-BA v2.10>> SAM-BA v2.10. Выбираем COM порт, которым подключена плата и at91sam3n4-ek, затем Connect.
Из выпадающего списка выбираем Enable Flash access, затем Execute вот так:
Затем выбираем файл spi_lcd_sam3n_ek_sam3n4-flash.bin и Send File
Когда процесс записи закончится, на вопрос выбираем No.
Из списка (Enable Flash access) выбираем Boot from Flash (GPNVM1) и Execute, затем выбираем Link>> Disconnect
Нажимаем на кнопку рестарта на плате в правом верхнем углу, программа запустится и на дисплее появится изображение.
И так мы установили все нужные программы, компилировали (запуском build.bat) и прошили программу в микроконтроллере на плате с помощю SAM-BA.
- main.c главный файл программы
- image.h картина, (лого ATMEL)
- spim_master_wrapper.c драйвер SPI, чтобы простые команды SPI были доступны, например SPIM_Initialize(SPI);
Теперь надо удалить из меикфайла (C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc) информацию о файлах image.h и spim_master_wrapper.c. Готовый меикфайл скачиваем от сюда.
Запускаем C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\build.bat.
Компилированный файл C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\bin\getting_started_sam3n_ek_sam3n4-flash.bin прошиваем на плате.
После нажатия на кнопку рестарта должен загареть один светодиод.
Поясняем программу:
- Примеры кода ( встроенные устройства SAM3N4C, интерфейсы и использование компонентов расположенных на плате).
- Библиотеки
- Документация
- Порт операционной системы FreeRTOS на SAM3N4C
7, Какую операционную систему реального времени выбираем и почему
Сравнительно полный список RTOS-ов (Операционных Систем Реального Времени) можно посмотреть здесь. Операционная система подходящая нашей цели, должа удовлетворять следующие требования:
1. Должна быть на открытых исходниках
2. Должна иметь многозадачный кернел со всеми необходимыми функциами
3. Низкое требование к ресурсам
4. Должна иметь систему графического интерфейса
5. Должна иметь файловую систему
Когда установка закончится, запускаем BeRTOS Wizard
Присвоем проекту имя, например namehere.
Выбираем версию:
Выбираем плату:
Выбираем демопроэкт:
Выбираем тулчайн:
После завершения запускается CodeLite IDE
Нажимаем на клавишу F7 и проэкт компилируется. Компилированный файл находится в папке C:\Documents and Settings\Administrator\My Documents\namehere\images\namehere.bin Прошиваем его на плате с помощью SAM-BA.
Плата запустит проэкт вот так:
Первым камнем преткновения на пути изучения любого микроконтроллера стоит проблема его прошивки. Обычно она решается покупкой программатора (или отладчика), но если микроконтроллер имеет встроенный загрузчик, на первых порах можно обойтись без него.
В этом материале я как раз расскажу, как прошить микроконтроллер SAM3S4B с помощью загрузчика на примере платы Karma-SAM3S. Описанную процедуру можно будет применить и к остальным ARM`ам фирмы Atmel, хотя могут быть небольшие отличия.
Микроконтроллеры серии SAM3S имеют встроенный загрузчик, который позволяет записывать прошивку по USB или UART0 без применения дополнительного оборудования. Загрузчик хранится в постоянной памяти (ROM) и его нельзя стереть.
Чтобы микроконтроллер запустил при старте загрузчик, нужно кратковременно нажать на кнопку ERASE (на время большее 200 мс), а затем сбросить микроконтроллер. Это можно сделать, дергая выключатель питания или с помощью кнопки RESET. Оба варианта дадут одинаковый результат - микроконтроллер очистит флэш память, сбросит бит, определяющий источник загрузки, и при следующем запуске загрузится из ROM.
Для загрузки прошивки по USB к тактовой частоте микроконтроллера SAM3S предъявляются определенные требования. Микроконтроллер должен тактироваться от кварцевого резонатора с частотой 11,289; 12,00; 16,00 или 18,432 МГц. При загрузке прошивки по UART0 никаких требований нет.
На плате Karma-SAM3S установлен кварц с частотой 12 МГц. С таким кварцевым резонатором плата стабильно прошивается.
Для начала нам нужно установить на компьютер одну из утилит, позволяющих загружать прошивку. На сегодняшний день мне известно только две таких утилиты - SAM-BA и BOSSA.
При скачивании выбирайте ту программу, которая подходит для вашей операционной системы (важен не только тип, но и разрядность).
Я попробовал обе программы и пока остановил свой выбор на BOSSA. Она занимает мало места, у нее простой интерфейс и она стабильнее работает. Но SAM-BA в любом случае нужно скачать, чтобы установить USB драйвер для микроконтроллера SAM3S4B.
Далее речь пойдет о работе в ОС Windows.
После скачивания и установки программы SAM-BA и патча, нужно поставить драйвера. Если загрузка прошивки будет выполняться по USB, то процедура выглядит следующим образом.
Подсоединяем плату Karma-SAM3S к компьютеру по USB (этот разъем на плате подписан). Подаем питание, кратковременно нажимаем кнопку ERASE, а затем RESET. Микроконтроллер запустит загрузчик, а операционная система обнаружит новое устройство и начнет поиск драйверов.
Драйвера лежат в папке, куда была установлена программа SAM-BA. Например у меня путь к драйверам такой: C:\Program Files (x86)\Atmel\sam-ba_2.12\drv
В идеале операционная система сама найдет нужные драйвера и через некоторое время в диспетчере устройств в разделе порты появится AT91 USB to Serial Converter. Однако, скорее всего придется указывать путь вручную.
Для загрузки прошивки через USB-UART преобразователь, установленный на плате Karma-SAM3S, нужно поставить драйвера для микросхемы CP2102. Их можно скачать с сайта производителя - SiLabs.
Когда драйвер установлен, можно запускать программу SAM-BA.
При запуске SAM-BA появится окно, в котором нужно выбрать порт и тип платы. Если не знаете номер порта, то его можно посмотреть в диспетчере устройств. Тип платы нужно установить такой - at91sam3s4-ek.
После нажатия кнопки Connect должно появится основное окно программы SAM-BA. Если этого не произошло или открылось окно с предупреждениями - перезагрузите микроконтроллер и снова запустите SAM-BA.
Чтобы загрузить прошивку, на вкладке Flash кажите путь к файлу и нажмите на кнопку Send File. Обратите внимание файл прошивки имеет расширение bin.
Когда прошивка будет загружаться, откроется окно Lock region(s), которое предложит установить Lock биты для защиты флэш памяти. Нажимаем нет.
Когда загрузка завершится, запускаем скрипт Boot from Flash (GPNVM1), чтобы микроконтроллер запускался из флэш памяти, и нажимаем на плате кнопку Reset.
Все, микроконтроллер будет выполнять записанную в него программу.
Чтобы повторно записать прошивку в микроконтроллер, нужно закрыть программу SAM-BA, активировать загрузчик микроконтроллера и снова запустить ее. К сожалению, без перезагрузки SAM-BA не устанавливает связь с микроконтроллером. По-крайней мере я не понял, как это сделать и поэтому она мне и не нравится.
Устанавливаем программу BOSSA и драйвера (описано выше).
Подключаем плату Karma-SAM3S к компьютеру, используя один из USB разъемов. Активируем загрузчик микроконтроллера и запускаем программу BOSSA.
Нажимаем кнопку Auto-Scan, чтобы BOSSA установила связь с загрузчиком микроконтроллера. Если это удалось, то внизу программы отобразится статус "Connected" и микроконтроллер, который определился, - "ATSAM3S4". Если связь не установилась, нужно сбросить микроконтроллер и снова нажать Auto-Scan.
Также можно выбрать последовательный порт вручную.
Далее указываем путь к прошивке (*.bin) и нажимаем Write. Начнется загрузка.
Для повторной записи прошивки нужно активировать загрузчик микроконтроллера и нажать в программе BOSSA кнопку Auto-Scan. Если BOSSA не подключится к загрузчику с первого раза, нужно сбросить его и снова нажать Auto-Scan. Как правило, со второго раза программа устанавливает связь.
Бут загрузчик запускает программы, допускающие загрузку и/или выгрузку в любую память микроконтроллера.
В первую очередь он инициализирует последовательный порт отладчика DBGU и порт USB контроллера.
Далее запускается SAM-BA™, ожидающий обмена через USB или последовательный порт DBGU.
22.2 Работа бут загрузчика
Работу бут загрузчика поясняют рис.22-1 и рис.22-2.
Рис.22-1. Работа бут загрузчика при наличии USB
Рис.22-2. Работа бут загрузчика при отсутствии USB
22.3 Инициализация микроконтроллера со встроенным USB-портом
Инициализация происходит в следующей последовательности:
- инициализация FIQ
- инициализация стека для режима супервизора ARM
- установка контроллера встроенной Flash памяти
- проверка наличия внешнего тактового генератора
- определение частоты основного тактового генератора в случае отсутствия внешнего
- включение основного тактового сигнала от основного тактового генератора
- копирование кода в SRAM
- инициализация переменных
- установка ФАПЧ: ФАПЧ инициализируется для получения частоты 48 МГц необходимой для работы USB
- запрет Watchdog-а и разрешение пользовательского сброса
- инициализация USB порта
- выполнение загрузки SAM-BA (см. пункт 22.5)
22.4. Инициализация микроконтроллера без встроенного USB-порта
Инициализация происходит в следующей последовательности:
- инициализация FIQ
- инициализация стека для режима супервизора ARM
- установка контроллера встроенной Flash памяти
- проверка наличия внешнего тактового генератора
- определение частоты основного тактового генератора в случае отсутствия внешнего
- включение основного тактового сигнала от основного тактового генератора
- копирование кода в SRAM
- инициализация переменных
- установка ФАПЧ: ФАПЧ инициализируется для получения частоты 48 МГц
- запрет Watchdog-а и разрешение пользовательского сброса
- выполнение загрузки SAM-BA (см. пункт 22.5)
22.5. Загрузка SAM-BA.
При загрузке SAM-BA производится
- ожидание на время определения USB устройств
- автоматическое определение скорости работы (см. рис.22-3)
- с момента определения интерфейса связи программа работает в бесконечном цикле до появления команд, указанных в таблице 22-1
Рис.22-3. Автоматическое определение скорости работы
Таблица 22-1. Исполняемые команды SAM-BA загрузчика
Команды записи: Запись байта (О), половины слова (Н) или слова (W).
- Адрес: Адрес в шестнадцатеричной форме.
- Значение: байт, половина слова или слово в шестнадцатеричной форме.
- Выход:`>`.
Команды чтения: Чтение байта (o), половины слова (h) или слова (w).
- Адрес: Адрес в шестнадцатеричной форме.
- Выход: байт, половина слова или слово в шестнадцатеричной форме после`>`.
- Адрес: Адрес в шестнадцатеричной форме.
- Выход:`>`.
Замечание. Выполнение этой команды завершается при появлении приглашения `>`.
Прием файла (R) : Прием данных в файл начиная с указанного адреса.
- Адрес: Адрес в шестнадцатеричной форме.
- NbOfBytes: число байт для приема в шестнадцатеричной форме.
- Выход :`>`.
Переход (G): переход к указанному адресу и исполнение кода программы.
- Адрес: Адрес перехода в шестнадцатеричной форме.
- Выход :`>`.
Показать версию (V): выдача версии загрузчика SAM-BA.
22.5.1 Последовательный порт отладчика DBGU
Связь осуществляется через последовательный порт DBGU на скорости 115200 Бод при 8 битах данных, бите нечетности и одним стоп бите.
Команды отправки / приема файла используют протокол обмена Xmodem. Для передачи исполняемого файла можно использовать любой терминал, поддерживающий данный протокол. Размер бинарного файла зависит от объема встроенной SRAM. В любом случае размер бинарного файла должен быть меньше объема SRAM, так как протокол Xmodem использует часть SRAM для своей работы.
22.5.2 Протокол Xmodem
Протокол Xmodem поддерживает блоки размером 128 байт. Этот протокол применяет двухбайтное контрольное поле CRC-16 для определения максимального числа битовых ошибок.
Xmodem протокол вместе с контрольным полем CRC обеспечивает надежный прием и передачу пакетов. Каждый передаваемый пакет имеет структуру
На рис.22-4 показана схема обмена по протоколу Xmodem.
Рис. 22-4. Пример обмена по протоколу Xmodem
22.5.3 USB порт микроконтроллера
Для работы USB порта требуется наличие тактового сигнала 48 МГц, который программируется при инициализации конфигурированием PLLB.
Идентификатор производителя для фирмы Atmel 0x03EB. Идентификатор микроконтроллера 0x6124. Эти идентификаторы используются управляющими операционными системами для установки необходимых драйверов. В Windows системах INF файлы содержат соответствия между идентификатором производителя и идентификатором изделия.
Фирма Atmel предоставила пример INF файла, в котором микроконтроллер определяется как дополнительный последовательный порт, а также специальный драйвер, использующий SAM-BA приложение: atm6124.sys. Дополнительная информация приведена в документе "USB Basic Application", под номером 6123.
22.5.3.1 Процесс перечисления (регистрация устройств USB)
USB-протокол является протоколом master/slave. При этом управляющее устройство host начинает "перенумерацию", посылая запросы внешнему устройству через управляющую конечную точку. Микроконтроллер использует стандартные запросы согласно USB спецификации.
Таблица 22-2. Используемые стандартные запросы
Запрос | Определение |
GET_DESCRIPTOR | Возвращает конфигурационное значение текущего устройства. |
SET_ADDRESS | Устанавливает адрес устройства для последующего доступа. |
SET_CONFIGURATION | Установка конфигурации устройства. |
GET_CONFIGURATION | Возвращает конфигурационное значение текущего устройства. |
GET_STATUS | Возвращает статус выбранного получателя. |
SET_FEATURE | Установка/разрешение специальных признаков. |
CLEAR_FEATURE | Сброс/запрет специальных признаков. |
Микроконтроллер использует некоторые запросы, определенные в CDC классе.
Таблица 22-3. Используемые запросы CDC класса
Неиспользуемые запросы заблокированы.
22.5.3.2 Соединение через конечные точки
Если команда требует ответа, host может послать IN транзакцию для получения ответа.
22.6 Программные и хардварные ограничения
SAM-BA загрузчик копирует себя в память SRAM и использует часть внутренней SRAM для хранения переменных и стека. Остальное пространство памяти отведено для пользователя и составляет:
SamFirm
версия: 1.4.2 / 0.3.6.3
Последнее обновление программы в шапке: 15.07.2021
Краткое описание:
Скачивание послед. оф. прошивок для устройств ряда Samsung.
Описание:
SamFirm (сокр. от Samsung Firmware) - программа для скачивания последних прошивок для устройств серии Samsung. Качает быстро и стабильно, без всякого гемороя и регистрации, а также СМС и просьбы выкл. AdBlock. Пишем в поля нужные данные и качаем. После распаковываем и шьем Odin'ом.
- Framework можно загрузить на свое корыто тут.
Можно ещё через CMD, но там геморой, да и не всегда точно показывает из-за разных сборок Win.
- Прекрасно видно что у меня стоят версии 2.0, 3.0, 3.5 и 4.7.2. Подмечу что версии выше 4.0.0, как в данном случае, заменяют версию 4.0.
- Region: Указываем свой регион. (Для деталей см. Региональные коды по алфавиту)
- Если нам нужно, что-бы он сам определил части прошивки, ставим Auto. Если надо конкретные - нажимаем Manual и вписываем части проши.
- По умолчанию катается однофайловая - для скачки многофайловой (сервисной) надо поставить галку на Binary Nature.
- Если нужна проверка сумм и т.д. - ставим галку на Check CRC32. Я обычно не ставлю, нафиг, и так катает.
- Смотрим что-бы обязательно стояла галка на Decrypt automatically, а то скачаем, и не расшифруем :P
>>> Нажимаем Check Update, ждемс пару сек. и Download. По окончании закачки и расшифровки, распаковываем архив с прошой и шьемс через Odin.
*Пункт 2 по усмотрению.
*Пункт 4 не обязателен.
- ЮАР (Южная Африка):
- MID
- ARB
- XSG
- AFR
- ITO
- XFA
- XFC
- XFM
- XFV
- XFE
Русский интерфейс: Да
Готовые настройки, надо лишь вписать модель и регион.Было слушно, поэтому я замутил архив/XML нужных настроек - заходим, вписываем регион и модель, качаем. Все!
- ZIP'ник: Просто распаковать и пользоваться - SamFirm v0.3.6 [Mod].zip ( 4.93 МБ )
Читайте также: