Dmitry Telenkov 9 月之前
父節點
當前提交
40a50745c9
共有 5 個文件被更改,包括 81 次插入23 次删除
  1. 25 13
      .obsidian/workspace.json
  2. 9 9
      ROTEK/universal IO/universal IO.md
  3. 46 0
      STM32/build.md
  4. 1 1
      c/c common.md
  5. 0 0
      linux/make.md

+ 25 - 13
.obsidian/workspace.json

@@ -13,7 +13,19 @@
             "state": {
               "type": "markdown",
               "state": {
-                "file": "Кодинг.md",
+                "file": "STM32/build.md",
+                "mode": "source",
+                "source": false
+              }
+            }
+          },
+          {
+            "id": "d78aee71c167070e",
+            "type": "leaf",
+            "state": {
+              "type": "markdown",
+              "state": {
+                "file": "c/c common.md",
                 "mode": "source",
                 "source": false
               }
@@ -85,7 +97,7 @@
             "state": {
               "type": "backlink",
               "state": {
-                "file": "Кодинг.md",
+                "file": "STM32/build.md",
                 "collapseAll": false,
                 "extraContext": false,
                 "sortOrder": "alphabetical",
@@ -117,32 +129,33 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
   "active": "043ce15dbe2ac410",
   "lastOpenFiles": [
-    "common.md",
+    "c/c common.md",
+    "STM32/build.md",
     "ROTEK/universal IO/universal IO.md",
+    "todo/Задачи.md",
+    "linux/make.md",
+    "Кодинг.md",
+    "common.md",
     "ROTEK/universal IO/Test HV.md",
     "STM32/IRQ + FreeRTOS.md",
-    "todo/Задачи.md",
     "todo/Счета.md",
     "todo/Разное.md",
     "linux/linux common.md",
-    "STM32/build.md",
-    "make.md",
     "hardcore web development/4. Linux.md",
     "linux/Tmux.md",
     "linux/server.md",
     "linux/vim.md",
     "linux/bash.md",
     "Golang/common.md",
-    "c/c common.md",
     "c/syscalls.md",
     "linux/Raspberry PI.md",
     "linux/Raspberry Pi 3 Model B v1.2.md",
@@ -152,7 +165,6 @@
     "Greenstar/stm32l476VG-usb спектрометр.md",
     "Greenstar/FPGA Blaster.md",
     "Greenstar/ethernet stm32.md",
-    "Кодинг.md",
     "linux/GS server.md"
   ]
 }

+ 9 - 9
ROTEK/universal IO/universal IO.md

@@ -135,12 +135,12 @@ typedef struct
 - `read, write, cursor` - структуры с полями `sector` и `slot`.
 
 <h6>Этапы разработки ПО</h6>
-- Проверка всех функциональных модулей (внешний и внутренний ADC, DAC, USB, RTC, внешняя память, индикация, сдвиговые регистры, мультиплексоры).
-- Реализация обновление встроенного ПО. Загрузчик.
-- Разработка модуля работы с общими и системными настройками.
-- Драйверы внешних ADC, DAC, управления режимами цифровых входов/выходов.
-- Реализация Modbus, и разработка карты регистров.
-- Реализация основной логики работы модулей. Безопасный режим работы, установка и считывание значений входов/выходов, различные режимы работы входов/выходов. Настройка о опрос модулей по протоколу Modbus RTU.
-- Разработка модулей архива и журнала событий.
-- Разработка USB драйвера для класса RNDIS
-- Реализация web-интерфейса.
+- 100% Проверка всех функциональных модулей (внешний и внутренний ADC, DAC, USB, RTC, внешняя память, индикация, сдвиговые регистры, мультиплексоры). 
+- 95% Реализация обновление встроенного ПО. Загрузчик.
+- 100% Разработка модуля работы с общими и системными настройками.
+- 85% Драйверы внешних ADC, DAC, управления режимами цифровых входов/выходов.
+- 80% Реализация Modbus, и разработка карты регистров.
+- 75% Реализация основной логики работы модулей. Безопасный режим работы, установка и считывание значений входов/выходов, различные режимы работы входов/выходов. Настройка о опрос модулей по протоколу Modbus RTU.
+- 75% Разработка модулей архива и журнала событий.
+- 100% Разработка USB драйвера для класса RNDIS
+- 0% Реализация web-интерфейса.

+ 46 - 0
STM32/build.md

@@ -8,3 +8,49 @@ $ sudo add-apt-repository -y ppa:git-core/ppasudo apt update
 
 $ sudo apt upgradesudo apt install -y build-essential make libtool pkg-config cmake curl automake autoconf gcc git texinfo python3-dev libpython3-dev liblzma5 libncurses5 libncurses5-dev libusb-1.0-0-dev libgtk-3-dev libstlink-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev xz-utils tk-dev
 ```
+<h6>GCC</h6>
+`-nostdlib` - не использовать стандартные библиотеки, взять заглушки.
+Библиотеки GNU ARM используют `newlib` для обеспечения стандартной реализации библиотек C. Конкретнее `newlib-namo`
+```bash
+$ arm-none-eabi-gcc main.c delay.c -o main.elf -nostdlib
+```
+`mcpu=cortex-m0` или `march=` - архитектура
+`-mthumb` - набор команд
+`-mfloat-abi=soft` - если нет модуля fpu
+`-std=gnu11` - стандарт GNU
+`--specs=nano.specs` - для использования библиотеки `newlib-nano`
+`--specs=nosys.specs` - для использования библиотеки `nosys`
+`-Wall` - включить все warnings
+`-g` - включить отладку
+
+Получить файл после препроцессора:
+```bash
+$ arm-none-eabi-gcc main.c delay.c -nostdlib -E > main.i
+```
+
+Получить объектный файл:
+```bash
+$ arm-none-eabi-gcc main.i -o main.o -nostdlib -fpreprocessed-mcpu=cortex-m0 -mthumb -mfloat-abi=soft -std=gnu11 -Wall --specs=nano.specs --specs=nosys.specs -g 
+```
+
+Получить файл ассемблера:
+```bash
+$ arm-none-eabi-gcc -s main.c -o main.s -S -nostdlib -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -std=gnu11 -Wall --specs=nano.specs --specs=nosys.specs
+```
+
+Вывести заголовок elf-файла:
+```bash
+$ arm-none-eabi-readelf -h main.o 
+```
+
+Получить объектный файл (остановиться перед компоновкой):
+```bash
+$ arm-none-eabi-gcc -c main.c -o main.o nostdlib -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -std=gnu11 -Wall --specs=nano.specs --specs=nosys.specs
+
+$ arm-none-eabi-gcc -c delay.c -o delay.o nostdlib -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -std=gnu11 -Wall --specs=nano.specs --specs=nosys.specs
+```
+
+Вывести dump объектного файла:
+```bash
+$ arm-none-eabi-objdump -h main.o
+```

+ 1 - 1
c/c common.md

@@ -7,7 +7,7 @@
 $ cc main.c # создаст исполняемый файл main.out
 $ cc -v main.c # тоже, но с выводом информации
 $ gcc -E main.c # остановиться после препроцессора
-$ gcc -S main.c # остановиться после ассемблера на втормо этапе (main.s)
+$ gcc -S main.c # остановиться после ассемблера на втором этапе (main.s)
 $ gcc -c main.c # остановиться после ассемблирования перед компановкой, получится объектный модуль
 $ objdump -x main.o # вывести объектный файл в читаемом виде
 $ nm mian.o # менеджер имен

+ 0 - 0
make.md → linux/make.md