Assembly description has been moved to a separate file

This commit is contained in:
2025-05-06 20:15:25 +03:00
parent c4765fc9d2
commit ad6a3593da
3 changed files with 62 additions and 23 deletions

View File

@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project(jlv135_cli C) project(jlv135_cli C)
if(CMAKE_BUILD_TYPE STREQUAL "Release") option(BUILD_FOR_JLV135 "Build for JLV135 firmware" ON)
if (BUILD_FOR_JLV135)
# Настройка кросс-компиляции # Настройка кросс-компиляции
set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER arm-uclinuxfdpiceabi-gcc) set(CMAKE_C_COMPILER arm-uclinuxfdpiceabi-gcc)
@@ -25,6 +27,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} pthread)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
inc) inc)
if (BUILD_FOR_JLV135)
# Опция strip # Опция strip
if(CMAKE_BUILD_TYPE STREQUAL "Release") if(CMAKE_BUILD_TYPE STREQUAL "Release")
add_custom_command( add_custom_command(
@@ -34,3 +37,4 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
DEPENDS $<TARGET_FILE:${CMAKE_PROJECT_NAME}> DEPENDS $<TARGET_FILE:${CMAKE_PROJECT_NAME}>
) )
endif() endif()
endif()

49
build.md Normal file
View File

@@ -0,0 +1,49 @@
# Инструкция по сборке
## Общее описание
Этот файл CMakeLists.txt настраивает сборку проекта `jlv135_cli` на языке C, с возможностью кросс-компиляции для прошивки JLV135.
## Основные параметры
1. **Минимальная версия CMake**: 3.0
2. **Язык проекта**: C
3. **Имя проекта**: `jlv135_cli`
## Опции сборки
- `BUILD_FOR_JLV135` (по умолчанию ON) - включает настройки для кросс-компиляции под JLV135
## Настройки кросс-компиляции
1. **Система**: Linux
2. **Компилятор**: `arm-uclinuxfdpiceabi-gcc`
3. **Утилита strip**: `arm-uclinuxfdpiceabi-strip`
4. **Флаги компиляции**:
- `-Os` - оптимизация по размеру
- `-fdata-sections -ffunction-sections` - размещение каждой функции/данных в отдельной секции
- `-mno-unaligned-access` - запрет невыровненного доступа к памяти
5. **Флаги линковки**: `-Wl,--gc-sections` - удаление неиспользуемых секций
## Структура проекта
1. **Исходные файлы**:
- `src/jl_modbus/jl_modbus_config.c`
- `src/jl_modbus/jl_config.c`
- `src/jlv135_cli/main.c`
2. **Заголовочные файлы**: включаются из директории `inc`
## Библиотеки
- Проект линкуется с библиотекой `pthread`
## Дополнительные действия при сборке
- В режиме `Release` выполняется удаление debug-символов с помощью `strip`
## Использование
1. Создайте директорию для сборки: `mkdir build && cd build`
2. Запустите CMake:
- Для сборки под JLV135 (по умолчанию): `cmake ..`
- Для сборки без кросс-компиляции: `cmake -DBUILD_FOR_JLV135=OFF ..`
3. Соберите проект: `cmake --build .`
4. (Опционально) Укажите тип сборки:
- `cmake -DCMAKE_BUILD_TYPE=Release ..`
- `cmake -DCMAKE_BUILD_TYPE=Debug ..`
## Примечания
- Для кросс-компиляции должны быть установлены соответствующие инструменты (arm-uclinuxfdpiceabi-gcc)
- Настройки оптимизации и удаления debug-символов применяются только при сборке для JLV135

View File

@@ -1,19 +1,5 @@
# Руководство по использованию команды `jlv135_cli` # Руководство по использованию команды `jlv135_cli`
## Сборка
Генерируем файлы сборки в указанной директории сборки.
```sh
cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
```
Собираем проект, используя сгенерированные файлы сборки.
```sh
cmake --build build --config Release
```
## Описание ## Описание
Команда `jlv135_cli` представляет собой интерфейс командной строки для работы с устройством JLV135. Команда `jlv135_cli` представляет собой интерфейс командной строки для работы с устройством JLV135.