Skip to content

Commit 2a6cb00

Browse files
authored
Исправление опечаток (#15)
* fixed spelling in Training.adoc * fixed spelling in LFD113x chapters * fixed spelling in LFD112x chapters
1 parent 110331a commit 2a6cb00

File tree

6 files changed

+18
-18
lines changed

6 files changed

+18
-18
lines changed

LFD112x-RU/Chapters/Chapter1.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ https://en.wikipedia.org/wiki/Factory_automation_infrastructure[автомати
6666
Система способна получать обратную связь с выводом и компенсировать любые ошибки, обнаруженные в выводе.
6767
Эти типы систем обычно являются автоматическими и требуют очень мало или вообще не требуют вмешательства человека в течение своего рабочего цикла.
6868

69-
Ниже приведены некоторые примеры из множества областей, где широко используются встаиваемые системы:
69+
Ниже приведены некоторые примеры из множества областей, где широко используются встраиваемые системы:
7070

7171
* промышленность;
7272
* медицина;
@@ -100,7 +100,7 @@ https://en.wikipedia.org/wiki/Factory_automation_infrastructure[автомати
100100
* _Система отображения_.
101101
+
102102
Она служит в качестве устройства вывода для отображения информации пользователю.
103-
Система отображения может варьироваться от набора небольших светодиодов до большого жидкокристаллического дисплея, который может отобраать огромное количество информации.
103+
Система отображения может варьироваться от набора небольших светодиодов до большого жидкокристаллического дисплея, который может отображать огромное количество информации.
104104
* _Устройства ввода_.
105105
+
106106
Устройства ввода, доступные во встраиваемых системах, обычно представляют собой небольшие клавиатуры или сенсорные экраны,

LFD112x-RU/Chapters/Chapter2.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ FreeRTOS также размещен на https://github.com/FreeRTOS[GitHub],
191191

192192
Все возможности FreeRTOS управляются из файла конфигурации FreeRTOS, `FreeRTOSConfig.h`.
193193
Каждое приложение должно иметь этот файл как часть системы.
194-
Онэ содержит параметры конфигурации для включения функций FreeRTOS, необходимых для данного приложения.
194+
Он содержит параметры конфигурации для включения функций FreeRTOS, необходимых для данного приложения.
195195
Образец конфигурационного файла может быть скопирован из демонстрационного порта, который лучше всего подходит для контроллера, используемого для данного приложения.
196196

197197
===== Управление памятью: методы распределения памяти
@@ -551,7 +551,7 @@ image:timers.png[title="Примеры различных конфигураци
551551

552552
===== Необходимые файлы
553553

554-
Ниже перчислены основные файлы, которые должны быть включены в любое приложение FreeRTOS:
554+
Ниже перечислены основные файлы, которые должны быть включены в любое приложение FreeRTOS:
555555

556556
* `+FreeRTOS/Source/tasks.c+`
557557
* `+FreeRTOS/Source/queue.c+`

LFD112x-RU/Chapters/Chapter4.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ ISA были разработаны для широкой настройки и
327327
Базовые ISA {riscv} имеют либо _little-endian_, либо _big-endian_ системы памяти, а привилегированная архитектура дополнительно определяет _bi-endian_ операции.
328328
Инструкции хранятся в памяти в виде последовательности 16-битовых посылок в little-endian, независимо от «эндианальности» системы памяти.
329329
Посылки, образующие одну инструкцию, хранятся по возрастающим адресам в полслова,
330-
причем самая младшая посылка содержит младшие биты в спецификации инструкции (как сказано в спецификаций {riscv}).
330+
причем самая младшая посылка содержит младшие биты в спецификации инструкции (как сказано в спецификации {riscv}).
331331

332332
=== Исключения, прерывания и ловушки
333333

LFD113x-RU/Chapters/Chapter2.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ gcc -O2 -fprofile-use=/path/to/outputfile test.c -o b.out
237237

238238
==== Использование семплирующих профилировщиков
239239

240-
Семплирующие профилировщикы, такие как Linux perf, используют аппаратные счётчики для регистрации определенных событий во время выполнения программы.
240+
Семплирующие профилировщики, такие как Linux perf, используют аппаратные счётчики для регистрации определенных событий во время выполнения программы.
241241
Программы можно профилировать как с самого начала, так и во время их выполнения.
242242
Это делает семплирующий профилировщик удобным для непрерывного профилирования.
243243
Накладные расходы таких профилировщиков довольно малы по сравнению с традиционным PGO, поэтому данный подход масштабируется на большое количество систем.
@@ -527,7 +527,7 @@ nm <Binary> | grep -i "test\|debug"
527527
----
528528

529529
* Поиск строк в бинарном файле с помощью инструмента `strings`.
530-
Какобъяснялось ранее, `strings` выводит все C-строки, жестко закодированные в двоичном файле.
530+
Как объяснялось ранее, `strings` выводит все C-строки, жестко закодированные в двоичном файле.
531531
Просмотрев строки, мы можем выяснить, почему та или иная строка оказалась в конечном бинарном файле.
532532

533533
=== Характеристики производительности встраиваемых приложений

LFD113x-RU/Chapters/Chapter3.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ riscv64-unknown-elf-gcc -O2 -o a.out hello.c
9292
----
9393
riscv64-unknown-elf-gcc -O2 hello.c -mabi=lp64d -march=rv64ifd
9494
----
95-
:mabi: footnote:[Примечание переводчика: не просто модель даннных, а двоичный интерфейс приложения (ABI).]
95+
:mabi: footnote:[Примечание переводчика: не просто модель данных, а двоичный интерфейс приложения (ABI).]
9696

9797
Флаг `-march` используется для указания целевой субархитектуры, для которой будет сгенерирована сборка.
9898
Флаг `-mabi` используется для указания моделей данных{mabi}.

LFD113x-RU/Training.adoc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ endif::[]
1313
:icons: font
1414
:riscv: RISC&#8209;V
1515

16-
Приведённые в данной лабораторной работе команды расчитаны на выполненение в рабочей среде _Syntacore Kit_,
17-
распространяемой https://riscv-alliance.ru/[Альяносом {riscv}] в образовательных целях.
16+
Приведённые в данной лабораторной работе команды рассчитаны на выполнение в рабочей среде _Syntacore Kit_,
17+
распространяемой https://riscv-alliance.ru/[Альянсом {riscv}] в образовательных целях.
1818
Обратите внимание, что в другом окружении приведённые примеры команд могут не работать или работать иначе.
1919
// ссылка на html-версию лабораторной с интерактивными примерами с godbolt.
2020

@@ -230,7 +230,7 @@ endif::[]
230230
== Оптимизация
231231

232232
Рассмотрите листинги ассемблерного кода, полученные Clang при разных уровнях оптимизации,
233-
выпонив следующие команды:
233+
выполнив следующие команды:
234234

235235
* без оптимизаций
236236
+
@@ -307,7 +307,7 @@ dot_product:
307307
выделяется необходимое для аргументов и локальных переменных место на стеке (строка 3),
308308
на стеке сохраняется адрес возврата и адрес предыдущего кадра (строки 4 -- 5),
309309
в регистр сохраняется адрес текущего кадра (строка 6),
310-
переданные аргуметы `a`, `b` и `n` загружаются на стек (строки 7 -- 9),
310+
переданные аргументы `a`, `b` и `n` загружаются на стек (строки 7 -- 9),
311311
локальные переменные `r` и `i` инициализируются нулями (строки 10 -- 12).
312312

313313
В строках 15 -- 17 вычисляется, нужно ли выполнять очередную итерацию цикла:
@@ -318,7 +318,7 @@ dot_product:
318318
со стека в регистр загружается значение переменной `i` (строка 21),
319319
вычисляются адреса в памяти значений `a[i]` и `b[i]` и они загружаются в регистры (строки 20, 22 -- 27),
320320
со стека в регистр загружается значение переменной `r` (строка 28),
321-
к значению `r` в прибавляется результат `a[i] * b[i]` (строка 29),
321+
к значению `r` прибавляется результат `a[i] * b[i]` (строка 29),
322322
новое значение `r` записывается на стек (строка 30).
323323

324324
В строках 33 -- 35 происходит увеличение счётчика цикла `i` после выполнения очередной итерации:
@@ -352,7 +352,7 @@ dot_product:
352352
----
353353

354354
Полученный ассемблерный код значительно короче, полученного без применения оптимизаций.
355-
Это получается засчёт того, что на стеке не выделяется место под аргуметы и локальные переменные,
355+
Это получается за счёт того, что на стеке не выделяется место под аргументы и локальные переменные,
356356
и все вычисления производятся с регистрами без обращений к памяти.
357357

358358
В строке 3 происходит инициализация регистра, в котором хранится значение `r`, нулём.
@@ -361,7 +361,7 @@ dot_product:
361361

362362
В строках 6 -- 7 происходит загрузка в регистры значений `a[0]` и `b[0]`.
363363

364-
В строке 8 к значению `r` в прибавляется результат `a[0] * b[0]`.
364+
В строке 8 к значению `r` прибавляется результат `a[0] * b[0]`.
365365

366366
В строке 9 значение `n` уменьшается на 1.
367367

@@ -516,7 +516,7 @@ dot_product: # @dot_product
516516
r += a[i + 0] * b[i + 0]; r += a[i + 1] * b[i + 1]; ... r += a[i + 7] * b[i + 7];
517517
----
518518

519-
То есть компилятор приозвёл «раскрутку цикла».
519+
То есть компилятор произвёл «раскрутку цикла».
520520
Важно отметить, что в таком случае проверять, нужно ли остановиться, достаточно один раз на весь блок (строка 52),
521521
а не на каждую операцию `r += a[i] * b[i]`.
522522
Это положительно сказывается на производительности, так как условные переходы -- «дорогая» операция.
@@ -627,11 +627,11 @@ https://github.com/riscv/riscv-v-spec/tree/master[векторному расш
627627
Если надо использовать векторы, то в 21 строке выставляется максимальная длина для используемых векторов,
628628
а в строках 24 и 26 инициализируются векторные регистры, в которых будет аккумулироваться вычисляемые значения.
629629
Далее в цикле происходят вычисления с использованием векторов (строки 28 -- 40).
630-
После окончания цикла накопленые в векторных регистрах результаты складываются и записываются в обычный регистр (строки 42 -- 45).
630+
После окончания цикла накопленные в векторных регистрах результаты складываются и записываются в обычный регистр (строки 42 -- 45).
631631
Если ещё остались необработанные элементы исходных массивов, то они обрабатываются обычным циклом (строки 48 -- 60).
632632

633633

634-
Попробуйте скомпилироватьс программу теми же опциями (`-O3` и `-march=rv64gcv`), используя систему компиляции GCC.
634+
Попробуйте скомпилировать программу теми же опциями (`-O3` и `-march=rv64gcv`), используя систему компиляции GCC.
635635

636636
.GCC с опциями -O3 и -march=rv64gcv
637637
[source, armasm, opts=linenums]

0 commit comments

Comments
 (0)