Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Linux
rt smart操作系统在“正点原子-阿尔法”开发板开箱使用
发布于 2022-02-05 16:28:47 浏览:2472
订阅该版
[tocm] ## 1、准备 正点原子阿尔法linux开发板,SD卡,网络,USB线。由于正点原子的开发板和ART-PI-smart开发板使用的是一样的MPU,所以可以运行ART-PI-smart的程序。  下载ART-PI-smart软件: ART-Pi-smart https://gitee.com/rtthread/ART-Pi-smart 下载后,参考 ART-Pi Smart Docs (gitee.io) https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual?id=windows-%e4%b8%8b%ef%bc%8c%e5%bf%ab%e9%80%9f%e4%bd%93%e9%aa%8c-rt-smart 安装好编译工具与相关软件,下面的程序的下载主要采用TFTP下载,所以还需要安装好TFTP工具软件,上面的链接中有下载。 ## 2、编译程序 设置编译环境使用的工具链的全局变量,在ART-Pi-smart目录下右键打开conEmu软件,执行smart-env.bat来设置。  编译操作系统内核:进入了bsp目录下,执行scons,即在imx6ull-artpi-smart下面生成了rtthread.bin文件,此文件加载到imx6ull芯片DDR 0x80001000位置后即可以运行操作系统了。  编译应用程序,进行userapp目录下面,执行scons编译即可,scons -c清除编译目标, --verson为打印编译的详细log。编译后把生成的可执行文件,在ART-Pi-smart\userapps\root目录下在,复制root文件夹到SD卡里面就行了。 ``` zhaoshimin@ZSM E:\rt-thread\ART-Pi-smart\userapps > scons scons: Reading SConscript files ... scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly File "..\tools\building.py", line 174, in GetCurrentDir scons: done reading SConscript files. scons: Building targets ... CC apps\tftp\packages\netutils-latest\tftp\tftp_client.o CC apps\tftp\packages\netutils-latest\tftp\tftp_port.o CC apps\tftp\packages\netutils-latest\tftp\tftp_server.o CC apps\tftp\packages\netutils-latest\tftp\tftp_xfer.o CC apps\webclient\packages\webclient-v2.1.2\src\webclient.o CC apps\webclient\packages\webclient-v2.1.2\src\webclient_file.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_alias.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_asp.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_auth.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_cgi.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_index.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_log.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_ssi.o CC apps\webserver\packages\webnet-v2.0.2\module\wn_module_upload.o CC apps\webserver\packages\webnet-v2.0.2\samples\wn_sample.o CC apps\webserver\packages\webnet-v2.0.2\samples\wn_sample_upload.o CC apps\webserver\packages\webnet-v2.0.2\src\webnet.o CC apps\webserver\packages\webnet-v2.0.2\src\wn_mimetype.o CC apps\webserver\packages\webnet-v2.0.2\src\wn_module.o CC apps\webserver\packages\webnet-v2.0.2\src\wn_request.o CC apps\webserver\packages\webnet-v2.0.2\src\wn_session.o CC apps\webserver\packages\webnet-v2.0.2\src\wn_utils.o CXX build\cpp1114\cpp1114.o CC build\gpio\gpio_test.o CC build\hello\main.o CC build\i2c\i2c_test.o CC build\ntp\main.o CC build\ping\main.o CC build\pong\main.o CC build\pwm\pwm_test.o CC build\sysinfo\main.o CC build\tftp\main.o CC build\uart\uart_test.o CC build\uPnP\upnp_daemon.o CC build\vi\optparse-v1.0.0\optparse.o CC build\vi\vi.o CC build\vi\vi_utils.o CC build\webclient\main.o CC build\webserver\main.o LINK root\bin\cpp1114.elf LINK root\bin\gpio.elf LINK root\bin\hello.elf LINK root\bin\i2c.elf LINK root\bin\ntp.elf LINK root\bin\ping.elf LINK root\bin\pong.elf LINK root\bin\pwm.elf LINK root\bin\sysinfo.elf LINK root\bin\tftp.elf LINK root\bin\uart.elf LINK root\bin\uPnP.elf LINK root\bin\vi.elf LINK root\bin\webclient.elf LINK root\bin\webserver.elf scons: done building targets. zhaoshimin@ZSM E:\rt-thread\ART-Pi-smart\userapps ``` ## 3、rt smart操作系统启动 rtthread.bin文件中编译生成的可执行程序,它要加载到DDR内存中才能运行。所以需要使用U-BOOT来启动引导下载。现在阿尔法开发板已经在EMMC中下载好了U-BOOT程序,开发板选择使用EMMC启动,启动后按任意键停止在U-BOOT中。使用网线连接开发板的网口1(此u-boot程序已经修改使用网口1)到电脑的网口,设置电脑的IP地址10.10.26.84。 ``` U-Boot 2016.03 (Feb 02 2022 - 22:58:25 +0800) CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 49C Reset cause: WDOG Board: MX6ULL 14x14 EVK I2C: ready DRAM: 512 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Display: ATK-LCD-4.3-480x272 (480x272) Video: 480x272x24 reading alientek.bmp ** Unable to read file alientek.bmp ** Error: no valid bmp image at 88000000 In: serial Out: serial Err: serial switch to partitions #0, OK mmc1(part 0) is current device Net: FEC0 Normal Boot Hit any key to stop autoboot: 3 2 => ``` 设置U-BOOT中的IP地址,子网掩码,TFTP服务器IP地址。使用setenv命令,最后使用saveenv来保存。 ``` setenv ipaddr 10.10.26.8 setenv ethaddr 00:05:9f:04:d2:35 setenv gatewayip 10.10.26.1 setenv netmask 255.255.255.0 ``` 电脑上面安装TFTP软件,选择文件夹到rtthread.bin目录。先后执行tftp 80001000 rtthread.bin下载程序到内存,再使用go 80001000运行程序。  ``` => tftp 80001000 rtthread.bin FEC0 Waiting for PHY auto negotiation to complete.... done Using FEC0 device TFTP from server 10.10.26.84; our IP address is 10.10.26.8 Filename 'rtthread.bin'. Load address: 0x80001000 Loading: *T ################################################################# ########## 205.1 KiB/s done Bytes transferred = 1100464 (10cab0 hex) => go 80001000 ## Starting application at 0x80001000 ... \ | / - RT - Thread Smart Operating System / | \ 5.0.0 build Feb 3 2022 2006 - 2020 Copyright by rt-thread team lwIP-2.1.2 initialized! [15] E/drv.enet: emac device init success [19] I/I2C: I2C bus [i2c3] registered [23] I/I2C: I2C bus [i2c4] registered [81] I/SDIO: SD card capacity 3979776 KB. found part[0], type:FAT32, begin: 0, size: 3.810GB [135] I/SDIO: emmc card capacity 7634944 KB. found part[0], type:unkonw, begin: 0, size: 128.0MB found part[1], type:LINUX, begin: 0, size: 7.150GB [251] I/touch: rt_touch init success [254] I/gt911: touch device gt911 init success [258] I/sal.skt: Socket Abstraction Layer initialize success. [464] W/app.filesystem: sd card mount to '/mnt' failed! emmc file system initialization done! sd0 file system initialization done! hello rt-smart msh />[3728] D/drv.enet: enet1 link up msh /> ``` ## 4、文件系统挂载 这里rt smart操作系统启动后,会执行文件系统挂载操作,对应的代码如下图,它会把emmc设置挂载在根目录下,SD卡挂载到/sd目录下。我的开发板第一次启动发现无法挂载,查了一段时间是目录的问题。emmc中要有sd目录才行,同进要有fat32文件系统分区,emmc中的分区可以使用开发板中提供的linux系统的下载文件,通过usb启动后,使用mfgtools 进行下载即可,下载后会在emmc中形成3个分区,0分区存储uboot,1分区是fat32分区存储设备树和Linux启动映像程序,分区2是Linux的根文件系统ext4文件系统。  第一次启动后,emmc有FAT32分区,所以可以正常挂载的,在命令中执行mkdir sd创建文件夹。如下图,这样再次启动rt smart系统后sd卡就能正常挂载了。由于smart系统程序中对SD卡的插拔处理的不好,系统启动后,拔出sd卡再插上后就可无法查看sd卡中的文件了。 ``` FEC0 Waiting for PHY auto negotiation to complete..... done Using FEC0 device TFTP from server 10.10.26.84; our IP address is 10.10.26.8 Filename 'rtthread.bin'. Load address: 0x80001000 Loading: *T ################################################################# ########## 205.1 KiB/s done Bytes transferred = 1100464 (10cab0 hex) ## Starting application at 0x80001000 ... \ | / - RT - Thread Smart Operating System / | \ 5.0.0 build Feb 3 2022 2006 - 2020 Copyright by rt-thread team lwIP-2.1.2 initialized! [15] E/drv.enet: emac device init success [19] I/I2C: I2C bus [i2c3] registered [23] I/I2C: I2C bus [i2c4] registered [81] I/SDIO: SD card capacity 3979776 KB. found part[0], type:FAT32, begin: 0, size: 3.810GB [135] I/SDIO: emmc card capacity 7634944 KB. found part[0], type:unkonw, begin: 0, size: 128.0MB found part[1], type:LINUX, begin: 0, size: 7.150GB [251] I/touch: rt_touch init success [254] I/gt911: touch device gt911 init success [258] I/sal.skt: Socket Abstraction Layer initialize success. [464] W/app.filesystem: sd card mount to '/mnt' failed! emmc file system initialization done! sd0 file system initialization done! hello rt-smart msh /> msh /> msh />ls Directory /: zImage 6786272 imx6ull-14x14-emmc-4.3-480x272-c.dtb38823 imx6ull-14x14-emmc-4.3-800x480-c.dtb38823 imx6ull-14x14-emmc-7-800x480-c.dtb38823 imx6ull-14x14-emmc-7-1024x600-c.dtb38823 imx6ull-14x14-emmc-10.1-1280x800-c.dtb38823 imx6ull-14x14-emmc-hdmi.dtb39655 imx6ull-14x14-emmc-vga.dtb39563 rtthread.bin 1100464 msh />[3383] D/drv.enet: enet1 link up msh />mkdir sd msh />ls Directory /: zImage 6786272 imx6ull-14x14-emmc-4.3-480x272-c.dtb38823 imx6ull-14x14-emmc-4.3-800x480-c.dtb38823 imx6ull-14x14-emmc-7-800x480-c.dtb38823 imx6ull-14x14-emmc-7-1024x600-c.dtb38823 imx6ull-14x14-emmc-10.1-1280x800-c.dtb38823 imx6ull-14x14-emmc-hdmi.dtb39655 imx6ull-14x14-emmc-vga.dtb39563 sd
rtthread.bin 1100464 msh />[3383] D/drv.enet: enet1 link up msh /sd>cd ro msh /sd>cd root msh /sd/root>cd bin msh /sd/root>cd bin msh /sd/root/bin>ls Directory /sd/root/bin: busybox.elf 590884 gpio.elf 194664 i2c.elf 196060 rtthread.bin 1100464 ntp.elf 234884 ping.elf 203628 pong.elf 203060 pwm.elf 204112 sdl_test.elf 1046388 uart.elf 203624 uhttpd.elf 173400 uPnP.elf 223524 vi.elf 291040 webclient.elf 241720 webserver.elf 330372 hello.elf 193456 tftp_server.o 17844 tftp.elf 238008 msh /sd/root/bin> ``` 测试中发现的问题:如果使用的SD卡有2个分区,一个分区用于存储uboot.imx,另外一个分区是fat32文件系统, 那么挂载文件系统,SD卡目录下二级目录在查看文件时会显示驱动错误。如下打印信息。 ``` msh />ls Directory /: System Volume Information
webserver.elf 319924 gpio.elf 194676 hello.elf 193472 i2c.elf 196068 ntp.elf 225844 ping.elf 194736 pong.elf 194168 pwm.elf 195216 uart.elf 194712 uPnP.elf 214452 vi.elf 282072 mould.xml 1289 var
webnet
msh />cd var msh />cd var msh /var>ls Directory /var: dist
msh /var>ls Directory /var: dist
msh /var>cd dis msh /var>cd dist msh /var/dist>ls Directory /var/dist: favicon.ico 5974 index.html 3083 rtsmart.db 16384 [27181] E/SDIO: mmcsd request blocks error [27185] E/SDIO: -1,0,0, 0x00000002,0x00004001 BAD file: cgi-bin [27191] E/SDIO: mmcsd request blocks error [27195] E/SDIO: -1,0,0, 0x00000002,0x00005440 msh /var/dist>cd.. [29281] E/SDIO: mmcsd request blocks error [29284] E/SDIO: -1,0,0, 0x00000002,0x00004000 [29289] E/SDIO: mmcsd request blocks error [29292] E/SDIO: -1,0,0, 0x00000002,0x00004000 [29297] E/SDIO: mmcsd request blocks error [29301] E/SDIO: -1,0,0, 0x00000002,0x00004000 ``` ## 5、运行应用程序 进入到/sd/root/bin目录下,执行gpio.elf &后,即可启动gpio的程序,开发板的红色led灯会闪烁。 ``` msh /sd/root/bin>ls Directory /sd/root/bin: busybox.elf 590884 gpio.elf 194664 i2c.elf 196060 rtthread.bin 1100464 ntp.elf 234884 ping.elf 203628 pong.elf 203060 pwm.elf 204112 sdl_test.elf 1046388 uart.elf 203624 uhttpd.elf 173400 uPnP.elf 223524 vi.elf 291040 webclient.elf 241720 webserver.elf 330372 hello.elf 193456 tftp_server.o 17844 tftp.elf 238008 msh /sd/root/bin>gpio.elf & ``` 第一次运行这个gpio.elf程序,你的开发板上面的红色Led灯不会闪烁,原因是开发板上驱动LED的IO与程序不对,应做如下修改,再编译一下生成gpio.elf后,复制到SD卡中启动即可。  ## 6、使用TFTP功能进行应用程序下载 上面应用程序的调试都是通过电脑复制文件到SD卡中来完成的,这个操作起来很繁琐,调试启动rt smart内核使用TFTP来下载,那么应用程序使用TFTP来下载到SD卡或EMMC文件系统中不是更方便。 看了rt smart中支持udb.exe来发送文件到开发板上,查看了系统中没有相关代码支持此udb功能,但是没有找到相关代码,也没有资料,无法实现些功能。决定使用TFTP功能实现,软件包中有TFTP软件模块,可以下载下来试试。 进入到userapp中,复制hello文件夹一份修改成tftp文件夹,进入到tftp文件夹,打开menuconfig下载tftp软件包。  保存,退出后,执行pkgs --update来下载软件包。 下载完成后,执行scons编译,一堆错误,看来TFTP软件包要进行修改,修改过程暂时不表,可以单独另写一篇文章了。经过不断的修改,调试,包括分析TFTP传输的正确的过程数据抓包,终于编译出了tftp.elf。实现了开发板做为客户端从电脑中读取文件和写入文件。 从电脑中下载tftp.elf文件到开发板上去,如下图:  从开发板中把文件rtthread.bin发送到电脑上面,如下图:  有了TFTP功能后,调试应用程序,rt smart内核到开发板上面就方便的多了。 ## 7、设置自动启动rt smart内核 由于开发板使用的EMMC启动,所以需要把rtthread.bin放在emmc中文件系统中,可以使用TFTP功能直接下载rtthread.bin到emmc文件系统中,可以参照第6节介绍。在U-BOOT中设置自动启动命令,rtthread.bin位于emmc中分区1中的文件系统,分区0存储uboot程序,分区2存储linux运行的根文件系统。在uboot命令行中执行setenv bootcmd 'fatload mmc 1:1 80001000 rtthread.bin; go 80001000',之后在saveenv保存即可。 可以参考原文我的博客:[rt smart操作系统在“正点原子-阿尔法”开发板开箱使用](https://blog.csdn.net/fhqlongteng/article/details/122790403)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
fhqmcu
个人博客:https://blog.csdn.net/fhqlongteng
文章
16
回答
60
被采纳
1
关注TA
发私信
相关文章
1
RT-Thread Studio 跨平台
2
Linux下Scons编译工程遇到宏定义的问题,如何解决?
3
Linux下开发rtthread,求资料
4
qemu-vexpress-a9运行 qemu-dbg.sh 提示错误
5
ART-Pi SDK在Linux环境下编译不通过问题
6
虚拟串口在Linux下的使用问题
7
linux命令行通过串口发送finsh指令无法执行
8
怎么移植linux上的软件
9
linux下使用RT-Thread Studio插件如何进行stlink下载
10
代码在ubuntu上编译不能运行
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部