[国产单片机] 【自选开发板活动】F1C200sLinux系统开发,QT图形和NES游戏

[复制链接]
2307|1
 楼主| wuxiubo 发表于 2022-4-5 14:42 | 显示全部楼层 |阅读模式
本帖最后由 wuxiubo 于 2022-4-28 22:50 编辑

#申请原创#@21小跑堂
【自选开发板活动】F1C200sLinux系统开发,QT图形和NES游戏
首先是准备工作,我们交叉编译需要一个LINUX系统,可选择安装一个Ubuntu的虚拟机。然后就是几大块。U-boot,linux,根文件系统,最重要的是交叉编译工具链,如下几个。
接着就是往/etc/profile里面添加我们交叉编译工具链路径。之后需要重启下虚拟机。
重启后我们输入arm-如果TAB键按下出现很多,就证明成功了。
我们这里需要挨个编译,不过我们使用的开发板构建了一个Buildroot文件系统,我们可以使用其完成全部构建,以及添加我们需要的东西,本次我们主要还是测试QT和NES游戏移植。
我直接下载了其文件,然后开始构建。
Configs下有三个版本的配置文件,我们选择R3,对应我们开发板。
使用命令make widora_mangopi_r3_defconfig进行配置。
之后使用make -j16 开始多线程编译。
中间需要下载很多包,可以等待直接下载。
构建完成时他会提示我们,把所有东西都放在了output目录下。
这里保存了我们需要的所有东西。
我们调试阶段可以使用他提供的SD卡启动文件。
使用win32磁盘工具可以直接烧写进U盘,然后插入板子上的SD卡位置,就能从SD卡启动了。如下图:
基本构建完成后我们需要添加QT,buidroot里就自带了QT。我们需要使能下即可。
测试的话我们只需要勾选几个即可,这样就能编译QT了。
再次make下,这样就能在生成的rootfs.tar中找到QT的lib了,如下图:
这样仅证明QT编译了,还不一定可以使用,这时候我们需要在虚拟机上安装下QT,进行交叉编译环境搭建。
这里我在LINUX版本中选择的是5.9版本。
只需./文件名,就能运行安装程序。安装完成后我们需要搭建开发板的构建套件。如下:
进入Tool->option中,选择buid&run。在编译器中我们需要添加GCC和G++编译器。这哥选择buildroot构建使用的即可。路径如下:
  1. buildroot-mangopi-r/output/host/bin/arm-buildroot-linux-gnueabi-gcc

  2. buildroot-mangopi-r/output/host/bin/arm-buildroot-linux-gnueabi-g++
在QT版本中找到我们构建QT的版本,路径如下:
  1. buildroot-mangopi-r/output/build/qt5base-5.12.8/qmake/qmake

这样有了这三个,我们就能在kits中添加板子的构建了。
仅需这三步就完成了我们arm-qt的编译器,之后新建工程。
在kits中选择我们的arm-qt即可。
在新建工程中选择我们的。Ui。进入随意拖动控件即可完成测试工程。
从左边的控件库中拖动到右边即可。
最后点击锤子进行构建。
最后在构建目录下找到生成的程序hello,查看文件类型,为ARM可执行文件,拷贝到arm开发板执行。
  1. export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins/

  2. export QT_QPA_FONTDIR=/usr/lib/fonts

  3. export QT_QPA_PLATFORM=linuxfb:fb

需要添加三个环境变量,执行效果如下:
和电脑端一致,是正确的,可以运行的了。

最后我们测试下NES移植,这个网上有开源的。我们进入工程下只需修改Linux下的Makefile文件即可。
下面的库是我下载现成的,保证其能编译通过的。附件中会有。
  1. CC = arm-buildroot-linux-gnueabi-gcc

  2. TARBALL = InfoNES08J



  3. # InfoNES

  4. .CFILES =       ./../K6502.cpp \

  5.                 ./../InfoNES.cpp \

  6.                 ./../InfoNES_Mapper.cpp \

  7.                 ./../InfoNES_pAPU.cpp \

  8.                 ./InfoNES_System_Linux.cpp joypad_input.cpp



  9. .OFILES =       $(.CFILES:.cpp=.o)



  10. CCFLAGS =  -O2 -fsigned-char

  11. LDFILGS = -lstdc++              # gcc3.x.x



  12. all: InfoNES



  13. InfoNES: $(.OFILES)

  14.         ${CC} -o InfoNes -I /usr/local/libnes-arm/libasound-arm/include ${LDFILGS} ${.OFILES} -lm -lpthread -L /usr/local/libnes-arm/libzlib-arm/lib -lz -L /usr/local/libnes-arm/libasound-arm/lib -lasound



  15. .cpp.o:

  16.         $(CC) $(INCLUDES) -c $(CCFLAGS) $*.cpp  -o $[url=home.php?mod=space&uid=72445]@[/url] -I /usr/local/libnes-arm/libasound-arm/include



  17. clean:

  18.         rm -f $(.OFILES) ../*~ ../*/*~ core



  19. cleanall:

  20.         rm -f $(.OFILES) ../*~ ../*/*~ core InfoNES



  21. release: clean all



  22. tar:

  23.         ( cd ..; \

  24.         tar cvf $(TARBALL).tar ./*; \

  25.         gzip $(TARBALL).tar \

  26.         )



  27. install:

  28.         install ./InfoNES /usr/local/bin


上面是完整的Makefile.
底板要运行还需要.nes的游戏程序这个可以网上找,下面也会分享,运行只需要自己改名即可。还需要再buildroot中添加alsa的支持。如下一起编译完成。
最后运行效果,如果有游戏手柄可以直接接入,没有可以使用键盘。这个挂载还不行我就没测试了。
运行效果如下:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
天残梦 发表于 2023-4-13 09:15 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

260

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部