手把手教-基于Ubuntu 系统 Huawei LiteOS 开发编译环境的配置、工程编译

一、软件要求

  • Ubuntu Version 14.04及以上版本,作为编译Huawei LiteOS的服务器。
  • GNU Arm Embedded Toolchain编译器,用于代码编译。
  • GNU Make构建器,用于文件组织与链接。
  • python 2.7/3.2+,pip包管理工具,kconfiglib库,用于编译前通过图形化界面完成配置。

当前使用的 Ubuntu 版本是 22.04.03

二、安装过程

2.1、安装GNU Arm Embedded Toolchain编译器

2.1.1 编译器

下载编译器:
对于32位芯片架构,官方下载地址为:
GNU Arm Embedded Toolchain编译器
旧版本地址
建议使用2019-q4-major及以上版本
在这里插入图片描述
旧版本跳转
在这里插入图片描述
在这里插入图片描述

对于64位芯片架构,官方下载地址为:
64位GNU Arm Embedded Toolchain编译器
下载地址
建议使用最新版本的 aarch64-linux-gnu 编译器。

解压编译器

tar -xvf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2

在这里插入图片描述
解压后可以得到文件夹 gcc-arm-none-eabi-9-2019-q4-major
在这里插入图片描述

添加编译器的执行路径到环境变量

gcc-arm-none-eabi-9-2019-q4-major/bin 目录添加到环境变量中,可以编辑 ~/.bashrc 文件,参考如下方法设置PATH环境变量:

export PATH=$PATH:YOUR_PATH/gcc-arm-none-eabi-9-2019-q4-major/bin/

然后执行以下命令使新设置的环境变量立即生效:

source ~/.bashrc

指令:

//编辑指令
sudo gedit ~/.bashrc
//路径添加到最后一行,保存关闭
export PATH=$PATH:/home/user/Desktop/liteos/gcc-arm-none-eabi-9-2019-q4-major/bin
//环境变量立即生效
source ~/.bashrc

2.1.2 升级GNU Make构建器到最新版

官网下载最新Make构建器
在这里插入图片描述
解压,将压缩包名替换为实际下载的软件包名:

tar -xf make-4.3.tar.gz

检查依赖, 解压后进入到目录中,执行 ./configure 命令以检查编译与安装 Make构建器所需的依赖:

cd make-4.3
./configure

如果没有报错就继续下一步操作,如果存在报错就根据提示安装依赖。

编译&安装Make,继续在当前目录下,参考如下命令完成Make构建器的编译与安装:

sh build.sh
sudo make
sudo make install

或者 直接使用指令安装 make

sudo apt install make 

make 版本查看

make --version

在这里插入图片描述

2.2 安装图形化配置解析工具

2.2.1 安装python 2.7/3.8+

指令安装

sudo apt-get install python3.10

查询版本

python3.10 --version

在这里插入图片描述

源码包编译安装
通过官网下载
3.8.5 python源码包
其它版本下载地址
解压源码包,参考如下命令完成解压,将压缩包名替换为实际下载的源码包名:

tar -xf Python-3.8.5.tgz

检查依赖,解压后进入到目录中,执行 ./configure 命令以检查编译与安装python所需的依赖:

cd Python-3.8.5
./configure

如果没有报错就继续下一步操作,如果存在报错就根据提示安装依赖。
编译&安装python

sudo make
sudo make install

检查python版本并正确链接python命令

python --version

如果显示的不是刚刚安装的python版本,则需要执行以下命令来正确链接python命令。

获取python目录,例如对于python 3.8.5,执行如下命令。

which python3.8

链接python命令到刚刚安装的python包,将以下命令中的 “python3.8-path” 替换为 “which python3.8” 命令执行后的回显路径:

cd /usr/bin && sudo rm python && sudo ln -s "python3.8-path" python

再次检查python版本。

python --version

2.2.2 安装pip包管理工具

如果pip命令不存在,可以下载pip源码包进行安装。pip依赖setuptools,如果setuptools不存在,也需要安装。
命令行方式安装

sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip

源码包方式安装
安装setuptools。
点击setuptools源代码包下载地址,可以参考下面的命令进行安装:

sudo unzip setuptools-50.3.2.zip
cd setuptools
sudo python setup.py install

须知: setuptools最新版本不支持python 2.7,如果使用python 2.7,请下载setuptools 45.0.0版本以支持python 2.7。

安装pip。
点击pip源代码包下载地址
可以参考下面的命令进行安装:

sudo tar -xf pip-20.2.4.tar.gz
cd pip-20.2.4
sudo python setup.py install

2.2.3 安装kconfiglib库

对于服务器可以联网的情况。可以直接使用如下命令安装 kconfiglib

sudo pip install kconfiglib

对于服务器不能联网的情况。可以采用离线的方式安装。首先在其他能联网的环境上
下载kconfiglib
可以下载kconfiglib的wheel文件kconfiglib-14.1.0-py2.py3-none-any.whl或源代码文件kconfiglib-14.1.0.tar.gz,这里以14.1.0版本为例。

a. wheel文件的安装,可以参考如下命令:

sudo pip install kconfiglib-14.1.0-py2.py3-none-any.whl

b. 源代码文件的安装,可以参考如下命令:

sudo tar -zxvf kconfiglib-14.1.0.tar.gz
cd kconfiglib-14.1.0
sudo python setup.py install

在这里插入图片描述

三、工程创建和编译

1.下载Huawei LiteOS代码。请下载完整的Huawei LiteOS代码。
2.拷贝开发板配置文件为根目录 .config 文件。根据实际使用的开发板,拷贝 tools/build/config/ 目录下的默认配置文件 ${platform}.config 到根目录,并重命名为 .config
在这里插入图片描述
在这里插入图片描述

3.配置系统(可选)。如果不希望使用系统的默认配置,可以在 Huawei_LiteOS根目录下执行 make menuconfig命令,在图形化配置界面中自行裁剪模块或修改配置。修改完保存菜单退出,其修改默认会保存到根目录下.config文件中。
如果报错 python 指令,python3.10 指令能识别,python 不能识别,则可手动添加 python 链接到 python3.10

cd /usr/bin && sudo ln -s "/usr/bin/python3.10" python

在这里插入图片描述

在这里插入图片描述

4.清理工程。在编译前,先在Huawei_LiteOS根目录下执行make clean命令删除以前编译出的二进制文件。
在这里插入图片描述

5.编译工程。在Huawei_LiteOS根目录下执行make命令即可完成工程编译,编译结果会在屏幕上输出。
在这里插入图片描述

以 STM32F407_ATK_Explorer 为例,
生成的系统镜像文件、反汇编等文件保存out/STM32F407_ATK_Explorer目录中;
库文件out/STM32F407_ATK_Explorer/lib目录中;
中间文件out/STM32F407_ATK_Explorer/obj目录中。
在这里插入图片描述
说明: 如果只编译某个模块,而不是整个工程代码,在完成该模块的配置后,参考如下步骤完成编译。
1.导出 LITEOSTOPDIR环境变量。 LITEOSTOPDIR变量表示 Huawei LiteOS代码的保存路径,例如代码路径为 “/usr1/mypc/Huawei_LiteOS” ,则执行如下命令:

export LITEOSTOPDIR=/usr1/mypc/Huawei_LiteOS

2.编译模块。 进入要编译的模块目录,执行make命令。

四、工程目录结构说明

LiteOS的代码目录结构说明,关于代码树中各个目录存放的源代码的相关内容简介如下:

一级目录二级目录三级目录说明
archarmcortex_a_rA核架构支持
cortex_mM核架构支持
arm64arm64架构支持
cskycskyv2cskyv2架构支持
riscvrvm32riscv架构支持
buildLiteOS编译系统需要的配置及脚本
compatcmsisliteos提供的CMSIS-RTOS 1.0和2.0接口
componentsaiai(基于mindspore)算子库实现
connectivityagent_tinyagent_tiny端云互通组件,包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码
lwm2mlwm2m协议实现
mqttMQTT开源协议实现
nb_iotLiteOS NB-IoT API
fsdevfsdevfs文件系统
fatfsfatfs文件系统
kifskifs文件系统
littlefslittlefs文件系统
ramfsramfs文件系统
spiffsspiffs文件系统
vfs虚拟文件系统
gui开源LittlevGL图形库
language语言相关组件,含lua
libcjsonc语言json库
log日志等级控制
media媒体相关组件,含libpng、openexif、opus、upup、
netat_deviceAT设备适配层
at_frameLiteOS AT框架API
ifconfigifconfig shell命令实现
los_iperf网络带宽测试工具
lwip/lwip_portlwip驱动及OS适配代码
lwip/lwip-2.1.2lwip协议实现
lwip/ppp_portlwip协议ppp端口支持
pcap网络抓包工具
pingping shell命令实现
salsocket通讯支持
tftp_servertftp服务
ota固件升级代码
securitymbedtls/mbedtls_portmbed TLS的OS适配代码
mbedtls/mbedtl-2.16.8mbed TLS协议实现
opensslopenssl协议
sensorhubincludesensor manager头文件
srcsensor manager的源码实现
utility解析工具,含bidireference、curl、fastlz、freetype、harfbuzz、iconv、iniparser、json-c、jsoncpp、libxml2、sqlite、thttpd、tinyxml2
demosagenttiny_lwm2mlwm2m协议 demo
agenttiny_mqttmqtt 协议demo
aiai的demo
dtls_serverdtls协议demo
fs文件系统demo
guigui的demo
ipv6_clientIpv6协议demo
kernelapi供开发者测试LiteOS内核的demo示例代码
includeAPI功能头文件存放目录
language语言相关组件的demo
lmsLMS的demo
media媒体相关组件的demo
nbiot_without_atinyNB-IoT demo
sensorhubgyro基于sensorhub传感框架定时读取MPU6050陀螺仪原始数据的demo
traceTrace的demo
utility解析工具的demo
doc此目录存放的是LiteOS的使用文档和API说明等文档
driverbaseLiteOS驱动框架
interruptLiteOS系统中断接口
timerLiteOS系统定时器接口
uartLiteOS系统串口接口
includecomponents各个模块所依赖的头文件
kernelbaseLiteOS基础内核代码,包括任务、中断、软件定时器、队列、事件、信号量、互斥锁、tick等功能
debugLiteOS内核调测代码,包括队列、信号量、互斥锁及任务调度的调测
includeLiteOS基础内核内部使用的头文件
memLiteOS中的内存管理相关代码
sched任务调度支持,包括对多核的调度支持
shellcmdLiteOS中与基础内核相关的shell命令,包括memcheck、task、systeminfo、swtmr等
extendedcppsupportC++兼容适配层底层接口
cpupCPU占用率统计接口
includeextended目录所需的头文件
lmsLMS(实时检测内存操作合法性算法)的库文件
lowpower低功耗框架相关代码
tracetrace事件跟踪,用于实时记录系统运行轨迹
includeLiteOS开源内核头文件
initLiteOS内核初始化相关代码
libhuawei_libcLiteOS自研libc库和适配的posix接口
libcLiteOS适配的musl libc库
libsec华为安全函数库
zlib开源zlib库
osdependsliteosLiteOS提供的部分OS适配接口
shellsrc实现shell命令的代码,支持基本调试功能
includeshell头文件
targetsbsp通用板级支持包
CB2201CB2201(ck802)开发板的开发工程源码包
Cloud_STM32F429IGTx_FIRE野火STM32F429(ARM Cortex M4)开发板的开发工程源码包
GD32E103C_STARTGD32E103C_START(ARM Cortex M4)开发板的开发工程源码包
GD32F303RGT6_BearPiGD32F303RGT6_BearPi(ARM Cortex M4)开发板的开发工程源码包
GD32VF103V_EVALGD32VF103V_EVAL(riscv)开发板的开发工程源码包
HiFive1_Rev1_B01HiFive1_Rev1_B01(riscv)开发板的开发工程源码包
qemu-virt-a53Coretex A53的qemu开发工程源码包
realview-pbx-a9Coretex A9的qemu开发工程源码包
STM32F072_NucleoSTM32F072_Nucleo(ARM Cortex M0)开发板的开发工程源码包
STM32F103_FIRE_Arbitrary野火STM32F103(ARM Cortex M3)霸道开发板的开发工程源码包
STM32F407_ATK_Explorer正点原子STM32F407(ARM Cortex M4)探索者开发板的开发工程源码包
STM32F769IDISCOVERYSTM32F769IDISCOVERY(ARM Cortex M7)开发板的开发工程源码包
STM32L4R9I_DiscoverySTM32L4R9IDISCOVERY(ARM Cortex M4)开发板的开发工程源码包
STM32L073_NucleoSTM32L073_Nucleo(ARM Cortex M0+)开发板的开发工程源码包
STM32L431_BearPi小熊派STM32L431(ARM Cortex M4)开发板的开发工程源码包
STM32L476_NB476深创客STM32L476(ARM Cortex M4)开发板的开发工程源码包
STM32L496_NucleoSTM32L496 NUCLEO-144(ARM Cortex M4)开发板的开发工程源码包
STM32L552_NucleoSTM32L552 Nucleo(ARM Cortex M33)开发板的开发工程源码包
toolsbuildLiteOS支持的开发板编译配置文件
menuconfigLiteOS编译所需的menuconfig脚本
MakefileLiteOS Makefile
.config开发板的配置文件,如果用户不重新选择开发板,默认为野火挑战者STM32F429开发板的配置文件

移植目录结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考:
https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Build_and_IDE.md

https://gitee.com/LiteOS/LiteOS/tree/master

https://support.huaweicloud.com/build-IDE-LiteOS/zh-cn_topic_0308950992.html

https://developer.arm.com/downloads/-/gnu-rm

https://www.linaro.org/downloads/

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Code_Info.md

https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Porting_Guide.md

  • 22
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值