中级会员
- 积分
- 325
- 金钱
- 325
- 注册时间
- 2022-4-12
- 在线时间
- 41 小时
|
本帖最后由 18768178170 于 2022-4-12 15:03 编辑
断断续续接触linux2年了,工作中公司是采购现成的Linux-Qt4.8HMI屏幕做开发应用,今年才真的开始学习Linux系统构建和驱动开发,记录一下踩坑过程,与大家互相借鉴
先抱歉一句,正点原子的板子+屏幕有点小贵,没舍得买,没有给到正点原子物质支持(买的其他厂家的imx6ul开发板,HMDI输出到电视/显示器做屏幕,比较经济实惠,主要是我吃灰的板子太多了,交叉学习,收获应该会更多吧)
但是!
正点原子的资料真的好!文档详细、错别字什么的低级错误也少(起码比我买的开发板的厂家的资料要好的多),个人觉得对入门新手来说,资料真的非常重要,有点点小错误造成的编译失败,错别字,少打一个字,可能会对一些Linux名称的记忆造成混乱,真的会对入门新手造成成吨的暴击
正点原子的资料真的好!
正点原子的资料真的好!
正点原子的资料真的好!
现在跟大家分享一下踩坑历程~
鉴于本人既是新手入门,又菜又作,跟大家说明一下我的开发环境
Win11+VMware16.2.2+Ubuntu20.04
1、为了坚定自己学习意志,给家里买了一台新的台式机,某想i7-12700的主机箱,然后预装的系统是Win11,因为本人太菜,遇到问题喜欢360一键修复,某想预装的Win11自带了软件管家、软件商店什么的,感觉还有点方便,所以即使网上都说Win11问题多,但是我也没有去回退到Win10(因为我觉得,这么大的公司,敢发布出来的版本,对软件的兼容性不会这么差吧,然后就被pa的一巴掌,报应来的太快了点,出师未捷身先死的节奏啊。。。)Win11+VMware15.5竟然打不开Ubuntu20.04的虚拟机,一起动虚拟机就蓝屏
上网百度了半天,大家也遇到了这样的问题,各种招都有,反正我试了没啥用,最后采用了某网友的好办法,直接安装最新的VMware,果然问题迎刃而解,Ubuntu20.04成功启动了(至于序列号什么的,我天朝广大热心网友很多的)
后面为了方便,我就不打Ubuntu20.04了,直接打Ubuntu了。。。
2、启动Ubuntu了,该给开发板搞搞网口和Ubuntu上网问题了。我的电脑是Wifi上网,主机的网口跟开发板的网口连接。可能是现在高版本的VMware都比较高级,Ubuntu能直接上网,(几年前用别的厂家资料的开发环境,连上网设置都费了老大的劲),但是Ubuntu不能ping开发板,也不能ping宿主机(Win11),修改了Ubuntu的ip,能ping开发板,也能pingWin11了,但是Ubuntu又不能上网了(难道真的要在家里搞个交换机吗?!这么大的公司,版本都到16了,连这样的应用场景都没有考虑到吗?!)网上直接百度不到解决方法,整个人有点小暴躁,出师未捷身先死的节奏又要来了吗,然后我就仔细翻看了开发板厂家的资料,完全没有提到解决方法,最后想到了正点原子的资料,果然,我们正点原子的资料是真的好!在《【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.2》中的1.4,就介绍了我的应用场景设置办法,问题解决了,给我这个菜鸡注入了一剂强心针,继续开心的学习。。。至于工具链什么的其他开发环境的搭建,各个厂家资料差不多,Windows复制到Ubuntu,解压,添加环境变量,照做就行了
3、基本的环境有了,着手Linux3大件了,uboot,kernel,rootfs,对于类似我这种工作主要做驱动和应用开发的人,我建议大家就不要看什么uboot的启动流程,Linux的启动流程,rootfs启动流程什么了,看的真的头晕,无数次影响我的学习积极性,而且对我这样的工作方向没什么用,(系统开发的人大神除外),先编译个厂家开发好的uboot,体现下编译和烧录系统吧,没什么问题,下一趴。。。继续搞一下sd卡启动uboot,哎呀,正点原子的imxdownload在Ubuntu20.04上运行不起来,正点原子的资料竟然都有错吗?!不!错的一定是我,因为正点原子资料里的Ubuntu是16.04版本,而我用的是Ubuntu20.04,虽然都是64位系统,怕是两个版本不太兼容,正点原子提供了imxdownload.c源文件,用Ubuntu20.04自带的gcc重新编译下,生成新的imxdownload,问题又解决了
4、kernel编译目前没有什么大问题,驱动开发刚开始学习,以后踩坑了来补充补充。。。
5、Ubuntu20.04根文件系统构建编译buildroot-2019.02.6时,会出现一个错误,好像是要在环境变量里增加错误中提到的一个变量,但是并没有用,还是无法正常编译,鉴于VMware16.2.2要用新得版本才能正常启动,教程资料中提到的buildroot是2019版的,是不是也要升级下buildroot的版本,于是根据教程中的连接,下载了buildroot-2020.02.6,提高一个年份跟Ubuntu保持一致,编译成功,问题又解决一个,下一趴。。。
6、既然Windows是新的,VMware是新的, Ubuntu是新的,当然Qt也移植教程中比较新的Qt5.12.9吧,早就不满意市面上大部分的HMI屏都还是Qt4.8.x版本了。但是我没有买RGB的LCD屏幕,只能用HDMI输出信号到显示器,先测试HDMI输出吧,因为我的板子和正点原子资料并不配套,调试HDMI稍稍有点不同,主要是SiI902x芯片的复位引脚和中断引脚不同,注意下设备树文件的修改,然后个人觉得正点原子教程中的修改SiI902x驱动源码部分,跟中断引脚相关的部分好像不一定需要修改,至少我的板子上我没有改,HDMI也驱动成功了。Qt部分的移植包含了tslib,教程《【正点原子】I.MX6U 移植Qt5.12.9 V1.0》版本有点问题,就是libts.so相关的环境变量没有设置,在《【正点原子】I.MX6U 移植Qt5.12.9 V1.1》中已经改过来了,但是我个人觉得还是在环境变量中用4.3节移植Qt到文件系统中的LD_LIBRARY_PATH比较舒服,保持一致,而且用export LD_LIBRARY_PATH=xxxxx:yyyyyLD_LIBRARY_PATH这样的格式是不是更好点,教程里没有后半段,会不会影响LD_LIBRARY_PATH原来的变量值?tslib成功了,下面是重点Qt5.12.9了。Qt5.12.9移植过程很顺利,按照教程一步一步来就好,只是有一点,教程中提示,教程中方法移植的Qt5.12.9不支持USB鼠标设备热插拔,运行Qt程序前,要先将鼠标插好,原因是要libudev,这个问题说大不大,说小不小,让人还是有点不舒服,试试能不能搞定吧。第一反应当然是上网百度,这方面的资料很少,也可能是我关键词搜索的不对,反正我在网上看到的只有2个方法:方法1:修改Qt中qdevicediscovery.c源码文件,有人说能成功实现热插拔,但是我还是觉得,竟然官方有提示需要libudev,那肯定不用修改源码,这个方法还是不搞了,万一搞1个bug,造成了9999个bug就哭了;方法2:移植udev,但是网上看到的都是说udev移植失败,尝试移植eudev,也能得到libudev,具体的移植方法网上有,这里我就不写详细的过程了,我写个大概的过程:1、下载eudev(具体版本没有尝试很多,鉴于前面的版本问题造成的编译失败,我选了最新的eudev-3.2.9),编译eudev;2、将编译得到的include下的所有文件复制到交叉编译器的指定路径下,我的是/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include;3、将编译得到的lib下的.so和.a文件复制到交叉编译器的指定路径下,我的是/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib;4、修改教程中的autoconfig.sh文件内容,增加-libudev和-evdev,如果没有前面移植的libudev,autoconfig.sh运行时会报错,提示没有libudev,按教程编译Qt5.12.9,这个耗时真的长,我编译了50分钟;5、重新配置buildroot,将systemconfiguration中的dev management配置修改为Dynamic usingtmpfs+eudev,其他保持跟教程一致,编译buildroot。这样移植好的Qt5.12.9就能支持USB设备热插拔了!!!成功的时候还是有点小开心的~
7、有一个我的开发板厂家提到的但是正点原子没有提到的东西,就是samba,将Ubuntu的一个文件夹路径映射到Windows成一个磁盘,这样在Windows下运行vscode,编辑工程目录就没那么多bug了,之前看左盟主的视频在Ubuntu下运行vscode,感觉想口吐芬芳的节奏,哈哈哈哈,有兴趣的朋友可以上网搜索一下
8、现在暂时没有关闭的问题有2个:1、我的Linux启动的时候没有看到小企鹅,不知道是不是因为我没有LCD屏幕,用HDMI输出的关系;2、openssh移植后,MobaXterm能登入开发板,但是左侧显示的不是sftp,是scp,这个可能是导致我在QtCreator中添加设备失败的原因,本来可以直接在QtCreator中部署Qt软件到开发板调试的
如果有朋友能指点一下,感激不尽!
第一篇分享就先简单的写到这里,欢迎大家交流心得!!!
|
|