OSDev

для всех
Текущее время: 28 мар 2024, 14:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Исходники Cortex-M1 и Cortex-M3
СообщениеДобавлено: 27 ноя 2018, 21:13 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Собсно, сабж, ежели кому интересно. В зашифрованном виде их ARM совместно с Xilinx'ом распространяют для использования на Xilinx'овых ПЛИСинах. Здесь исходники расшифрованы и разделены на файлы (не все модули свалены в пару файлов, а каждый в отдельном файле), ну и плюс в Cortex-M1 выкинуто почти всё, не относящееся собственно к процессору. В Cortex-M3 оставлены все файлы, поскольку там присутствует полная отладочная инфраструктура и т.п. полезности (в -M1 большей части этого просто нет, а оставшаяся -- кастрированная).

Собираться в ISE собирается (вообще-то предназначено было для Vivado, ISE не поддерживается уже лет пять, но я предпочитаю ей пользоваться). Квартус поставил-таки, -M3 в общем и целом собирается (ругается только на модуль ITCM, но это -- встроенное в ПЛИС ОЗУ, а не сам проц и прочая инфраструктура, и его просто надо, похоже, подпилить, чтобы соответствовал ожиданиям Квартуса).


Вложения:
Cortex-M3.7z [325.3 КБ]
Скачиваний: 271
Cortex-M1.7z [46.78 КБ]
Скачиваний: 243
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1
СообщениеДобавлено: 28 ноя 2018, 13:59 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Обалдеть! Может быть у тебя ещё завалялись расшифрованные исходники NIOS II (или ссылка на них)?

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1
СообщениеДобавлено: 28 ноя 2018, 15:40 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Неа, я ж с Альтерой дела не имел. Кортех-М3 вот есть со всеми его причиндалами, но надо дорезать по кускам. Ну и плюс все IP, что в ISE и Vivado присутствуют, тоже есть (и тоже надо пилить на части).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1 и Cortex-M3
СообщениеДобавлено: 06 дек 2018, 15:33 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Вообще, впечатление такое, что в ARM пишут, мягко говоря, неаккуратно, а зачастую и попросту неэффективно. Вот, наткнулся на такое, ковыряя NVIC (контроллер прерываний) в Cortex-M3:

Код:
  assign int_pend_we = (opt_int_pend!=prev_int_pend);

  always @ (posedge fclk or negedge hreset_n)
    if (!hreset_n)
      prev_int_pend <= {INTS{1'b0}};
    else if (int_pend_we)
      prev_int_pend <= opt_int_pend;


Как видно, значения с шины opt_int_pend (это линии запросов прерываний) сохраняются в регистре prev_int_pend только в случае, если установлен int_pend_we, а он, в свою очередь, установлен, если содержимое prev_int_pend не совпадает с opt_int_pend. Таким образом, если состояние линий запросов прерываний не изменилось, регистр не меняется, если изменилось -- меняется, а соответственно, данный сигнал абсолютно бессмысленен. Между тем, при синтезе он съедает энное количество ресурсов. Например, при синтезе данного модуля для Virtex-6 при 256 запросах прерываний (для Cortex-M3 оно заявлено как максимально возможное, хотя сама архитектура допускает до 512, из коих 16 всегда стандартные, а остальные -- внешние линии IRQ) получилась потребность в 769 триггерах и 1490 LUTах, а при выкидывании сигнала opt_int_pend и простом приёме в регистр каждый такт -- те же 769 триггеров, но 1150 LUTов, т.е. на 350 меньше.

UPD. Дооптимизировал сей модуль и получил в итоге 877 LUTов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1 и Cortex-M3
СообщениеДобавлено: 07 дек 2018, 20:42 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Такие хвосты, как правило, получаются, когда сначала была одна версия кода, затем её упростили/изменили, а понять логику получившегося было некогда или неохота. Иногда кусок кода десять раз переписывается. Я иногда замечаю сходные моменты в своём коде, поэтому для надёжности иногда возвращаюсь к старому коду, перечитываю, вникаю и оптимизирую.
А вообще хороших кодеров очень и очень мало, поэтому в любом достаточно большом проекте неизбежно будут попадаться откровенные ляпы. Хорошие кодеры в кодерах не задерживаются, перерастают в разработчиков и архитекторов.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1 и Cortex-M3
СообщениеДобавлено: 09 дек 2018, 01:16 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Там, наверное, ещё должен MicroBlaze заваляться... :)

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исходники Cortex-M1 и Cortex-M3
СообщениеДобавлено: 09 дек 2018, 03:35 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Есть, и в ISE, и в Vivado. Только резать надо-с, ибо они хранят все модули IP в виде одного файла, как правило. Он даже не всегда может быть напрямую синтезирован из-за дублирования объявлений (вероятно, когда синтез идёт из зашифрованного IP, это как-то разруливается специальным образом).

А кто-нибудь, кстати говоря, сравнивал по функциональным возможностям MicroBlaze и NIOS?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB