wuxiubo 发表于 2022-4-5 14:42

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

本帖最后由 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 $@ -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的支持。如下一起编译完成。最后运行效果,如果有游戏手柄可以直接接入,没有可以使用键盘。这个挂载还不行我就没测试了。运行效果如下:





天残梦 发表于 2023-4-13 09:15

学习了
页: [1]
查看完整版本: 【自选开发板活动】F1C200sLinux系统开发,QT图形和NES游戏