说明说明
下载rt-smart智能包装
可以在下面的链接下载rt-smart的软件包,文件名称为rt-smart-20201125.zip
它把几个解压,假设它解压后的目录名是rt-smart,下面都以rt-smart来代表目录名。相关的主要及说明如下图所示:
准备工具链
相反,如果需要下载 arm-linux-mus 的 arm-linux-mus 是 Windows 的智能工具,Windows 则自带的 Linux 环境链。
● Linux版本工具链:install_arm-linux-musleabi_for_x86_64-pc-linux-gnu.tar
● Windows版本工具链:install_arm-linux-musleabi_for_i686-w64-mingw32
请根据自己的开发环境选择对使用的工具链下载使用。
下载下来后分别解压展开到 rt-smart/tools/gnu_gcc
目录下,smart-smart目录下的smart-env.bat/sh设置的环境,其中工具链路径都指向这个目录下。
Linux下编译并在QEMU模拟环境上执行
在 Linux 系统下,需要安装一些其他基本的环境,然后才能编译 rt-smart。文档是基于 Ubuntu16.04 系统环境的操作,Linux 版本。
安装编译环境
首先安装时需要通过其他工具,附件,可以来以下一些命令:
1sudo apt-get update
2sudo apt-get install vim scons git bzip2 net-tools
3sudo apt-get install python-all python-all-dev
4sudo apt-get install qemu-system-arm qemu-system-common qemu-utils
以上命令会安装一些系统基础工具、python环境、scons、qemu工具等。
编译应用程序
1# 进入到rt-smart目录
2cd rt-smart
3
4# 设置对应的环境变量,和原RT-Thread相比,多了RTT_CC_PREFIX环境变量
5source smart-env.sh
6
7# 编译用户态程序
8cd userapps
9scons
10
11scons: Reading SConscript files ...
12scons: done reading SConscript files.
13scons: Building targets ...
14CC build/hello/main.o
15CC build/ping/main.o
16CC build/pong/main.o
17CC build/vi/optparse-v1.0.0/optparse.o
18CC build/vi/vi.o
19CC build/vi/vi_utils.o
20CC build/webclient/main.o
21LINK root/bin/hello.elf
22LINK root/bin/ping.elf
23LINK root/bin/pong.elf
24LINK root/bin/vi.elf
25LINK root/bin/webclient.elf
26scons: done building targets.
成功后` userapps/apps`下的应用程序会编译的小程序文件,并放置在` userapps /root``目录下,可以把它转换成romfs、C语言目录的个给方式rtsmart内核可以不依赖于其他系统,就可以直接使用romfs、C语言类可以用如下的格式生成如下格式文件:
1cd userapps
2python ../tools/mkromfs.py root ../kernel/bsp/qemu-vexpress-a9/applications/romfs.c
编译rt-smart内核
1cd rt-smart/kernel/bsp/qemu-vexpress-a9
2scons
3... ...
4CC build/kernel/src/thread.o
5CC build/kernel/src/timer.o
6LINK rtthread.elf
7arm-linux-musleabi-objcopy -O binary rtthread.elf rtthread.bin
8arm-linux-musleabi-size rtthread.elf
9 text data bss dec hex filename
101219480 40652 122444 1382576 1518b0 rtthread.elf
11scons: done building targets.
如果编译无误,会生成rtthread.elf内核文件。
模拟执行
通过qemu模拟的vexpress-a9开发板来直接运行:
1cd rt-smart/kernel/bsp/qemu-vexpress-a9
2./qemu-nographic.sh
3
4 \ | /
5- RT - Thread Smart Operating System
6 / | \ 5.0.0 build Nov 15 2020
7 2006 - 2020 Copyright by rt-thread team
8lwIP-2.0.2 initialized!
9try to allocate fb... | w - 640, h - 480 | done!
10fb => 0x61100000
11[I/sal.skt] Socket Abstraction Layer initialize success.
12[I/SDIO] SD card capacity 65536 KB.
13Dir /mnt mount failed!
14hello rt-thread
15msh />
16msh />/bin/hello.elf
17msh />hello world!
退出qemu的方法:“Ctrl+A,X”。我们上面也运行了本次编译的应用程序 /bin/hello.elf
,并看到它的输出 hello world!
。 在第一次执行的时候,会输出Dir /mnt mount failed!
,这是因为最开始执行的时候,qemu的脚本会生成一个空的sd.bin文件做为一个sd卡给到vexpress-a9使用。所以在第一次执行指定的时候,需要对sd0进行指定
1 \ | /
2- RT - Thread Smart Operating System
3 / | \ 5.0.0 build Nov 24 2020
4 2006 - 2020 Copyright by rt-thread team
5lwIP-2.0.2 initialized!
6try to allocate fb... | w - 640, h - 480 | done!
7fb => 0x61100000
8[I/sal.skt] Socket Abstraction Layer initialize success.
9[I/SDIO] SD card capacity 65536 KB.
10[I/SDIO] switching card to high speed failed!
11Dir /mnt mount failed!
12hello rt-thread
13msh />mkfs sd0
14msh />
15
16# Ctrl + A, X退出
17QEMU: Terminated
18
19bernard@fuchsia-NUC8i7BEH:~/workspace/rt-smart/smart/kernel/bsp/qemu-vexpress-a9$ ./qemu-nographic.sh
20 \ | /
21- RT - Thread Smart Operating System
22 / | \ 5.0.0 build Nov 24 2020
23 2006 - 2020 Copyright by rt-thread team
24lwIP-2.0.2 initialized!
25try to allocate fb... | w - 640, h - 480 | done!
26fb => 0x61100000
27[I/sal.skt] Socket Abstraction Layer initialize success.
28[I/SDIO] SD card capacity 65536 KB.
29[I/SDIO] switching card to high speed failed!
30file system initialization done!
31hello rt-thread
32msh />
Windows下编译并在树莓派4B上执行
在Windows上同样也主要编译,在qemu或树莓派4B开发上可以进行执行起来,这里点击如何在莓派4B上执行的方式。
准备编译环境
在Windows上编译rt-smart,可以搭配RT-Thread的env工具, 请确保环境安全。因为rt-smart 的链表工具可以不记得安装链的环境。所以 Windows 的链表工具不适合安装在链环的前面。 `下解压展开。打开env的终端代码,切换到这个rt-smart包根目录,运行smart-env.bat,它会设置一定的环境变量,然后整个smart的窗口就可以使用了。
1#进入rt-smart目录,设置环境变量
2cd rt-smart
3> smart-env.bat
注:此处包括运行 smart-env.bat 设置,它的编译器设置环境,同时它也设置工具链的结果,可以在 env 终端下输入命令查看返回结果是否如下:
1# 查看环境变量是否生效
2> set RTT_CC_PREFIX
3RTT_CC_PREFIX=arm-linux-musleabi-
编译应用程序
当要编译应用程序时,使用方式和Linux的类似:
1
2cd rt-smart\userapps
3scons
编译rt-smart内核
1#进入raspberry-pi\raspi4-32目录进行编译
2cd rt-smart\kernel\bsp\raspberry-pi\raspi4-32
3scons
4... ...
5CC build/kernel/src/signal.o
6CC build/kernel/src/thread.o
7CC build/kernel/src/timer.o
8LINK rtthread.elf
9arm-linux-musleabi-objcopy -O binary rtthread.elf kernel7.img
10arm-linux-musleabi-size rtthread.elf
11 text data bss dec hex filename
12 710780 40448 64730 815958 c7356 rtthread.elf
13scons: done building targets.
编译无误后,会在当前下生成kernel7.img文件,这个是树莓派上32位的版本。目前目录rt-smart还只支持32位系统,所以在树莓派4B上是32位模式来的执行。
在树莓派上执行
准备硬件连接
为了在树莓派4B上执行,需要准备硬件清单,并连接到串口线到开发板,连接图示如下: 1.树莓派4B 2.SD卡(32GB或32GB以下) 3.USB转TTL串口线 4.网线 5.TYPE-C(用于供电) 6.读卡器(用于把编译好的文件写入SD卡中)
准备SD卡上的软件
莓派的加载需要将一些boot文件放在sd卡中。rpi4_rt-smart_boot.zip为树莓派的加载需要将一些boot文件, 将压下载后的kernel7.img一起`的SD卡根目录显示,下面的bin目录存放目录中的文件后解压缩和userapps \rootbin目录下的好目录。
打开串口调试助手,插上电源,可以看到程序已经运行起来,进入bin目录下可以执行正常的示例程序:
1heap: 0xc00c9a0a - 0xc40c9a0a
2\ | /
3- RT - Thread Smart Operating System
4 / | \ 5.0.0 build Nov 15 2020
5 2006 - 2020 Copyright by rt-thread team
6lwIP-2.0.2 initialized!
7version is B1
8bcmgenet: PHY startup ok!
9[I/sal.skt] Socket Abstraction Layer initialize success.
10[I/SDIO] SD card capacity 31465472 KB.
11found part[0], begin: 4194304, size: 256.0MB
12found part[1], begin: 272629760, size: 29.772GB
13file system initialization done!
14hello rt-thread!
15msh />/bin/hello.elf
16msh />hello world!
原作者: RT-线程