在收到新的开发板并准备开始我们的开发之旅之前,我们还需要进行一些必要的准备工作,这些准备工作包括开发环境搭建、内核编译、kernel配置等,以确保我们的开发板能够正常运行并为我们提供所需的功能。
接下来,我们将以飞凌ok113i-c开发板为例,详细介绍开发板试用的初体验,通过这些步骤帮助你顺利地开始你的开发板试用之旅。
环境搭建
板子做工精致很有份量,拿在手里沉甸甸的,各种接口一应俱全——usb、tf 卡座、sim卡座、4g模块卡座、网口、rgb lcd接口、lvds、rs485、can、各种音频口、tv-in/tv-out,板上还自带一个rtl8723du wifi/蓝牙二合一模块,作为一块主打工业控制的主控板这些接口实属绰绰有余了。
飞凌开发文档中提到已经移植好了qt5开发环境,所以这个内存跑跑qt的ui程序是再合适不过了,可惜手里没有匹配的开箱即用的lcd显示屏不然接上直接能试试出厂自带的qt测试程序了。
提供的开发资料中已经包含有ubuntu 20.04 的虚拟机文件,因为是直接用的linux版本系统,所以需要自己搭建开发环境,以下所涉内容都是在装有ubuntu 20.04的pc上进行操作,而且,因为以前在安装过t113-s3的开发环境,所以在编译sdk过程中并没有碰到其他因缺少依赖软件报的错误。
解压sdk
cat ok113i-linux-sdk.tar.bz2* | tar jx -c ~/dev/sdk/t113-i/
除了 gcc,ncurse,bison,autoconf,wget,patch,texinfo,zlib,dos2unix 之外需要安装如下:
sudo apt-get install gitsudo apt-get install gnupgsudo apt-get install flexsudo apt-get install bisonsudo apt-get install gperfsudo apt-get install build-essentialsudo apt-get install zipsudo apt-get install curlsudo apt-get install libc6-dev......
初次编译内核会遇到python 报系统库语法错误,根据经验是系统python版本问题,首先查看系统中python版本号
python --versionpython 3.8.10
不出意外的话编译系统依赖python 2.7,所以切换到python 2.7版本,具体操作如下:
首先,查看系统有几个python版本
update-alternatives --list python/usr/bin/python2/usr/bin/python3
然后,通过如下切换到想要的版本
update-alternatives --config pythonthere are 2 choices for the alternative python (providing /usr/bin/python). selection path priority status------------------------------------------------------------* 0 /usr/bin/python3 2 auto mode 1 /usr/bin/python2 1 manual mode 2 /usr/bin/python3 2 manual mode press to keep the current choice[*], or type selection number: 1
切换后,再确认python版本后进行内核编译。
内核编译完后ok113i-linux-sdk/out目录需要注意,这个是所有的编译输出目录,后面buildroot编译完也是在这个目录编译输出的。此目录中如下几个目录需要特别记住:
编译内核的交叉编译工具链
ok113i-linux-sdk/out/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi
buildroot的交叉编译工具链
printf(hello world!);ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/bin/中 arm-linux-gnueabi-g++
内核编译输出目录
ok113i-linux-sdk/out/kernel
buildroot编译
默认全部编译运行build.sh,会有如下打印有用信息,此处记录下编译qt测试程序时候的打印:
.../home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/bin/arm-linux-gnueabi-g++ -c -pipe -d_largefile_source -d_largefile64_source -d_file_offset_bits=64 -os --sysroot=/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot -o2 -o3 -wall -w -d_reentrant -fpic -dqt_no_uitools -dqt_no_debug -dqt_webkitwidgets_lib -dqt_printsupport_lib -dqt_widgets_lib -dqt_webkit_lib -dqt_gui_lib -dqt_network_lib -dqt_core_lib -i. -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5 -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtwebkitwidgets -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtprintsupport -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtwidgets -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtwebkit -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtgui -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtnetwork -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/qt5/qtcore -i. -i. -i/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/mkspecs/devices/linux-buildroot-g++ -o settings.o settings.cpp/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/bin/qmake -o makefile /home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/platform/framework/auto/qt_demo/terminal/terminal.pro ) && make -f makefile build emmc rootfspartition_fex=/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/device/config/chips/t113_i/configs/ok113i/longan/sys_partition.fexrootfs_fex_line=64rootfs_fex_str= size = 2097152rootfs_fex_size= 2097152ext4_size=1073741824(1073741824/1024/1024)/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/device/config/chips/t113_i/configs/ok113i/longan/sys_partition.fex rootfs.fex size is 2097152ext4_size= 2097152*512=1073741824creating filesystem with parameters: size: 1073741824 block size: 4096 blocks per group: 32768 inodes per group: 8192 inode size: 256 journal blocks: 4096 label: blocks: 262144 block groups: 8 reserved blocks: 0 reserved block group size: 63created filesystem with 8976/65536 inodes and 94920/262144 blocks/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/build/bin/make_ext4fs -s -l 1073741824 /home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/rootfs.ext4 /home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/target
可以知道:
移植好的qmake所在路径:
ok113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/bin/qmake
qt示例工程源代码目录在:
/home/luoyang/dev/sdk/t113-i/ok113i-linux-sdk/platform/framework/auto/qt_demo
编译好的驱动模块都在:
ok113i-linux-sdk/out/t113_i/ok113i/longan/dist
最后总结
板子出厂的rootfs中包含的基础软件是真的很全面,基本可以做到开箱即用了,wifi驱动也已经适配了,wpa_supplicant、bluealsa、bluez、alsa、tinyalsa等工具软件也已经包含。因为目前手头没有能直接可用的显示屏,所以hmi显示和视频解码等高级功能没法体验。不过对于喜欢折腾的先适配一块触摸显示屏还是很有必要的,这样可玩性更高。
雷诺Zoe电动汽车销量飙升,交付量同比增加一半
小米成为CDR试点的首个申请,采用香港IPO与境内CDR同步进行的模式
如何为深度学习选择 GPU 服务器?_目前哪里可以租用到GPU服务器?_gpu服务器出租价格
尼康半导体设备败于自我封闭?
激光雷达企业抱团 激光雷达赛道或将迎新一轮洗牌
飞凌OK113i-C开发板试用初体验
2020年最具有发展潜力的十大加密货币公司介绍
以太网AV能否帮助统一家庭网络?
ARM成为平板取代PC的强势对手
为什么要学STM32?答案就在这里
基于LinkSwitch-4开关IC提高基于BJT的方案的可靠性
智慧电梯黑匣子监控系统的介绍
电磁继电器的工作原理 电磁继电器的特性
国产氮化镓快充重大突破,三大核心芯片实现自主可控,性能达到国际先进水准
物联网水产养殖监控系统所带来的变化和好处
激光工艺在光伏产业链中的广泛应用
【直播精彩回顾】离散型制造业数字化转型
年度最强荣耀手机体验 背面采用双层膜片工艺的3D玻璃
有它搞定全屋清洁!蒸汽拖把什么牌子好?
微软删除知名数据集 拨开数据隐私的迷雾