You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If all unit tests passed successfully and all modules loaded, then command prompt will appear.
165
162
Now you can execute commands included in the configuration (`mods.conf`). You can start with ***help*** command which prints list of available commands.
166
163
167
164
Press ***ctrl+’A’*** and then `***x***` to exit from Qemu.
168
165
169
166
## Preliminaries to Mybuild build system
170
-
Embox is modular and configurable. Declarative program language "Mybuild" has been developed for these features. Mybuild allows to describe both single modules and whole target system.
167
+
Embox is modular and configurable. Declarative program language "Mybuild" has been developed for these features.
168
+
Mybuild allows to describe both single modules and whole target system.
171
169
172
170
A module is a base concept for build system. A module description contains: source files list, options which can be set for the module during configuration, and dependences list.
173
171
@@ -272,3 +270,14 @@ After running that QEMU waits for a connection from a gdb-client. Run gdb in the
272
270
The system starts to load.
273
271
274
272
At any moment in gdb terminal you can type <kbd>ctrl + C</kbd> and see the stack of the current thread (`backtrace`) or set breakpoints (`break <function name>`, `break <file name>:<line number>`).
273
+
274
+
## Connection of external repository
275
+
Embox allows to connect external repo to modules and templates. It's enough to specify root directory of repository for this purpose:
276
+
```
277
+
make ext_conf EXT_PROJECT_PATH=<your projects path>
278
+
```
279
+
To make templates visible through "make confload" and "make confload-" calls, connected repo has to have the next folder-structure:
280
+
```
281
+
<root_folder>/<project_name>/templates
282
+
```
283
+
Modules can be in random folders. Search is carried out, using *Mybuild* and **.my* files.
There is a support for several hardware (real or virtual) platforms based on each CPU architectures. It's requred to install own developer enviroment (cross-compiler and gdb) as described in "Cross-compiler installation"
Copy file name to clipboardExpand all lines: ru/embox_quick_start_ru.md
+34-43Lines changed: 34 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,30 +6,23 @@
6
6
```
7
7
$ git clone https://github.com/embox/embox
8
8
```
9
-
Либо скачиваем архивом из [https://github.com/embox/embox/releases](https://github.com/embox/embox/releases)
9
+
Либо скачиваем архивом из [https://github.com/embox/embox/releases](https://github.com/embox/embox/releases).
10
10
11
11
## Запуск в Windows (и MacOS)
12
-
13
12
### Выполните следующие шаги:
14
-
15
-
Скачайте актуальную версию PowerShell
13
+
Скачайте актуальную версию PowerShell:
16
14
17
15
[Алгоритм скачивания PowerShell для Windows](https://learn.microsoft.com/ru-ru/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3)
18
16
19
-
20
-
Зайдите в PowerShell под именем администратора и установите WSL2 (обратите внимание на требования к версии Windows)
17
+
Зайдите в PowerShell под именем администратора и установите WSL2 (обратите внимание на требования к версии Windows):
21
18
22
19
[Алгоритм установки WSL2](https://learn.microsoft.com/ru-ru/windows/wsl/install-manual)
23
-
24
-
25
20
```
26
-
Перед тем как перейти к следующему шагу обязательно обновите WSL1 до WSL2
27
-
(инструкция по ссылкам выше), в противном случае Embox не запустится под Windows
21
+
Перед тем как перейти к следующему шагу обязательно обновите WSL1 до WSL2
22
+
(инструкция по ссылкам выше), в противном случае Embox не запустится под Windows.
28
23
```
29
24
30
-
Скачайте Ubuntu из Microsoft Store
31
-
32
-
25
+
### Скачайте Ubuntu из Microsoft Store
33
26
Убедитесь, что у Вас стоит WSL версии 2, для этого введите в PowerShell команду:
34
27
```
35
28
wsl -l -v
@@ -45,12 +38,11 @@
45
38
sudo apt-get install python3
46
39
sudo apt-get install python-is-python3
47
40
```
48
-
49
41
Клонируйте себе версию проекта (используйте https или ssh):
Необходимые пакеты: make, gcc (кросс-компилятор под выбранную архитектуру, см. “Установка кросс-компилятора”).
74
-
Дополнительные пакеты (рекомендуется установить сразу): build-essential, gcc-multilib, curl, libmpc-dev, python.
75
-
Пример установки для Debian:
64
+
Необходимые пакеты: **make**, **gcc** (кросс-компилятор под выбранную архитектуру, см. “Установка кросс-компилятора”).
65
+
Дополнительные пакеты (рекомендуется установить сразу): **build-essential**, **gcc-multilib**, **curl**, **libmpc-dev**, **python**.
66
+
67
+
Пример установки для Ubuntu/Debian:
76
68
```
77
69
$ sudo apt-get install make gcc \
78
70
build-essential gcc-multilib \
@@ -84,29 +76,31 @@
84
76
```
85
77
86
78
## Установка кросс-компилятора
87
-
### x86:
79
+
***x86***:
88
80
```
89
81
$ sudo apt-get install gcc
90
82
```
91
-
Обычно эти пакеты уже установлены в Вашей ОС, но на всякий случай стоит это проверить. Вам также понадобится *gcc-multilib*. Обратите внимание, что требуется установить другие пакеты, если Вы уже настроили окружение на Windows и MacOS самостоятельно.
83
+
Обычно эти пакеты уже установлены в Вашей ОС, но на всякий случай стоит это проверить. Вам также понадобится *gcc-multilib*.
84
+
Обратите внимание, что требуется установить другие пакеты, если Вы уже настроили окружение на Windows и MacOS самостоятельно.
92
85
93
86
### ARM:
94
87
```
95
88
$ sudo apt install arm-none-eabi-gcc
96
89
```
97
-
Или для Debian
90
+
Или для Debian:
98
91
```
99
92
$ sudo apt install gcc-arm-none-eabi
100
93
```
101
-
Вы можете также скачать архив с набором ARM-инструментов(тулчейном) по ссылке: [https://launchpad.net/gcc-arm-embedded](https://launchpad.net/gcc-arm-embedded), а затем распаковать архив и настроить переменную окружения *PATH*:
94
+
Вы можете также скачать архив с набором ARM-инструментов(тулчейном) по ссылке: [https://launchpad.net/gcc-arm-embedded](https://launchpad.net/gcc-arm-embedded).
95
+
Затем нужно распаковать архив и настроить переменную окружения *PATH*:
102
96
```
103
97
$ export PATH=$PATH:<путь к тулчейну>/gcc-arm-none-eabi-<version>/bin
104
98
```
105
99
106
100
### SPARC, Microblaze, MIPS, PowerPC, MSP430:
107
101
Для этих архитектур можно воспользоваться нашим проектом по сборке кросс-компилятора: [https://github.com/embox/crosstool](https://github.com/embox/crosstool).
108
102
109
-
Также можно скачать последнюю версию готового к использованию архива отсюда: [https://github.com/embox/crosstool/releases](https://github.com/embox/crosstool/releases).
103
+
Также можно скачать последнюю версию архива отсюда: [https://github.com/embox/crosstool/releases](https://github.com/embox/crosstool/releases).
110
104
111
105
Или собрать его, выкачав скрипты из репозитория с помощью команды:
112
106
```
@@ -133,6 +127,7 @@ QEMU может быть установлен следующим способо
133
127
$ make confload-<ARCH>/qemu
134
128
```
135
129
Где <ARCH>: x86, arm, mips, ppc, sparc, microblaze.
130
+
136
131
Пример под x86:
137
132
```
138
133
$ make confload-x86/qemu
@@ -146,6 +141,7 @@ QEMU может быть установлен следующим способо
146
141
$ make (-jN)
147
142
```
148
143
Где *-j* -- это опция *make*, а *N* -- это количество параллельных процессов.
144
+
149
145
Пример:
150
146
```
151
147
$ make -j4
@@ -154,7 +150,6 @@ QEMU может быть установлен следующим способо
154
150
```
155
151
$ ./scripts/qemu/auto_qemu
156
152
```
157
-
158
153
Пример вывода в консоль:
159
154
```
160
155
Embox kernel start
@@ -163,10 +158,12 @@ Embox kernel start
163
158
...
164
159
```
165
160
Если все unit-тесты прошли успешно, и система загружена, появится консоль, в которой можно выполнять команды. Начать можно с команды ***'help'*** которая выведет список доступных команд для вашей конфигурации.
161
+
166
162
Для выхода из эмулятора qemu нажмите последовательно: ***ctrl+’A’***, затем ***‘x’***.
167
163
168
164
## Особенности системы сборки Mybuild
169
-
***Embox*** - модульная и настраиваемая система. Для этих целей был разработан декларативный язык описания ***Mybuild***. Он позволяет описывать как отдельные единицы системы (модули), так и всю систему в целом.
165
+
***Embox*** - модульная и настраиваемая система. Для этих целей был разработан декларативный язык описания ***Mybuild***.
166
+
Он позволяет описывать как отдельные единицы системы (модули), так и всю систему в целом.
170
167
171
168
***Модуль*** является базовым понятием для системы сборки. Он содержит: список файлов, относящихся к данному модулю; параметры, которые можно задать модулю в момент конфигурации; список зависимостей.
172
169
@@ -207,7 +204,6 @@ Embox kernel start
207
204
$ mkdir src/cmds/hello_world
208
205
```
209
206
* Создать файл с исходным кодом программы ***src/cmds/hello_world/hello_world.c*** со следующим содержанием:
210
-
211
207
```
212
208
#include <stdio.h>
213
209
@@ -216,7 +212,6 @@ Embox kernel start
216
212
}
217
213
```
218
214
* Создать файл ***src/cmds/hello_world/Mybuild*** с описанием Вашего модуля:
219
-
220
215
```
221
216
package embox.cmd
222
217
@@ -227,22 +222,18 @@ Embox kernel start
227
222
}
228
223
```
229
224
* Добавить программу в файл конфигурации *conf/mods.conf*:
230
-
231
225
```
232
226
include embox.cmd.hello_world
233
227
```
234
228
* Собрать Embox:
235
-
236
229
```
237
230
$ make
238
231
```
239
232
* Запустить Embox:
240
-
241
233
```
242
234
$ ./scripts/qemu/auto_qemu
243
235
```
244
236
* Наберите **help** в консоли Embox, чтобы проверить, появилась ли **hello_world** в списке команд, и Вы увидите:
245
-
246
237
```
247
238
root@embox:/#hello_world
248
239
Hello, world!
@@ -251,7 +242,6 @@ Embox kernel start
251
242
252
243
### Файл описания модуля
253
244
Разберем немного подробнее файл описания модуля.
254
-
255
245
```
256
246
package embox.cmd
257
247
@@ -265,21 +255,23 @@ Embox kernel start
265
255
266
256
Строка ***source "hello_world.c"*** содержит названия необходимых для сборки модуля файлов.
267
257
268
-
В строке ***@Cmd(name = "hello_world", help="First Embox application")*** задается атрибут модуля. В первую очередь модуль будет представлять из себя приложение, а во вторую -- устанавливает имя, с помощью которого это приложение можно вызвать. И наконец, устанавливается строка, которая будет отображаться при вызове команды ***'help'***.
В первую очередь модуль будет представлять из себя приложение, а во вторую -- устанавливает имя, с помощью которого это приложение можно вызвать.
260
+
И наконец, устанавливается строка, которая будет отображаться при вызове команды ***'help'***.
269
261
270
262
Строка ***@AutoCmd*** показывает, что в приложении есть стандартная функция входа в приложение ***main()***, которая будет заменена на другой символ в процессе сборки.
271
263
272
264
## Отладка
273
265
Для отладки можно использовать тот же 'auto_qemu' скрипт, добавив флаги *-s -S -no-kvm*:
274
266
```
275
-
$ sudo ./scripts/qemu/auto_qemu -s -S -no-kvm
267
+
$ sudo ./scripts/qemu/auto_qemu -s -S -no-kvm
276
268
```
277
269
После запуска qemu ждёт соединения с gdb-клиентом. Запустим gdb в другом терминале:
make ext_conf EXT_PROJECT_PATH=<your projects path>
292
284
```
293
285
Для того, чтобы темплейты были видны через вызовы `make confload` и `make confload-`, подключеный репозиторий должен иметь структуру папки *project*, а именно *<root_folder>/<project_name>/templates*. Модули могут располагаться в произвольных папках, поиск осуществляется по файлам Mybuild и *.my
0 commit comments