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