也是闲着无事买了个芒果派的T113的小板子,因为自己以前搞过Linux,工作也跟Linux相关,本以为可以很快搞好开发环境,结果还是折腾了两个周末,所以就把资料整理下,关键的地方列出来,希望大家少走弯路。
编译环境
编译环境的话,基本就是参照芒果派的github:
https://github.com/mangopi-sbc/Tina-Linux
但是这个地方我卡了很久,我反复用Ubuntu虚拟机,docker,各种环境都无法成功,终其原因,还是github太卡了,导致无法下载完整的工程,后面编译就各种报错。
如果大家不愿意用网盘文件(其实初学推荐网盘),非要跟我一样折腾,建议如下:
1、一定要用ubuntu 18.04的版本,不要用其他版本
2、尽量用虚拟机而不是docker,但是据说docker是可以成功的
3、四个需要wget的文件很大,可以单独下载好,放到Tina-Linux目录外备用,这样如果git clone失败,还可以再拷贝进来,节省每次下载的时间。
4、git clone的过程中,如果出现长时间的卡或者失败,建议删了重新git,特别是那个子模块的更新git submodule update --init --recursive,一旦有卡顿,就全部删了重新来,否则就算过去了,后面make还是会报错。删的时候前面四个wget的文件拷出去,后面这块就节省下载时间。
所以这里面最大的坑就是,git clone和git submodule两个命令,一定是看到非常流畅的执行完,而不是停顿或者卡。否则文件不全,后面make大概率出错。
然后环境搭建,有几个帖子,大家可以参考:
《Mangopi MQ-R:T113-s3编译Tina Linux系统》
https://blog.csdn.net/qq_28877125/article/details/126684892
《MangoPi-MQ 麻雀D1s上手教程》Tina系统编译烧录及基础分析
https://whycan.com/p_72297.html
《【嵌入式AI】全志 R329 Tina 系统镜像编译》
https://zhuanlan.zhihu.com/p/392832413
《全志在线文档》
https://www.aw-ol.com/docs
在阅读资料的时候,就看到这个在线文档就很生气,为啥R329,D1啥的都有教程,T113就没有呢,不是亲儿子吗,哈哈哈,不过有许多步骤是通用的,大家参考就好。
编译选项
对于从来没有开发过linux的同学来说,git,make这些命令就够吃一壶了,何况是make menuconfig这么复杂的东西。所以我们只需要知道敲入make menuconfig命令后,出现的界面只是为了改变我们内核的配置项就可以了。对于初次入手,我们不需要动这个地方,直接make就行,先跑起来再说。
编译的时候,直接敲入:
make FORCE_UNSAFE_CONFIGURE=1
什么多进程编译咱先不管,能编出来再说,如果不加上面那个FORCE_UNSAFE_CONFIGURE=1,会报错,加了就没事了
烧录
烧录真的是个大坑,首先,建议大家先拿芒果派现成的固件走一下烧录和开机流程,避免因为自己编译的固件有问题导致后面失败,而且还不知道为什么。
现成的固件
MQ-R-T113(RTL8189): https://mangopi.org.cn/_media/undefined/mq-r-t113-rtl8189fs-5113-dns-uart0.zip
MQ-R-T113(RTL8723): https://mangopi.org.cn/_media/undefined/mq-r-t113-rtl8723ds-5135-dns-uart0.zip
烧录的话,我们可以看到官网视频介绍了好几种工具,什么PhoeniSuit、PhoenixCard、PhoenixUSBPro,还有什么烧号工具DragonSN。搞得我一头雾水。后面我才整明白,芒果派这个T113的板子上没有焊接SPI NAND FLASH,所以这些量产工具根本用不到。我烧录系统,只需要PhoenixCard一个工具就行了,其他的都用不上,大家不要走弯路。
PhoenixCard下载地址:https://www.aw-ol.com/downloads?cat=5
PhoenixCard这个工具很简单,就是根据我们打包好的镜像配置,给TF卡分若干个区,然后把对应的boot,rootfs写进对应的区里。弄完之后,从pc读卡器上拔掉TF卡,插到T113的卡槽里,就可以启动Tina了。
PhoneixCard视频教程:(直接跳到11:25开始看,其他的没用)
关于PhoenixCard有几个要点:
1、记得选启动卡选项,而不是量产卡。
2、用PhoenixCard生产的卡,如果后面不给TIna用了,还是用这个工具去恢复TF卡,否则电脑不认。
启动
Tina的启动过程比较复杂,有兴趣的可以看下面这个视频:
懒得看视频,听我说也行。其实linux系统启动都一样,先启动uboot,大家可以理解为uboot就是一个启动器,负责将屋子收拾干净,等后面linux系统进来入驻。
我们需要用串口连接板子上的E2,E3,GND,可以用usb-ttl工具去连,于是电脑上就可以通过usb-ttl看到T113串口输出的信息了。为什么是E2、E3两个脚充当RX、TX,大家看一眼电路图就知道了,这两个脚就是默认的T113的串口0,系统打印就是从这里收发的。
当系统启动的时候,我们不停的在串口终端上敲键盘的2键,就可以让其停在uboot步骤下,并且可以下发uboot的指令去拉起内核啥的,这个有兴趣大家自己研究,uboot教程网上一大堆。
在Tina的uboot里,有个efex命令,就是可以让系统进入量产状态,这样就可以使用PhoeniSuit工具量产固件,但是这个量产状态,是为spi nand flash准备的,芒果派的板子上根本没有spi nand flash,所以这个量产状态对我们而言压根没用。我们是用SD卡启动的。就这个点,我开始一直没明白,各种量产失败,直到后面才恍然大悟,特别坑。
当然芒果派上面有spi nand flash的焊盘,大家可以自己买一个焊上去,型号我还没空查,有试过的可以给我留言,我补充上去。
Tina的启动流程里,在uboot之前还有个boot0,这个boot0就是为了拉起uboot的。大家可以理解两个峡谷之间搭悬索桥,就是先拉一个风筝线,然后再用风筝线拉粗一点的绳子,再用粗的绳子拉钢索。boot0拉uboot,uboot拉tina,其实是一个道理。之所以搞这么多层,主要还是怕某个过程烧写错了,板子变砖。因为boot0的存在,且是固化到CPU里的,所以T113永远不会变砖,大概是这个意思。但是因为我们是SD卡启动的,所以上面这些可以不管,我们玩我们的就好。
连接wifi
只要系统能正常启动,连接wifi还是比较简单,就几条命令而已,可以参照R329的官方资料:
https://r329.docs.aw-ol.com/devboardstudy/r329evb5studywifi/
搜索wifi:wifi_scan_results_test
连接wifi:wifi_connect_ap_test wifi名 密码(参数有空格的哈)
连上之后,可以用ifconfig命令查看自己的ip地址,也可以通过ping命令测试连通性。
PC驱动
板子启动后,我感觉有两种驱动,如果是量产状态,有个量产对应的设备驱动,这个我们可以不管。但是如果进了Tina系统,会有一个ADB驱动,需要大家安装,这样后面用ADB工具可以推送我们编译好的helloword到板子。
驱动下载地址:https://www.aw-ol.com/downloads?cat=5
下那个PhoeniSuit工具,里面有个Drivers目录,就有ADB驱动,插上板子到PC,设备管理器弹出感叹号,然后自己装就行了。
”ADB(tab自动补全版)“也下载下来,后面用它跟板子做文件交互。
总结
今天就写这么多吧,也是这两个礼拜折腾T113的总结,希望大家少走点弯路。其实我玩的板子很多,包括目前的工作,也是在高通和Realtek的平台上跑Linux,包括stm32,FreeRTOS还有lwip,玩了都十来年了。那为什么我选T113呢,我觉得有这么几个原因:
1、我需要一个板子,有时候帮我验证下linux小应用,树莓派我嫌太大了
2、T113不是BGA封装,如果想自己搞点开源项目,对PCB的压力比较小
3、说实话什么AI啊,机器学习啊,离我比较远,这些玩意都是大厂才玩得起的,我们个人学习,除非是这个行业,否则没必要跟着凑热闹,搞个学习模型都累死,搞完了也不知能干啥,板子放着落灰。我的学习重心主要还是做一些开源的物联网应用,远程浇个花,统计下上报的环境数据,搭建一些远程服务器啥的,都是比较实用的东西,感觉离实用性更近一点。
后面有空再补充交叉编译和分区,io操作吧,我自己也在熟悉,祝大家玩的愉快!