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

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介:

   上一篇文章《图像识别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,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
100 2
|
2月前
|
机器学习/深度学习 缓存 NoSQL
深度学习在图像识别中的应用与挑战后端开发中的数据缓存策略
本文深入探讨了深度学习技术在图像识别领域的应用,包括卷积神经网络(CNN)的原理、常见模型如ResNet和VGG的介绍,以及这些模型在实际应用中的表现。同时,文章也讨论了数据增强、模型集成等改进性能的方法,并指出了当前面临的计算资源需求高、数据隐私等挑战。通过综合分析,本文旨在为深度学习在图像识别中的进一步研究和应用提供参考。 本文探讨了后端开发中数据缓存的重要性和实现方法,通过具体案例解析Redis在实际应用中的使用。首先介绍了缓存的基本概念及其在后端系统性能优化中的作用;接着详细讲解了Redis的常见数据类型和应用场景;最后通过一个实际项目展示了如何在Django框架中集成Redis,
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的图像识别技术深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第27天】本文将介绍深度学习中的图像识别技术,包括其原理、应用领域及未来发展。我们将探讨如何通过神经网络实现图像识别,并分析其在医疗、交通等领域的应用。最后,我们将展望图像识别技术的发展前景。
|
4月前
|
机器学习/深度学习 JSON 开发工具
探索iOS开发:构建你的第一个天气应用深度学习在图像识别中的应用与挑战
【7月更文挑战第31天】在数字时代的浪潮中,移动应用成为了连接世界与个人的重要桥梁。本文将带你走进iOS开发的世界,通过一个实际的项目——构建一个简单的天气应用,来展示如何利用Swift编程语言和苹果的开发工具进行iOS应用开发。我们将从设置开发环境开始,逐步介绍界面设计、数据获取、以及功能实现等关键步骤。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供一个清晰的指南,帮助你理解并实施一个完整的iOS应用开发过程。让我们开始吧,一起创造属于你的第一款iOS应用! 【7月更文挑战第31天】深度学习作为人工智能领域的重要分支,已经在多个领域取得了显著的成果。特别是在图像识别方面,深
46 0
|
4月前
|
数据采集 算法 计算机视觉
LabVIEW开发指针式压力仪表图像识别
LabVIEW开发指针式压力仪表图像识别
38 0
|
6月前
|
机器学习/深度学习 设计模式 计算机视觉
深度学习在图像识别中的应用与挑战构建高效微服务架构:后端开发的新范式
【5月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习已成为推动该领域进步的关键力量。本文旨在探讨深度学习在图像识别任务中的核心技术和面临的挑战,通过分析卷积神经网络(CNN)的结构和优化策略,以及新兴的对抗性网络和迁移学习等技术,揭示深度学习如何提高图像识别的准确性和效率。同时,文章还将讨论数据偏差、模型泛化能力和计算资源限制等问题对实际应用的影响。 【5月更文挑战第30天】 在本文中,我们将探讨一种现代软件工程实践——微服务架构。通过分析其核心原则和设计模式,我们旨在为开发者提供一个关于如何构建可扩展、灵活且高效的后端系统的指导。文章将详细讨论微服务的优势,挑战以及如何克服这些
|
5月前
|
机器学习/深度学习 移动开发 文字识别
视觉智能开放平台产品使用合集之h5页面使用人脸活体检测,是否需要自己开发UI
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
人工智能 文字识别 算法
视觉智能开放平台产品使用合集之人脸搜索1:N的开发接入流程是怎样的
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
算法 计算机视觉
LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统
LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统
52 1
|
6月前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
下一篇
无影云桌面