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.
cbmc/codedetect/scripts/setup-freertos-example.sh

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"