You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.5 KiB
102 lines
2.5 KiB
#!/bin/bash
|
|
# FreeRTOS示例设置脚本
|
|
|
|
set -e
|
|
|
|
FREERTOS_VERSION="10.4.6"
|
|
FREERTOS_URL="https://github.com/FreeRTOS/FreeRTOS/archive/refs/tags/V${FREERTOS_VERSION}.tar.gz"
|
|
INSTALL_DIR="/opt/freertos"
|
|
FREERTOS_PATH=""
|
|
|
|
echo "🚀 开始设置FreeRTOS环境..."
|
|
|
|
# 检查是否已安装
|
|
if [ -d "$INSTALL_DIR" ]; then
|
|
echo "✅ FreeRTOS已安装在 $INSTALL_DIR"
|
|
FREERTOS_PATH="$INSTALL_DIR"
|
|
else
|
|
# 创建安装目录
|
|
sudo mkdir -p "$INSTALL_DIR"
|
|
sudo chown $USER:$USER "$INSTALL_DIR"
|
|
|
|
# 下载并解压FreeRTOS
|
|
echo "📥 下载FreeRTOS V${FREERTOS_VERSION}..."
|
|
cd /tmp
|
|
wget -q "$FREERTOS_URL" -O freertos.tar.gz
|
|
tar -xzf freertos.tar.gz
|
|
|
|
# 复制到安装目录
|
|
echo "📦 安装FreeRTOS..."
|
|
cp -r "FreeRTOS-${FREERTOS_VERSION}"/* "$INSTALL_DIR/"
|
|
|
|
# 清理
|
|
rm -rf "FreeRTOS-${FREERTOS_VERSION}" freertos.tar.gz
|
|
|
|
FREERTOS_PATH="$INSTALL_DIR"
|
|
echo "✅ FreeRTOS已安装到 $INSTALL_DIR"
|
|
fi
|
|
|
|
# 设置环境变量
|
|
echo "⚙️ 设置环境变量..."
|
|
if ! grep -q "FREERTOS_PATH" ~/.bashrc; then
|
|
echo "export FREERTOS_PATH=\"$FREERTOS_PATH\"" >> ~/.bashrc
|
|
echo "export C_INCLUDE_PATH=\"$FREERTOS_PATH/FreeRTOS/Source/include:\$FREERTOS_PATH/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/include:\$C_INCLUDE_PATH\"" >> ~/.bashrc
|
|
fi
|
|
|
|
# 验证安装
|
|
echo "🔍 验证安装..."
|
|
if [ -f "$FREERTOS_PATH/FreeRTOS/Source/include/FreeRTOS.h" ]; then
|
|
echo "✅ FreeRTOS.h found at $FREERTOS_PATH/FreeRTOS/Source/include/FreeRTOS.h"
|
|
else
|
|
echo "❌ FreeRTOS.h not found"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建示例代码
|
|
echo "📝 创建示例代码..."
|
|
EXAMPLE_DIR="$INSTALL_DIR/examples"
|
|
mkdir -p "$EXAMPLE_DIR"
|
|
|
|
# 创建示例Makefile
|
|
cat > "$EXAMPLE_DIR/Makefile" << 'EOF'
|
|
# FreeRTOS示例Makefile
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -std=c99 -I$(FREERTOS_PATH)/FreeRTOS/Source/include
|
|
LDFLAGS = -lpthread
|
|
|
|
# FreeRTOS源文件
|
|
FREERTOS_SRC = $(FREERTOS_PATH)/FreeRTOS/Source
|
|
|
|
# 源文件
|
|
SRCS = main.c
|
|
SRCS += $(FREERTOS_SRC)/tasks.c
|
|
SRCS += $(FREERTOS_SRC)/queue.c
|
|
SRCS += $(FREERTOS_SRC)/list.c
|
|
SRCS += $(FREERTOS_SRC)/timers.c
|
|
|
|
# 目标
|
|
TARGET = freertos_example
|
|
|
|
OBJS = $(SRCS:.c=.o)
|
|
|
|
.PHONY: all clean
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJS)
|
|
$(CC) $(OBJS) -o $(TARGET) $(LDFLAGS)
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -f $(OBJS) $(TARGET)
|
|
|
|
test: $(TARGET)
|
|
./$(TARGET)
|
|
EOF
|
|
|
|
echo "✅ FreeRTOS环境设置完成"
|
|
echo "📍 FreeRTOS路径: $FREERTOS_PATH"
|
|
echo "🔧 请运行 'source ~/.bashrc' 来加载环境变量"
|
|
echo "📁 示例代码目录: $EXAMPLE_DIR" |