mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
[linker] correct indentation
This commit is contained in:
parent
29e880808e
commit
755d45e978
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@ -23,6 +23,6 @@ jobs:
|
|||||||
- name: Files are UTF-8
|
- name: Files are UTF-8
|
||||||
run: ./lint/encoding.sh .
|
run: ./lint/encoding.sh .
|
||||||
- name: Lint Markdown
|
- name: Lint Markdown
|
||||||
run: mdl . --ignore-front-matter -r MD003,MD005,MD011,MD019,MD023,MD027,MD028,MD035,MD037,MD038,MD039,MD047
|
run: mdl . --ignore-front-matter -r MD003,MD005,MD011,MD019,MD023,MD025,MD027,MD028,MD035,MD037,MD038,MD039,MD047
|
||||||
- name: Lint frontmatter
|
- name: Lint frontmatter
|
||||||
run: ./lint/frontmatter.py .
|
run: ./lint/frontmatter.py .
|
||||||
|
23
linker.md
23
linker.md
@ -1,34 +1,31 @@
|
|||||||
---
|
---
|
||||||
category: tool
|
category: tool
|
||||||
name: GNU linker (ld)
|
name: Linker script
|
||||||
contributors:
|
contributors:
|
||||||
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
|
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
|
||||||
translators:
|
translators:
|
||||||
- ["Anuj Shah", "https://github.com/ShahAnuj2610"]
|
- ["Anuj Shah", "https://github.com/ShahAnuj2610"]
|
||||||
|
filename: learn.ld
|
||||||
---
|
---
|
||||||
|
|
||||||
## Basic concepts and definitions
|
|
||||||
|
|
||||||
**Position counter** - the linker has a special variable
|
**Position counter** - the linker has a special variable
|
||||||
"." (dot) always contains the current output position.
|
"`.`" (dot) always contains the current output position.
|
||||||
|
|
||||||
## Functions
|
`ADDR (section)` - returns the absolute address of the specified section. However
|
||||||
|
|
||||||
**ADDR (section)** - returns the absolute address of the specified section. However
|
|
||||||
this section must be defined before using the ADDR function.
|
this section must be defined before using the ADDR function.
|
||||||
|
|
||||||
**ALIGN (exp)** - returns the value of the position counter aligned to the border
|
`ALIGN (exp)` - returns the value of the position counter aligned to the border
|
||||||
following the exp expression.
|
following the exp expression.
|
||||||
|
|
||||||
**SIZEOF (section)** - returns the size of the section in bytes.
|
`SIZEOF (section)` - returns the size of the section in bytes.
|
||||||
|
|
||||||
**FILL (param)** - defines the fill pattern for the current section. All
|
`FILL (param)` - defines the fill pattern for the current section. All
|
||||||
other unspecified regions within the section are filled with the value indicated
|
other unspecified regions within the section are filled with the value indicated
|
||||||
in function argument.
|
in function argument.
|
||||||
|
|
||||||
**KEEP (param)** - used to mark param as fatal.
|
`KEEP (param)` - used to mark param as fatal.
|
||||||
|
|
||||||
**ENTRY (func)** - defines the function that will be the entry point
|
`ENTRY (func)` - defines the function that will be the entry point
|
||||||
into the program.
|
into the program.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -45,7 +42,7 @@ _Min_Stack_Size = 0x400;
|
|||||||
# Description of the memory card available for this processor
|
# Description of the memory card available for this processor
|
||||||
# MEMORY
|
# MEMORY
|
||||||
# {
|
# {
|
||||||
#MEMORY_DOMAIN_NAME (access rights): ORIGIN = START_ADDRESS, LENGTH = SIZE
|
# MEMORY_DOMAIN_NAME (access rights) : ORIGIN = START_ADDRESS, LENGTH = SIZE
|
||||||
# }
|
# }
|
||||||
# In our example, the controller contains three memory areas:
|
# In our example, the controller contains three memory areas:
|
||||||
# RAM - starts with the address 0x20000000 and takes 128 KB;
|
# RAM - starts with the address 0x20000000 and takes 128 KB;
|
||||||
|
29
ru/linker.md
29
ru/linker.md
@ -1,30 +1,26 @@
|
|||||||
---
|
---
|
||||||
contributors:
|
contributors:
|
||||||
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
|
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
|
||||||
translators:
|
|
||||||
- ["Alexander Kovalchuk", "https://github.com/Zamuhrishka"]
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Основные понятия и определения
|
|
||||||
**Счетчик позиций** - у компоновщика есть специальная переменная
|
**Счетчик позиций** - у компоновщика есть специальная переменная
|
||||||
"." (точка) всегда содержит текущую позицию вывода.
|
"`.`" (точка) всегда содержит текущую позицию вывода.
|
||||||
|
|
||||||
# Функции
|
`ADDR(section)` - возвращает абсолютный адрес указанной секции. Однако
|
||||||
**ADDR(section)** - возвращает абсолютный адрес указанной секции. Однако
|
|
||||||
данная секция должна быть определенна до использования функции ADDR.
|
данная секция должна быть определенна до использования функции ADDR.
|
||||||
|
|
||||||
**ALIGN(exp)** - возвращает значение счетчика позиций, выравненное на границу
|
`ALIGN(exp)` - возвращает значение счетчика позиций, выравненное на границу
|
||||||
следующего за exp выражения.
|
следующего за exp выражения.
|
||||||
|
|
||||||
**SIZEOF(section)** - возвращает размер секции в байтах.
|
`SIZEOF(section)` - возвращает размер секции в байтах.
|
||||||
|
|
||||||
**FILL(param)** - определяет образец заполнения для текущей секции. Все
|
`FILL(param)` - определяет образец заполнения для текущей секции. Все
|
||||||
остальные неуказанные регионы внутри секции заполняются значением указанными
|
остальные неуказанные регионы внутри секции заполняются значением указанными
|
||||||
в аргументе функции.
|
в аргументе функции.
|
||||||
|
|
||||||
**KEEP(param)** - используется чтобы помечать param как неустранимый.
|
`KEEP(param)` - используется чтобы помечать param как неустранимый.
|
||||||
|
|
||||||
**ENTRY(func)** - определяет функцию, которая будет являться точкой входа
|
`ENTRY(func)` - определяет функцию, которая будет являться точкой входа
|
||||||
в программу.
|
в программу.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -111,10 +107,10 @@ SECTIONS
|
|||||||
|
|
||||||
# ИТОГО: Секция .text, которая содержит код программы выравнивается по границе 4-х байт,
|
# ИТОГО: Секция .text, которая содержит код программы выравнивается по границе 4-х байт,
|
||||||
# включает в себя: все секции с кодом программы во всех объектных файлах и защищенные
|
# включает в себя: все секции с кодом программы во всех объектных файлах и защищенные
|
||||||
от сборщика муссора секции .init и .fini во всех объектных файлах, распологается во FLASH
|
# от сборщика муссора секции .init и .fini во всех объектных файлах, распологается во FLASH
|
||||||
памяти микроконтроллера сразу за таблицей векторов.
|
# памяти микроконтроллера сразу за таблицей векторов.
|
||||||
Секции text, .init и .fini. располагаются в памяти в той последовательности в которой они
|
# Секции text, .init и .fini. располагаются в памяти в той последовательности в которой они
|
||||||
объявлены в скрипте.
|
# объявлены в скрипте.
|
||||||
|
|
||||||
# Третья секция содержит константные данные.
|
# Третья секция содержит константные данные.
|
||||||
.rodata :
|
.rodata :
|
||||||
@ -161,7 +157,7 @@ SECTIONS
|
|||||||
# видеть данные.
|
# видеть данные.
|
||||||
# * LMA (Load memory address) - это адрес по которому линкер хранит данные.
|
# * LMA (Load memory address) - это адрес по которому линкер хранит данные.
|
||||||
|
|
||||||
#Startup должен код скопировать секцию .data из адресов LMA в адреса VMA.
|
# Startup должен код скопировать секцию .data из адресов LMA в адреса VMA.
|
||||||
|
|
||||||
} >RAM AT> FLASH
|
} >RAM AT> FLASH
|
||||||
|
|
||||||
@ -197,4 +193,3 @@ SECTIONS
|
|||||||
} >RAM
|
} >RAM
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user