完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
1. 先提个纲
今天上手一块板子:R329 EVB板。 R329来自国产芯片厂商全志科技,定位是智能语音芯片。 其上一代产品是R328,19年用在了很多智能语音产品上,比如天猫精灵、百度语音助手等。 为什么能用进去?大致可以认为是功耗低、价格低、性能够用、产品阔以(绝不不是因为前东家所以才夸~)。 在2020年,全志推出了新一代的R329,主打的是更优功耗,更高性能,更高性价比,其次的亮点是里面的Arm china 0.256T AIPU,双核DSP HIFI,这我刚拿到了开发板r329_evb5_v1,就迫不及待地上手了~ 上手之前我稍微构思了下,觉得应该做成系列记录教程,由浅入深地记录我的开发过程,让工程能力偏弱的算法工程师也能跟着一步步看懂,然后上手部署实践。 于是我就想着以我朋友(接近新手)的视角来玩这块板子,分为三个阶段,上手阶段,应用阶段,魔改阶段。 上手阶段: 就是从一开始的板子上电,接线,搭开发环境、看文档、配置编译内核等等,总之是板子跑起来,为后续的开发做准备; 应用阶段: 我们尝试交叉编译过程,移植深度学习推理框架(如NCNN,TNN等),使用zhouyi AIPU跑深度学习模型,使用双核DSP做回声消除等等,最终的目的是跑一个语音模型实现关键词唤醒,跑yolo实现目标检测功能,咱先实现功能,性能、精度调优留到第三步。 魔改阶段: 这个阶段,我们越过应用者视角,进入精英开发者视角,就NPU、CPU的硬件特点进行深入hack,了解分析底层的硬件原理,知道每一条指令跑在硬件的哪个部分,知道在任一时刻,该指令出现在哪个地方哪个阶段;深入的剖析AI模型部署的方方面面,比如AI算法优化啊、量化分析啊,算子性能优化啊,性能分析啊等等,总之我觉得这部分是最有意思的。 2. 上手篇·新手级记录过程 首先,你得拿到板子对吧,怎么拿? 要么淘宝买,要么申请试用(下阶段的试用申请可以私信我了解哟)! 板子拿到了,我相信你跟我朋友(没接触过嵌入式有AI基本了解的某一线大厂算法工程师,简称朋友)一样有这样的疑问? “这块板子能干啥?” 我想了下,这么回的: “你用过智能音箱没?百度的小度、小米的小爱,阿里的天猫精灵等等,你语音一叫它就答应,还能语音互动;你去吃海底捞的时候,会发现一个端菜的机器人对吧,这种机器人可以分辨行人、桌子、菜品,你挡住它道了还会跟你battle;刚刚所说的那些产品 那些功能都是这样的板子实现的,具体来说就是在板子上跑了深度学习语音模型、图像模型比如KWS,YOLO啊啥的。” 解决了朋友的能干啥的疑问之后,我问了下朋友: “从你的角度来看,你觉得应该要有哪些资源以及知识才可把板子跑起来?然后把AI模型部署上去实现上面说的那些功能?” 朋友回答说: “。。。我还是之前在大学的时候接触过嵌入式,现在基本都忘了,我也不太清楚了呀,你突然这么一问,现在完全是懵的呀~” 也对,其实也理解,边缘嵌入式端模型工程部署是伴随着AI的发展而蓬勃兴起的,17年左右开始发展,在19年到达顶峰,目前已趋于平缓;而原来学校阶段基本教的都是嵌入式的基础知识,毕竟那时候AI还没火起来呢,现在相当于在原来的嵌入式基础上加入了AI的相关属性,因此 一部分的嵌入式工程师学习深度学习的知识,或者新晋的深度学习算法工程师学习嵌入式知识,从而就衍生了边缘端部署优化工程师的岗位,属于一个偏小众的领域。 这一顿battle之后,就得吃中饭了,先去吃饭先~好好做个干饭人~拜拜~ 俺回来啦~开整开整~~~~~~睡午觉~ 。。。。。。 (下次再也不能在周末睡午觉了,比较费钱,刚吃完午饭又得吃晚饭了。。。) 好在不饿,先开个箱吧~ 上电后,灯亮了,就知道硬件没啥大问题了,接下来开始准备软件环境。 板子的通信接口有两种一种是adb连接,一种是串口连接,我们作为开发者,两个都得配好。 第一步先装驱动,在http://netstorage.allwinnertech.com:5000/sharing/dsn8IbX8s链接下载驱动,然后在压缩包路径: 分别安装驱动,安装完后记得重启哟~ 按照官网的教程(https://r329.docs.allwinnertech.com/zh_CN/latest/devboardstudy/r329evb5compile/)来配置啥问题也没有, 好了,到此可以知道板子是好的了,而且也知道板子是预先烧录好了固件的。 此时我们按照教程去点灯也没啥问题: 于是去测一下麦克风,在板子上测得数据,然后adb pull到电脑上听一下效果,一开始用arecord指令出来很大电流声,指定参数如下图所示就声音正常了。 可以看到,在三通道下是ok的,听上去也挺清晰的。 对应的单通道下也是ok的(低音沉~高音丽~![狗头]) 2. 编译固件和烧写固件部分 我们要烧录固件,得先有源码,于是先去搞源码。 此时你得去全志的客户服务平台(https://open.allwinnertech.com/#/dashboard?menuID=1)申请一个账号,然后让官方给你开通代码权限,开好后就会发个邮件给你: 此时按照SDK下载方法一步步执行就好啦~ 然后你可以开始下代码啦,但此时你发现不知道宿主环境是啥? 找到文档《Tina Linux 系统软件 开发指南》 于是知道了要在ubuntu14.04中进行开发,于是我便弄了个虚拟机跑ubuntu 14.04,这其中也碰到了一次问题,就是我下错版本了,下的是32bit版本,因此按照文档进行环境包安装的时候就进行不下去了,最后换为64bit系统就好了,这点也是文档没有明确指出的。 好了,下载ubuntu.14.04 64bit系统镜像-->下载虚拟机Vmware-->安装ubuntu-->按照文档(《Tina Linux 系统软件 开发指南》)安装环境。。。。。 然后终于可以下代码啦~按照服务指导手册的提醒,一步步开始下代码啦~ ~~~~~~~~~~~~~~~ ································ 打个盹的功夫~ ································ ~~~~~~~~~~~~~~~ 好的,现在代码下载好了。 我们接下来试一下编译固件烧录固件的流程: 官网链接在这:https://r329.docs.allwinnertech.com/zh_CN/latest/devboardstudy/r329evb5compile/ 14.jpg 直接按照官网的流程来(行文此时正在编译中),编完后烧录一下看有没有什么问题。。。。。 A few years later…… 快了快了~ 。 。 。 Finally~ 然后我们烧录下: 然后上电,完美~ 当然,上述过程中假如我们要编译内核支持AIPU驱动可以kernel_menuconfig 进行配置: 可以看到AIPU是默认驱动支持了的,但是在软件包配置部分: 并没有提供支持,也就是说我们用不了哇,据了解是知识产权属于ARM china,全志这边并不能直接使用,需要原IP厂自己开放了; 其次HIFI双核DSP部分也是不能直接使用的,因为版权属于科声讯,因此作为发烧开发者的我们,可玩性大大降低了!因此期待尽快释放AIPU、DSP部分资源出来呀~ ok,此时整个流程都算走了一遍了,可以得到阶段性的结论: 板子是ok的,基本环境已搭建好~ 3. 交叉编译工具 这个时候我们下一步的探索就是交叉编译环境的确认了,我们只需要造个最简单的hello world函数,交叉编译后能在开发板上运行, 我要在开发板上运行怎么弄呢? 这个时候就是交叉编译 工具链出场了!啥?你问我啥叫交叉编译?为什么要有这个? 嗯,我简单说,你开发机器是虚拟机里面的ubuntu,这里编译的代码只能在虚拟机ubuntu里面跑,但是现在我要移植到目标板R329的tina中去,因此新加一个中间层,我编译的时候选择某个特定的编译器,生成的代码可以直接在R329-tina中跑,这个特定的编译器就是交叉编译器。 为什么要有这个?因为宿主机中开发方便很多啊~你要是开发板性能强到跟电脑主机一样了,各种环境也很完善了,那就不需要这么麻烦了呀,直接开发板上开发就完事了~ 好了,现在到实操了,官方文档这部分不是很详细,我把摸索的过程详尽写出来,希望能帮到后来者: 第一步在宿主机造一个简单的helloworld.c 确保宿主机能正常运行。 第二步找到交叉编译工具,最新的在线文档,https://r329.docs.allwinnertech.com/zh_CN/latest/devboardstudy/r329evb5tina/#_4 我们的目标平台是arm,因此选择arm目录; 目录内有glibc跟musl两套库,我咨询官方得知是musl库,于是我一路先择到: 在该目录下编译hellworld.c函数,得到嵌入式平台下的目标文件helloworld22,经vmhgfs共享文件,再通过adb push helloworld22 /home/,送到板子上,此时运行发现: 推测可能是: 编译器版本的问题,编译内核的跟应用的而不一致, 也有可能是因为宿主机是64bit的,而我们目标板的程序是32bit的(试了下aarch64也不行)。 因此我们先用static编译顶一下: 哇~久违的hello world啊~(我们技术渣就是这样的啦,一点点东西就很开心了~) 至此,整个流程算是跑通啦~ 小结一下: 文档还是有一些盲区的,对于一些新手朋友不是很友好,建议直接上docker啊,这样我就完全不用管环境配置问题啦~ 主要的玩点在于HIFI双核DSP跟0.25TOPs的AIPU核,但是这两个目前都没法用啊,这部分希望尽快解决呀~后面的语音+图像模型部署还等着上呢~我总不能跑在算力10几个GFLOPs的A53核上 吧~ 文档开放的不够全面,比如AIPU的一系列开发文档(手动狗头)。 呼~ 开篇总算水完啦~我这次是带着朋友一边做一边写的,根据朋友的建议,特意把某些地方写的很繁琐,希望大家不要嫌弃呀~下次见,掰掰~ |
|
|
|
只有小组成员才能发言,加入小组>>
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发
1124 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
559 浏览 0 评论
1295 浏览 1 评论
3095 浏览 0 评论
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
3039 浏览 0 评论
【开源硬件大赛】基于全志V853设计的全功能BTB学习开发板
3488浏览 8评论
3125浏览 5评论
1895浏览 4评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
89464浏览 3评论
3632浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 19:15 , Processed in 0.556994 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号