图像识别DM8127开发攻略 ——板子启动过程

简介:

   上一篇文章《图像识别DM8127开发攻略——开发环境搭建》介绍了DM8127的开发环境搭建,按本人开发攻略思路,本篇是要先写《图像识别DM8127开发攻略——软件架构浅析及编译》的,但发现如果没有搞清楚DM8127的板子如何启动,就不太好解析整个RDK的编译过程,所以本人这里先把DM8127板子的启动过程先描述一下,让大家从硬件上和软件运行角度了解整个DM8127的工作过程,然后再去学习IPNC_RDK里面的开发包架构以及开发包的移植工作。

 

上电——→DM8127内部片上的ROM CODE运行——→ROM CODE读取SYSBOOT PINS电平状态决定是从NAND FLASH BOOT还是 UART0串口 BOOT或者SD卡BOOT或者PCIe BOOT或者EMAC BOOT或者XIP BOOT——→读取ubootmin并运行ubootmin(ubootmin取得ARM控制权)——→读取u-boot并运行u-boot(u-boot取得ARM控制权)——→读取linux内核BIN并运行linux 内核(linux-2.6.37取得ARM控制权一直到板子复位或者断电)——→挂载文件系统(可以是存放在NAND FLASH的ubifs,squashfs,或者NFS)——→运行文件系统的脚本——→运行IPNC_RDK整个DEMO应用程序system_server,boalive555等,启动VPSS M3核,启动VIDEO M3核,启动浮点DSP C674X核。

 c320ced85a572ae3dd9e78825c745c61.jpg-wh_

 

整个过程可以通过上图直观了解。

一、运行ubootmin

一开始上电,DM8127主芯片内部有ROM CODE,这个是使用片上的内部RAM运行的,还没用片外的DDR3,如果新做的板子什么程序也没有,只要TPS659113电源管理芯片的供电时序正常,主晶振正常工作,那么ROM CODE就会正常运行,先读取SYSBOOT PINS(就是BOOT MODE那几个外接上拉下拉电阻的管脚状态),如果对应的那些NAND FLASH或者SD 卡或者PCIe等接口没有程序,那么DM8127这时会通过UART0 不断输出C C C C C C ……..的打印字符,试图通过UART0进行通讯下载UBOOT-OPTI BIN文件(这个UBOOT-OPTI后面介绍UBOOT移植的时候再分析)。

至于运行ubootmin这第2步骤,可以用两种方式运行方式说明一下:

1、就是在第1步没上电之前,通过TF卡(SD卡),TF卡预先COPY两个文件:MLO 和u-boot.bin到卡上,TF卡格式化成FAT32,并且是8倍速以下的卡。这个两个文件就是后面要提到的ubootmin编译和uboot-2010.06编译。其中ubootmin编译得到就是MLO文件,uboot-2010.06编译得到就是u-boot.bin。TF(SD卡)先插上到板子上面,然后给板子上电,这样就会从SD卡BOOT,运行MLO,也就是运行ubootmin。ubootmin这里就会去做很多底层驱动的初始化工作,包括DDR3初始化,这里提到一点,ubootmin还是运行在片内的RAM,并没有运行在外部DDR3。

2、还有一种超大规模工厂生产的时候,NAND FLASH可以预先烧写ubootmin BIN文件和 uboot-2010.06 BIN文件,内核BIN文件,文件系统BIN文件,然后再给SMT工厂贴片,那么这时从工厂拿回来的DM8127板子在没有硬件短路的情况下,根据硬件电路默认设置SYSBOOT PINS为NAND BOOT,那么一上电就会运行NAND FLASH 里面的ubootmin。

 

在没有程序的情况下,其实绝大部分都是使用第一种方式SD卡BOOT的方式去运行ubootmin。等到烧写好ubootmin和UBOOTBIN到NAND 的时候,我们才不需要SD卡 BOOT。所谓通过SYSBOOT PINS外接上拉电阻和下拉电阻的电平状态来BOOT ubootmin:

09335386e3e25d093d7efdf846145003.jpg-wh_

只能说是优先从哪种方式BOOT,而TI 内部ROM CODE会自动从优先的BOOT MODE去找对应的ubootmin,比如从NAND 优先BOOT,但是NANDFALSH没ubootmin,那么ROM CODE会去找SD卡BOOT(又叫MMC BOOT),如果SD卡里面没有MLO 和u-boot.bin,ROM CODE 继续找SPI BOOT,如果SPI BOOT 不成功,继续找UART0 口去BOOT,ROM CODE会一直列举完几种BOOT 模式。

 

二、运行完整uboot

ubootmin初始化结束后,会去读取uboot-2010.06 BIN文件并运行完整的uboot,即uboot-2010.06。完整的uboot-2010.06正常运行,那么可以通过网络TFTP等操作去烧写,然后就去运行linux内核了。这个完整的uboot运行是在DDR3了(代码映射到DDR3存储地址段不能和kernel冲突),有关uboot-2010.06的移植后面再单独写写,这里不累赘。

 

三、运行linux内核

 uboot-2010.06 会通过各种方式(读取NAND 里面的BIN文件或者TFTP 下载内核)并运行内核,ARM控制权交给内核,这个linux内核也是运行在DDR3。

 

四、内核挂载文件系统

   这个也不需要累赘,做过linux嵌入式开发都知道,研发先使用NFS调试通,然后再制作ubifs BIN文件或者squashfs BIN文件烧到板子NAND FLASH去。

 

五、执行文件系统的脚本

首先会去运行文件系统etc里面的一大堆脚本,最后再运行/etc/init.d/finish_ubifs.sh的脚本:

cd/opt/ipnc

./init.sh

./system_server

sleep7

./autorun_ipnc.sh

这些脚本的内容可以去对应的NFS文件系统目录打开看看。

运行DEMO程序这些都会在system_server这个应用程序去打开,或者并行去打开。都是LINUX 应用层面的程序。

 

六、其他3个核的启动

启动VPSS M3核(ipnc_rdk_fw_m3vpss.xem3),启动VIDEO M3核(ipnc_rdk_fw_m3video.xem3),启动DSP 核(ipnc_rdk_fw_c6xdsp.xe674)都有对应的load脚本。见下面2张图:

da8ff9998c4c0e4e0c46497836b39d72.jpg-wh_

 

9fe6e7175631325ae920adc8f6f251c1.jpg-wh_

 

注意上面两张图的路径,知道这些程序和脚本放在什么地方。

其实在system_server应用程序可以使用类似以下方法执行这些脚本:

              system("./scripts/load_vpss.sh&");

       system("./scripts/load_video.sh&");

system("./scripts/load_c6xdsp.sh&");

 

 

好了,有关DM8127的启动过程就写到这里,要深入了解,建议还是拿板子进行调试,理论的东西不如手动去验证,通过实际操作,才更好掌握DM8127 这个ARM+浮点DSP的开发方法。

   (题外话,有些网友通过本人QQ2505133162了解DM8127是否可以做深度学习算法,本人通过很多方面得到个人结论:DM8127不适合复杂的深度学习算法,只能做车牌识别,人脸识别,智能安防IVS这些产品,TI DAVINCI 平台有适合自动驾驶的DM505解决方案,可以做一些深度学习算法,我们目前还没有这个平台。)










本文转自 zjb_integrated 51CTO博客,原文链接:http://blog.51cto.com/zjbintsystem/1976977,如需转载请自行联系原作者

相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
目录
相关文章
|
26天前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
24 2
|
1月前
|
机器学习/深度学习 算法 开发工具
视觉智能平台常见问题之其他算法定制化开发如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
27 1
|
1月前
|
人工智能 算法 数据处理
App Inventor 2 Personal Image Classifier (PIC) 拓展:自行训练AI图像识别模型,开发图像识别分类App
这里仅仅介绍一下AI图像识别App的实现原理,AI的基础技术细节不在本文讨论范围。通过拓展即可开发出一款完全自行训练AI模型,用于特定识别场景的App了。
41 1
|
存储 机器学习/深度学习 人工智能
阿里视觉智能开放平台(灵杰AI开放服务)【评测】人脸活体检测、智能美肤、文字识别等功能很多等待你的开发
阿里视觉智能开放平台(灵杰AI开放服务)DetectLivingFace 人脸活体检测、智能美肤、文字识别等功能很多等待你的开发
阿里视觉智能开放平台(灵杰AI开放服务)【评测】人脸活体检测、智能美肤、文字识别等功能很多等待你的开发
|
XML 机器学习/深度学习 编解码
基于darknet开发了一系列的快速启动脚本,旨在让图像识别新手或者开发人员能够快速的启动一个目标检测(定位)的项目
基于darknet开发了一系列的快速启动脚本,旨在让图像识别新手或者开发人员能够快速的启动一个目标检测(定位)的项目
277 0
基于darknet开发了一系列的快速启动脚本,旨在让图像识别新手或者开发人员能够快速的启动一个目标检测(定位)的项目
|
1天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,深度学习技术在图像处理和识别领域取得了显著进展。特别是在自动驾驶系统中,基于深度学习的图像识别技术已成为关键技术之一。本文将探讨深度学习在自动驾驶系统中的应用,重点关注卷积神经网络(CNN)和循环神经网络(RNN)在车辆检测、行人识别和交通标志识别等方面的应用。通过对比传统图像识别方法,我们将展示深度学习技术如何提高自动驾驶系统的准确性和鲁棒性。
|
2天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,特别是深度学习技术的突破性进步,图像识别已成为自动驾驶领域的核心组成部分。本文旨在探讨基于深度学习的图像识别技术如何优化自动驾驶系统的性能,并分析其在实时交通场景中处理复杂视觉信息的能力。文中将介绍几种主要的深度学习模型,包括卷积神经网络(CNN)和递归神经网络(RNN),以及它们在图像分类、目标检测和语义分割中的应用。同时,文章还将讨论当前技术面临的挑战和未来的发展方向。
|
2天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶汽车中的应用
【4月更文挑战第18天】 随着人工智能技术的迅猛发展,深度学习已成为推动多个技术领域革新的关键力量。尤其在图像识别领域,深度学习技术通过模仿人类视觉系统的处理机制,显著提高了机器对视觉信息的理解和分析能力。本文将探讨深度学习在图像识别领域的核心技术原理,并重点分析其在自动驾驶汽车中的应用,如何通过精确的图像识别来增强车辆的环境感知能力,从而实现更安全、更高效的驾驶体验。