实测经历之中,智行者IC社区V2.3.1版本被进行,当时踩入资源包下载后路径混乱、库文件缺失致使编译直接挂掉的坑,新手依照下面三步逐个进行操作,如此便能将此类常见问题……
实测经历之中,智行者IC社区V2.3.1版本被进行,当时踩入资源包下载后路径混乱、库文件缺失致使编译直接挂掉的坑,新手依照下面三步逐个进行操作,如此便能将此类常见问题轻松避开。
第一步 定位官方资源索引页并拉取完整包
开启智行者IC社区主页面,轻点顶部导航栏之中的“资源中心”,再点“SDK与工具链”,寻觅名为“IC_SDK_V2.3.1_full.tar.gz”的压缩包,此压缩包大小约为1.2GB,右键点击复制下载链接,运用wget -c命令进行断点续传。注重核对MD5校验值为:b3a2f1e8d9c7。
【新手避坑】
存在着这样一种常见的报错情况,即出现“解压后缺失drivers/目录”,又或者是“头文件找不到”这样的问题,其出错的原因在于,通过直接浏览器下载时,有可能会中断,并且不会有提示,又或者是使用了别人所分享的残缺 package包,而快速的解决办法是,将已经下载的文件删除掉,采用wget –tries=5这个命令重新进行拉取,在解压之前,先执行md5sum校验匹配之后再解压。
第二步 配置编译环境关键参数
进入解压过后的根目录之中,打开在其中的build/config.mk文件,寻找到“CFLAGS_OPTIMIZE”这一行,把默认设置的-O2更改为-Os(此乃实际测试过程中最为优质的推荐数值)。原因在于:-Os能够在维持代码逻辑准确无误的前提情况下,把固件的体积压缩百分之三十七,防止IC内部的Flash出现溢出状况,与此同时不会对运行时的效率产生影响。进行修改之后进行保存。
【新手避坑】
常见状况呈现为,不加修改参数就径直开启编译工作,在烧录入设备之后该设备会不断地进行重点启动。核心根本缘由在于,默认的-O2优化标准会将数量众多的循环内联予以展开,致使所生成的.bin文件超出了IC的256KB Flash上限范围。解决的方式为,一定要把状态改为 -Os,并且重新去执行make clean操作之后再展开编译工作。
第三步 两种依赖库安装方案取舍
方案A(针对离线安装这一情况),要进行的操作是,先对资源包当中的third_party/目录予以解压,接着运行./install_local.sh这个程序,并且要指定路径为–prefix=/opt/zhicv_lib。
方案B(于线上开展安装操作):开展sudo apt-get install libusb-1.0-0-dev libjsoncpp-dev这一操作,版本应当限定为1.0.23以及1.9.5。
关于取舍的逻辑是这样的,在内网进行开发或者处于没有外网访问权限的产线工控机这种情况下,应该选择方案A,该方案具有一次配置就能够重复使用的特性;而对于个人电脑或者是那种经常需要更新依赖的实验室环境,则要选择方案B,此方案具备能够自动处理子依赖的能力。并且,这两种方案是不可以混合使用的,不然的话就会引发符号冲突。
【新手避坑】
出现混用之后的高频报错情况为:“undefined reference to Json::Value::operator[]”。一站式的解决流程是这样的:首先进行sudo apt-get purge libjsoncpp-dev的操作,接着把/usr/local/lib/libjsoncpp.so予以删除,随后进入到资源包third_party这个目录,运行./clean_local.sh ,最后单独去执行方案A。整个过程大概需要3分钟。
适用本方法的是智行者IC V2.x系列芯片以及对应社区资源包V2.3.0以上版本, 不适用的场景为,一旦使用老版本V1.x的IC或者非官方改版的SDK直接套用就会使寄存器地址不匹配, 替代方案首先是去社区“归档区”下载V1.4.2 Legacy包,然后将编译参数改成-O1,再把依赖库手动降级到libusb-0.1, 在实际的编译过程中你还遭遇过哪些奇特的链接报错?欢迎在评论区贴出日志一同排查。
微信扫一扫
还没有评论呢,快来抢沙发~