Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

AM3358 и программирование на ассемблере

Пт фев 05, 2016 23:10:04

Фактически готов startup code на чистом ассемблере для процессора Sitara AM335x. Код представляет собой пошаговую настройку функциональных модулей - аналогично любому кортексу. Поставили битик, дождались флажка, записали регистр, другой, третий... Так постепенно камушек оживает и выходит на 100% рабочий режим. В качестве платформы разработки использован BeagleboneBlack с процессором AM3358BZCZ100. + UART шнурок для заливки кода в камушек и получения отладочных сообщений. + монитор, подключенный через HDMI - DVI-D переходник.

Котейки! Я трудился целый месяц, непокладая лапок. И добился рабочего результата. Анонс выложил здесь. Код нужно почистить, ещё немного осознать всё это (было трудно) и начну выкладывать.

Это была целая эпопея. У нас информации пока ноль, а на западе народ активен и копают большие кортексы на ассемблере только так. Мне помогали, делились фрагментами. Узнав, что я делаю чистый startup на ассемблере - радовались и начинали ждать, как говорится. Я понимаю, что именно поднять вот этот фундамент, не так просто. Нужен особый склад ума. Нулевой цикл - это вам не сказки.. да..

Но я сделал его. Кроме самого кода, хочу собрать на сайте информацию по азам работы с подобного рода камушками. Ведь у них же нет встроенной флешки - что делать? Кому мяукать? Куда бежать? Оказывается выход есть!

Может быть кто-то уже пытался самостоятельно действовать в этом направлении?

Владельцы Beaglebone - отзовитесь! Есть идея потестировать код на предмет стабильности, могу выкладывать бинарники.

Re: AM3358 и программирование на ассемблере

Сб фев 06, 2016 13:25:09

Мяукните! писал(а):Фактически готов startup code на чистом ассемблере для процессора Sitara AM335x. Код представляет собой пошаговую настройку функциональных модулей - аналогично любому кортексу. Поставили битик, дождались флажка, записали регистр, другой, третий... Так постепенно камушек оживает и выходит на 100% рабочий режим. В качестве платформы разработки использован BeagleboneBlack с процессором AM3358BZCZ100. + UART шнурок для заливки кода в камушек и получения отладочных сообщений. + монитор, подключенный через HDMI - DVI-D переходник.
Чисто из любопытства, а в чем смысл данной затеи? Чип то довольно мощный, вряд ли найдется энтузиаст, нарисующий драйвера для периферии. Для этой платы существуют сборки линупса, если не устраивает скорость, или занимаемый объем то и ртос типа 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 тысяч инструкций кода и было разработано одним программистом в течение нескольких лет", самописная ос реального времени без элементов синхронизации, короче бесполезная и временами опасная хрень.

Re: AM3358 и программирование на ассемблере

Чт фев 11, 2016 23:11:45

Довольно любопытная информация.

На сайте 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-битная микросхемка памяти. Зрители из партера, позвените своими бриллиантами и кошельками! Зрители с галёрки - пошипите и пофыркайте! :)

Re: AM3358 и программирование на ассемблере

Пн июн 12, 2023 20:29:39

чем компилировать то? что-то в Keil я не нашел под него ничего.
Ответить