打印
[国产单片机]

【自选开发板活动】F1C200sLinux系统开发,QT图形和NES游戏

[复制链接]
1115|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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构建使用的即可。路径如下:
buildroot-mangopi-r/output/host/bin/arm-buildroot-linux-gnueabi-gcc

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

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

export QT_QPA_FONTDIR=/usr/lib/fonts

export QT_QPA_PLATFORM=linuxfb:fb

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

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

TARBALL = InfoNES08J



# InfoNES

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

                ./../InfoNES.cpp \

                ./../InfoNES_Mapper.cpp \

                ./../InfoNES_pAPU.cpp \

                ./InfoNES_System_Linux.cpp joypad_input.cpp



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



CCFLAGS =  -O2 -fsigned-char

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



all: InfoNES



InfoNES: $(.OFILES)

        ${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



.cpp.o:

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



clean:

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



cleanall:

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



release: clean all



tar:

        ( cd ..; \

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

        gzip $(TARBALL).tar \

        )



install:

        install ./InfoNES /usr/local/bin


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


NES.zip (9.38 MB)

r3-sdcard-20220130.zip (9.99 MB)


使用特权

评论回复

相关帖子

沙发
天残梦| | 2023-4-13 09:15 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

230

帖子

2

粉丝