1,首先我们需要从github上面获取sdk,地址在这:
git clone https://github.com/LuckfoxTECH/luckfox-pico.git
2,我们在编译之前需要安装一下依赖的库
sudo apt-get install repo git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config
你可能会遇到无法定位repo软件包的问题,没事,不去安装它就行,暂时用不到。
3,激活一下工具链的环境变量,工具链就包含在我们前面下载的sdk里面了。每次打开新终端操作的时候都要这样操作。
cd tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/
source env_install_toolchain.sh
4,回到sdk根目录,执行./build.sh lunch选择对应的板卡配置,我们这里是Luckfox_Pico_Plus,所以应该选择1。
5,执行./build.sh
等待片刻,看到下面的输出没有报错就编译成功了,整个编译流程还是很顺畅的,得益于sdk把工具链什么的都弄好了。
6,编译成功后,固件存放在/home/Luckfox-Pico/luckfox-pico/output/image 目录下。
7,固件下载
打开tools/linux/SocToolKit目录下的SocToolKit工具
① 按住 BOOT 键后连接电脑后,松开 BOOT 键,瑞芯微刷机工具就会显示 MaskRom 设备。
② 加载固件的存放目录,也就是刚刚我们编译完成输出的image目录,重载 env 文件,勾选所有项。
③ 点击下载。
然后就可以愉快的更新程序了。
可能你直接鼠标打开程序会一直下载失败,这可能是权限问题,我这里用命令行启动带sudo启动就可以正常下载了。
8,写一个简单的HELLO WORLD,交叉编译传到开发板子上去
#include <stdio.h>
int main()
{
printf("Hello, World! \n");
return 0;
}
然后写一个简单的makefile来帮我们编译
PROJECT ?= app
MAKEFLAGS := -j $(shell nproc)
SRC_EXT := c
OBJ_EXT := o
CC = ../../luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-gcc
SRC_DIR := ./
WORKING_DIR := ./build
BUILD_DIR := $(WORKING_DIR)/obj
BIN_DIR := $(WORKING_DIR)/bin
WARNINGS := -Wall
CFLAGS := -O0 -g $(WARNINGS)
DEFINES :=
INC :=
LDLIBS :=
BIN := $(BIN_DIR)/app
COMPILE = $(CC) $(CFLAGS) $(INC) $(DEFINES)
SRCS := $(shell find $(SRC_DIR) -type f -name '*.c' -not -path '*/\.*')
OBJECTS := $(patsubst $(SRC_DIR)%,$(BUILD_DIR)/%,$(SRCS:.$(SRC_EXT)=.$(OBJ_EXT)))
all: default
$(BUILD_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.$(SRC_EXT)
@echo 'Building project file: $<'
@mkdir -p $(dir $@)
@$(COMPILE) -c -o "$@" "$<"
default: $(OBJECTS)
@mkdir -p $(BIN_DIR)
$(CC) -o $(BIN) $(OBJECTS) $(LDFLAGS) ${LDLIBS}
clean:
rm -rf $(WORKING_DIR)
我们年只需要修改ia一下CC的路径即可
然后直接nake就会在build/bin/目录下生成app文件,把这个文件传到板子上去即可。
9,完成上面步骤后我们给开发板插上USB,板载的led灯应该就开始闪烁了,这个时候我们可以选择通过adb或者调试串口登陆到开发板上去,这里我选择使用adb,应为还需要传输文件到板子上去,然后直接运行这个app文件即可。
可以看到程序已经正确的打印了。