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

    

Здравствуйте, имеется в наличии процессорный модуль Салют-ЭЛ24ПМ2.

Являюсь новичком, поэтому вопросы будут глупые.

Интересует вопрос, как можно загрузить Linux/Buildroot во внутреннюю память ПЗУ mmc0?

Какие требования к разделам? И что нужно знать, чтобы осуществить это.

В мануале это явно не описывается, к сожалению. Либо я со своим скудным опытом не могу понять.

 

Надеюсь на помощь, спасибо.

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


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

Интересует вопрос, как можно загрузить Linux/Buildroot во внутреннюю память ПЗУ mmc0?

mmc0 это микросхема eMMC, установленная на процессорном модуле Салют-ЭЛ24ПМ2.

 

Для этого можно использовать утилиту mcom02_flash_mmc.py из пакета mcom02-flash-tools.

Ссылка на github: https://github.com/elvees/mcom02-flash-tools

Ссылка на дистрибутив: ftp://ftp.elvees.com/1892VM14YA/linux/Buildroot/v2.9/mcom02-buildroot-v2.9.0-2018-09-21.tar.bz2 . Путь относительно корня архива:

Процесс установки данного пакета в Windows описан в п.3 документа «Инструкция по прошивке SPI флеш-памяти модулей на базе 1892ВМ14Я».

В ОС Linux пакет Python 2.7 обычно уже установлен.

Необходимо выполнить одно из предложенных ниже  действий:

pip install --upgrade <mcom02_flash_tools>

для установки из распакованного архива,

где <mcom02_flash_tools> — путь к архиву пакета или директории, содержащей распакованный пакет.

pip install --upgrade git+https://github.com/elvees/mcom02-flash-tools.git

для установки из репозитория на github.

При работе в OC Windows путь установки python/имя пользователя/имя компьютера не должны содержать кириллических символов.

После установки пакета необходимо:

Процесс записи образа на SD-карту в ОС Linux описан в п.6 документа «Дистрибутив ОС GNU/Linux на базе Buildroot для 1892ВМ14Я.Руководство системного программиста».

Запись образа SD-карты в ОС Windows можно выполнить с помощью программы Win32DiskImager (https://sourceforge.net/projects/win32diskimager/).

Необходимо использовать загрузчик U-boot с версией, соответствующей версии используемого дистрибутива. 

  • Выполнить загрузку ОС с SD-карты:
  1. Установить джампер XP4 в положение "uSDcard";
  2. Установить переключатели BOOT (SA1) в положение «011» (загрузка из SPI-Flash);
  3. Подключить разъем XS13 к ПЭВМ c помощью кабеля MiniUSB-USB; 
  4. Запустить терминал COM-порта;
  5. Подать питание на отладочный модуль;
  6. Остановить автозагрузку U-Boot отправкой любого символа в терминал  COM-порта; 
  7. Выполнить команды:
env set mmcdev 1 //устанавливаем  загрузку и импорт переменных окружения с SD-карты;

saveenv //Сохраняем изменения

    8. Перезагрузить отладочный модуль.

 

  • Прошить необходимый образ SD-карты в eMMC  (mmc0) c помощью утилиты mcom02_flash_mmc.py.

1. Подключить отладочный модуль к сети;

2. Подать питание на отладочный модуль;

3. Дождаться появления  запроса входа в систему в терминале COM-порта;

4.На ПК запустить процесс прошивки eMMC:

mcom_flash_mmc.py <bord ip or host name >  </dev/ mmcblk0>  <path to img>

, где <bord ip or host name >  - ip-адрес или сетевое имя отладочного модуля;

</dev/ mmcblk0> - имя устройства, в которое будет записан образ. В Вашем случае необходимо использовать /dev/ mmcblk0 т.е. eMMC;

<path to img> - путь до образа SD-карты, который необходимо прошить в eMMC.

5. Дождаться окончания процесса прошивки (Verifying... ОК).

 

  • Проверить работоспособность записанного образа:

1. Выполнить перезагрузку отладочного модуля;

2.Остановить автозагрузку U-Boot отправкой любого символа в терминал  COM-порта;

3. Выполнить команды:

env set mmcdev 0 //устанавливаем  загрузку и импорт переменных окружения с eMMC;

saveenv //Сохраняем изменения

4. Перезагрузить отладочный модуль;

5.Убедиться в успешном запуске ОС с eMMC.

Возникающие вопросы лучше адресовать напрямую на support@elvees.com, чтобы сократить время ответа.

Изменено пользователем ELVEES R&D Center

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


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

Здравствуйте, спасибо огромное за столь быстрый и исчерпывающий ответ. 

Все работает замечательно.

Скажите, алгоритм для прошивки NAND Flash идентичный?

И последний вопрос по поводу загрузки Linux по TFTP.

Установил ip адреса setenv ipaddr <ip_address> и setenv serverip <server_ip_address>

Задал параметры запуска Linux setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rwrootwait'

Установил команду загрузки setenv bootcmd 'tftpboot; bootz ${loadaddr} - ${fdtcontroladdr}'

На хостмашине (Windows 10) запустил TFTP server (TftpServ.exe) выбрал папку к образу SD карты (к разделу Boot).

Запустил сервер.

Плата виснет и требует рестарта. 

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
43 minutes ago, sweetpirate said:

 

Скажите, алгоритм для прошивки NAND Flash идентичный?

Нет, утилита mcom_flash_mmc.py не подходит для прошивки NAND-Flash. 

Инструкция по прошивке NAND-Flash представлена в п.5.3.1. документа "Загрузчик U-Boot для 1892ВМ14Я. Руководство пользователя".

47 minutes ago, sweetpirate said:

Задал параметры запуска Linux setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rwrootwait'

Установил команду загрузки setenv bootcmd 'tftpboot; bootz ${loadaddr} - ${fdtcontroladdr}'

На хостмашине (Windows 10) запустил TFTP server (TftpServ.exe) выбрал папку к образу SD карты (к разделу Boot).

Запустил сервер.

Плата виснет и требует рестарта. 

Настройку TFTP Вы выполняете правильно.

В U-Boot 2017.07.0.14 (из Buildroot v.2.9) возникает ошибка при загрузке через TFTP.

Ошибка будет исправлена в следующих выпусках дистрибутива Buildroot.

Если Вам требуется загрузка по TFTP, рекомендуем Вам использовать Buildroot v.2.8 и соответствующий загрузчик U-Boot.

 

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


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

Здравствуйте, попытался загрузить Linux по tftp. Столкнулся с проблемой.

При попытке загрузиться выдаётся сообщение

ARP Retry count exceeded; starting again.

Я так понимаю проблема в ftp server-e?

Хотя с хост машины он пингуется.

А вот боард не пингуется(Destination host unreachable)

 

Буду благодарен за помощь, спасибо.

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


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

Разобрался, проблема была действительно в настройках tftp-сервера. 

Как я понимаю таким способом можно загрузить только ядро ОС, которое, в свою очередь, запускает файловую систему, расположенную на eMMC или SD устройстве. Что не совсем подходит.

Вопрос: возможно ли вместе с ядром ОС загрузить и файловую систему по TFTP, чтобы имелась возможность перепрошить модуль eMMC?

 

Спасибо.

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

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


Ссылка на сообщение
Поделиться на другие сайты
20 hours ago, sweetpirate said:

Вопрос: возможно ли вместе с ядром ОС загрузить и файловую систему по TFTP, чтобы имелась возможность перепрошить модуль eMMC?

Можно включить в состав ядра файловую систему в виде диска c файловой системой в ОЗУ.

Сделать это можно в конфигураторе  ядра Linux (make menuconfig). 

Там же указывается путь до каталога с rootfs.

 

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


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

Здравствуйте, появилось несколько новых вопросов.

 

Каким образом можно запустить Linux на одном arm-ядре?

Возможно ли назначить различные модули ОЗУ для каждого ядра?

Например, первый модуль ОЗУ используется для Linux, который запущен на 0 ядре.

И, следовательно, второй модуль выделен для baremetal приложений, которые работают на втором ядре?

И как, в таком случае, возможен обмен данными между Linux и baremetal приложением? 

И имеется ли доступ к виртуальным регистрам arm ядер из Linux-a?   

Спасибо.

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

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


Ссылка на сообщение
Поделиться на другие сайты
On 12/17/2018 at 10:26 AM, sweetpirate said:

Каким образом можно запустить Linux на одном arm-ядре?

Для этого существует параметр запуска ядра  nosmp.

On 12/17/2018 at 10:26 AM, sweetpirate said:

Возможно ли назначить различные модули ОЗУ для каждого ядра?

Например, первый модуль ОЗУ используется для Linux, который запущен на 0 ядре.

И, следовательно, второй модуль выделен для baremetal приложений, которые работают на втором ядре?

Тут возможны два варианта: 

1.Можно ограничить использование памяти (SDRAM) с помощью параметра запуска ядра mem=;

2. Можно использовать другой тип памяти (SRAM) для второго ядра.

Во втором случае необходимо будет настроить блок NORMPORT микросхемы 1892ВМ14Я в загрузчике U-boot. 

On 12/17/2018 at 10:26 AM, sweetpirate said:

И как, в таком случае, возможен обмен данными между Linux и baremetal приложением?

Для этой цели можно использовать блок Mailbox микросхемы 1892ВМ14Я.

On 12/17/2018 at 10:26 AM, sweetpirate said:

И имеется ли доступ к виртуальным регистрам arm ядер из Linux-a?

Не понятно о каких регистрах идет речь.

 

Описанный Вами режим работы потребует существенной доработки загрузчика U-boot. 

При разработки baremetal-приложения следует учесть тот факт, что контроллер прерываний (GIC) общий для двух ARM-ядер. 

 

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


Ссылка на сообщение
Поделиться на другие сайты
On 12/10/2018 at 1:48 PM, sweetpirate said:

Здравствуйте, имеется в наличии процессорный модуль Салют-ЭЛ24ПМ2.

Являюсь новичком, поэтому вопросы будут глупые.

Интересует вопрос, как можно загрузить Linux/Buildroot во внутреннюю память ПЗУ mmc0?

Какие требования к разделам? И что нужно знать, чтобы осуществить это.

В мануале это явно не описывается, к сожалению. Либо я со своим скудным опытом не могу понять.

 

Надеюсь на помощь, спасибо.

А где покупали модуль и почем?

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


Ссылка на сообщение
Поделиться на другие сайты
On 12/26/2018 at 12:27 PM, oldparrot said:

А где покупали модуль и почем?

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

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


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

Здравствуйте, чтобы не создавать множество тем, буду писать тут.

Сразу прошу прощения, если мои вопросы покажутся глупыми для профессионала, тк я только учусь.

И так, потихоньку вникаю во всю инфраструктуру. И вопросов становится все больше.

 

На данный момент - это вопрос о совместном запуске Buildroot и baremetal приложений. 

Первый момент: в руководстве написано, что существуют 2 варианта использования приложений: с возвратом и без возврата в u-boot. При выполнении примеров возврата в u-boot  не происходит(тк приложение уходит в бесконечный цикл), т.е. возврат в u-boot происходит только после завершения работы baremetal приложения? И только тогда можно запустить Linux?

И второе, существует ли возможность запуска на исполнение baremetal приложений из под Linux-a. (В этом случае Linux будет запущен на CPU0, CPU1 для исполнения baremetal и управления DSP). Т.е. во время работы Linux-a при выполнении определенных условий имеется необходимость загружать различные baremetal-приложения.

 

И еще вопрос, можно ли получить, при разработке ПО, доступ к регистрам CPU и DSP из под Linux?

 

Надеюсь не сильно запутанно описал свои вопросы.

 

Спасибо.

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


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

Рискну предположить, что запуск конфигурации, где одно ядро занято Linux, а второе bare metal - это штатная возможность, которая может быть много где описана, не обязательно лишь для этого процессора. Аналогично и с u-boot. Запуск кода на DSP независимо от ОС это вроде штатная возможность, про регистры ничего не скажу... 

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


Ссылка на сообщение
Поделиться на другие сайты
On 1/11/2019 at 2:25 PM, sweetpirate said:

Первый момент: в руководстве написано, что существуют 2 варианта использования приложений: с возвратом и без возврата в u-boot. При выполнении примеров возврата в u-boot  не происходит(тк приложение уходит в бесконечный цикл), т.е. возврат в u-boot происходит только после завершения работы baremetal приложения? И только тогда можно запустить Linux?

При запуске U-Boot (начиная с версии v2017.07.0.7) останавливает ядро CPU1 и отключает его домен питания. 
Предполагается, что U-Вoot загружает приложение используя только одно ядро CPU. 
Само приложение может включить домен питания и  использовать второе ядро.

Вы можете доработать U-Вoot так, чтобы он запускал baremetal-приложение на ядре CPU1.

On 1/11/2019 at 2:25 PM, sweetpirate said:

И второе, существует ли возможность запуска на исполнение baremetal приложений из под Linux-a. (В этом случае Linux будет запущен на CPU0, CPU1 для исполнения baremetal и управления DSP). Т.е. во время работы Linux-a при выполнении определенных условий имеется необходимость загружать различные baremetal-приложения.

Штатно такой возможности нет. 
Для добавления такой возможности необходимо разработать отдельный драйвер.

На данный момент ведётся разработка драйвера Linux  для DSP-кластера DELcore-30M.
Драйвер позволит запускать задачи на DSP-ядрах и получать результаты в user space.
 

On 1/11/2019 at 2:25 PM, sweetpirate said:

И еще вопрос, можно ли получить, при разработке ПО, доступ к регистрам CPU и DSP из под Linux?

Доступ к регистрам разрешен из ядра Linux (kernel space).


Можно реализовать в драйвере мапировние регистров в пользовательское пространство.

Такой подход не рекомендуется, т.к. некорректная работа пользовательского приложения может нарушить работоспособность всей системы. 
 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти