Assembly description has been moved to a separate file
This commit is contained in:
@@ -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
49
build.md
Normal 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
|
||||||
14
readme.md
14
readme.md
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user