Фактически готов startup code на чистом ассемблере для процессора Sitara AM335x. Код представляет собой пошаговую настройку функциональных модулей - аналогично любому кортексу. Поставили битик, дождались флажка, записали регистр, другой, третий... Так постепенно камушек оживает и выходит на 100% рабочий режим. В качестве платформы разработки использован BeagleboneBlack с процессором AM3358BZCZ100. + UART шнурок для заливки кода в камушек и получения отладочных сообщений. + монитор, подключенный через HDMI - DVI-D переходник.
Котейки! Я трудился целый месяц, непокладая лапок. И добился рабочего результата. Анонс выложил здесь. Код нужно почистить, ещё немного осознать всё это (было трудно) и начну выкладывать.
Это была целая эпопея. У нас информации пока ноль, а на западе народ активен и копают большие кортексы на ассемблере только так. Мне помогали, делились фрагментами. Узнав, что я делаю чистый startup на ассемблере - радовались и начинали ждать, как говорится. Я понимаю, что именно поднять вот этот фундамент, не так просто. Нужен особый склад ума. Нулевой цикл - это вам не сказки.. да..
Но я сделал его. Кроме самого кода, хочу собрать на сайте информацию по азам работы с подобного рода камушками. Ведь у них же нет встроенной флешки - что делать? Кому мяукать? Куда бежать? Оказывается выход есть!
Может быть кто-то уже пытался самостоятельно действовать в этом направлении?
Владельцы Beaglebone - отзовитесь! Есть идея потестировать код на предмет стабильности, могу выкладывать бинарники.
AM3358 и программирование на ассемблере
- Мяукните!
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Пн апр 20, 2015 14:00:32
- Контактная информация:
AM3358 и программирование на ассемблере
NXP i.MX7D на чистом ассемблере
- Реклама
- Neekeetos
- Держит паяльник хвостом
- Сообщения: 993
- Зарегистрирован: Пн сен 18, 2006 11:16:05
- Откуда: Тула
- Контактная информация:
Re: AM3358 и программирование на ассемблере
Чисто из любопытства, а в чем смысл данной затеи? Чип то довольно мощный, вряд ли найдется энтузиаст, нарисующий драйвера для периферии. Для этой платы существуют сборки линупса, если не устраивает скорость, или занимаемый объем то и ртос типа QNX - http://www.qnx.com/partners/ti/ или же взять ртос попроще от самого техаса - sys/bios - http://www.ti.com/tool/sysbiossdk-ind-sitara . Думаю подобного базового функционала достичь путем программирования на ассемблере нереально, максимум получится что то вроде https://ru.wikipedia.org/wiki/Therac-25 , "20 тысяч инструкций кода и было разработано одним программистом в течение нескольких лет", самописная ос реального времени без элементов синхронизации, короче бесполезная и временами опасная хрень.Мяукните! писал(а):Фактически готов startup code на чистом ассемблере для процессора Sitara AM335x. Код представляет собой пошаговую настройку функциональных модулей - аналогично любому кортексу. Поставили битик, дождались флажка, записали регистр, другой, третий... Так постепенно камушек оживает и выходит на 100% рабочий режим. В качестве платформы разработки использован BeagleboneBlack с процессором AM3358BZCZ100. + UART шнурок для заливки кода в камушек и получения отладочных сообщений. + монитор, подключенный через HDMI - DVI-D переходник.
Информация по RLC mini находится >тут<
- Мяукните!
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Пн апр 20, 2015 14:00:32
- Контактная информация:
Re: AM3358 и программирование на ассемблере
Довольно любопытная информация.
На сайте ARM выложены результаты замеров скорости копирования блоков ОЗУ - ОЗУ. Цифры выглядят нереальными. Сотни мегабайт в секунду!
Я провёл аналогичный тест на beaglebone. Это такой же ARMv7 Cortex-A8 и тестовый код с сайта я просто скопировал мышкой. Тактовая частота ядра 1 ГГц. Замеры производились на пересылке блока в 100.000 байт между L3 и DDR3. В качестве хронометра, использовался встроенный в ядро счётчик машинных циклов, вроде DWT. Я проверил только самый быстрый и самый медленный вариант кода. И вот что получилось.
Классическое копирование, считали в регистр - сохранили в память..
Word by Word memory copy:
L3 -> DDR = 600 мб/сек
DDR -> DDR = 173 мб/сек
Множественное чтение / сохранение с ускорителем на PLD
NEON memory copy with preload:
L3 -> DDR = 1077 мб/сек
DDR -> DDR = 412 мб/сек
Инструкция PLD даёт ещё 10-20% к скорости. Нужно учитывать, что в процессоре заряжен LCD контроллер, с установленным разрешением 1680*1050*60. А это подкачка буфера >200 мб/сек. Если LCD отключен, процесс копирования ускоряется ещё процентов на 10.
Ну что же, отличный результат для такого малыша! Свыше гигабайта в секунду. А ведь это всего-навсего одна маленькая 16-битная микросхемка памяти. Зрители из партера, позвените своими бриллиантами и кошельками! Зрители с галёрки - пошипите и пофыркайте!
На сайте ARM выложены результаты замеров скорости копирования блоков ОЗУ - ОЗУ. Цифры выглядят нереальными. Сотни мегабайт в секунду!
Я провёл аналогичный тест на beaglebone. Это такой же ARMv7 Cortex-A8 и тестовый код с сайта я просто скопировал мышкой. Тактовая частота ядра 1 ГГц. Замеры производились на пересылке блока в 100.000 байт между L3 и DDR3. В качестве хронометра, использовался встроенный в ядро счётчик машинных циклов, вроде DWT. Я проверил только самый быстрый и самый медленный вариант кода. И вот что получилось.
Классическое копирование, считали в регистр - сохранили в память..
Word by Word memory copy:
L3 -> DDR = 600 мб/сек
DDR -> DDR = 173 мб/сек
Множественное чтение / сохранение с ускорителем на PLD
NEON memory copy with preload:
L3 -> DDR = 1077 мб/сек
DDR -> DDR = 412 мб/сек
Инструкция PLD даёт ещё 10-20% к скорости. Нужно учитывать, что в процессоре заряжен LCD контроллер, с установленным разрешением 1680*1050*60. А это подкачка буфера >200 мб/сек. Если LCD отключен, процесс копирования ускоряется ещё процентов на 10.
Ну что же, отличный результат для такого малыша! Свыше гигабайта в секунду. А ведь это всего-навсего одна маленькая 16-битная микросхемка памяти. Зрители из партера, позвените своими бриллиантами и кошельками! Зрители с галёрки - пошипите и пофыркайте!
NXP i.MX7D на чистом ассемблере
Re: AM3358 и программирование на ассемблере
чем компилировать то? что-то в Keil я не нашел под него ничего.

