别打牛牛

  • 2023-11-30
  • 发表了主题帖: ROS让机器人开发更便捷,基于RK3568J+Debian系统发布!

    ROS系统是什么 ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。 图1   随着工业智能化的快速发展,智能机器人设备已成为工业自动化体系的佼佼者,而智能机器人设备核心—ROS系统,是机器人领域的集大成者,主要应用于机器人控制领域,如AGV工业机器人控制器、智能机械臂控制器、机器人导航系统等。   ROS系统主要特点有哪些 (1) 提供丰富的机器人算法库 机器人的各种控制以及通信离不开算法库的支持,ROS系统提供丰富且功能强大的机器人算法库,如坐标变换、运动控制等。机器人开发者可根据开发需要,简单快捷地调用合适的算法库,以提高开发效率,加快开发进程。 (2) 开源免费,架构精简 ROS系统是一个开源免费,架构精简的机器人操作系统。ROS被设计为尽可能精简,以便为ROS编写的代码可与其他机器人软件框架一起使用,如ROS已与OpenRAVE、Orocos和Player集成。正是由于这一特点,探索开发ROS系统的人员众多,遍布世界各地,形成一种“百花齐放,家争鸣”局面,促使ROS功能日益强大。“开源免费、架构精简”这也更是意味着可大大降低产品开发成本,缩短产品开发周期,提高产品开发效率。 (3) 支持实时控制与通信,数据安全可靠 如今ROS系统支持实时控制与通信,并且数据安全可靠。“实时性”、“安全性”是如今工业自动化行业的普遍追求,特别是对于AGV开发,若AGV机器人的主控制器、雷达、摄像头、GPS等部件的控制、通信的实时性与安全性得不到保障,导致的后果将是核心数据泄露、路线控制偏离、系统通信异常等严重后果。而ROS系统凭借其优势,已成为AGV开发利器,广泛应用于各种机器人开发,并逐渐成为主流。 RK3568J + Debian的ROS2系统演示案例 创龙科技SOM-TL3568是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55全国产工业核心板,主频高达2.0GHz。核心板CPU、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%,并提供国产化率认证报告。   我司RK3568J平台提供的ROS系统启动镜像文件update.img位于产品资料“4-软件资料\Demo\platform-demos\ros2_foxy\bin\”目录下,请先参考《Linux系统启动卡制作及系统固化》文档,将镜像文件update.img通过“瑞芯微创建升级磁盘工具”制作SD启动卡(即ROS系统启动卡),然后将SD启动卡插至评估板Micro SD卡槽。亦可通过SD升级卡或USB固化方式将系统固化至eMMC。   基于Python语言的通信演示 案例功能:基于Python语言,启动ROS节点发布与订阅消息,实现订阅消息节点与发布消息节点之间的实时通信。 请将评估板上电启动,执行如下命令,配置评估板测试环境。 Target#export COLCON_CURRENT_PREFIX=/opt/ros Target#       source /opt/ros/local_setup.sh   图 2   执行如下命令,启动ROS节点订阅消息。 Target#         ros2 run demo_nodes_py listener &     图 3   执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时评估板串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。 Target#         ros2 run demo_nodes_py talker 图 4   执行如下命令,查看并根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。 Target#         ps -a Target#       kill 1256 Target#         kill 1257 图 5   基于C++语言的通信演示 案例功能:基于C++语言,启动ROS节点发布与订阅消息,实现订阅消息节点与发布消息节点之间的实时通信。 请将评估板上电启动,执行如下命令,配置评估板测试环境。 Target#export COLCON_CURRENT_PREFIX=/opt/ros Target#       source /opt/ros/local_setup.sh 图 6   执行如下命令,启动ROS节点订阅消息。 Target#         ros2 run demo_nodes_cpp listener & 图 7   执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时评估板串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。 Target#         ros2 run demo_nodes_cpp talker 图 8   执行如下命令,根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。 Target#         ps -a Target#         kill 1332 Target#         kill 1333 图 9   如需完整源码与文档,可与我司技术服务人员联系。如需购买RK3568J工业评估板,请登录创龙科技天猫旗舰店:tronlong.tmall.com! RK3568J技术QQ群:567208221,欢迎加入! 亦可添加如下客服人员微信进行咨询:     即刻添加,马上咨询!   更多全国产RK3568J平台产品资料 可长按二维码识别下载    

  • 2023-11-29
  • 发表了主题帖: RK3568J“麒麟”+“翼辉”国产系统正式发布,“鸿蒙”也正在路上!

    RK3568J ”麒麟“ + “翼辉”国产系统正式发布 近期,创龙科技RK3568J全国产平台(国产化率100%,提供报告)已正式适配两大国产系统:银河麒麟嵌入式操作系统KylinOS(V10 SP1) + 翼辉嵌入式操作系统SylixOS(V2.3.12)!国产系统作为信创关键行业的关键基础软件,在工业在工业领域发挥重大作用。创龙科技RK3568J平台“硬件+ 软件”从里到外都是全国产,它将在国产化替代进程中发挥更大的优势。   麒麟KylinOS简介 银河麒麟嵌入式操作系统KylinOS是面向物联网及工业互联网场景的安全实时嵌入式操作系统,它具备轻量桌面、系统原子更新、高等级信息安全以及硬件多域隔离、操作系统混合部署能力,可满足嵌入式场景对操作系统安全可信、实时可靠的需求,主要应用于党政、金融、能源、交通、通信、制造、医疗、教育等领域的边缘服务器、工作站、工控机、机具、瘦终端、数控机床、数通设备等场景。   图1     翼辉SylixOS简介 翼辉SylixOS是一个嵌入式实时操作系统,支持SMP多核实时调度,可运行于多种CPU架构目标平台,具有卓越实时性和可靠性。可广泛应用于强实时、高安全、高可靠要求的大型工业控制设备中,在功能、性能上实现了对国外同类操作系统的替代。 图2 如需了解RK3568J双国产系统详细资料 可长按二维码识别下载     亦可添加客服微信进行咨询       即刻添加,马上咨询!   如需购买RK3568J国产工业评估板,请登录创龙科技天猫旗舰店:tronlong.tmall.com! RK3568J技术QQ群:567208221,欢迎加入!    

  • 发表了主题帖: 哇塞,实测780MB/s!基于RK3568J与FPGA的PCIe通信案例详解

    ARM + FPGA架构有何种优势 近年来,随着中国新基建、中国制造2025的持续推进,单ARM处理器越来越难满足工业现场的功能要求,特别是能源电力、工业控制、智慧医疗等行业通常需要ARM + FPGA架构的处理器平台来实现特定的功能,例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等。 到底ARM + FPGA架构有什么优势? ARM:接口资源丰富、功耗低,擅长多媒体显示、逻辑控制等。 FPGA:擅长多通道或高速AD采集、接口拓展、高速信号传输、高速数据并行处理等。 因此,ARM + FPGA架构能带来性能、功耗等综合比较优势,ARM与FPGA既可各司其职,各自发挥原本架构的独特优势,亦可相互协作处理更复杂的问题。 为何需要ARM + FPGA高速通信 在工业应用场景,一般FPGA作为数据采集前端,常常有大量的数据需要传输给ARM进行处理。如能源电力,会用FPGA作为高速AD或多通道AD采集,然后将产生的大量数据传输给ARM做AD数据存储和处理;又如智慧医疗,FPGA需将采集和处理的高清视频数据传输至ARM,让ARM对高速视频数据进行视频显示、编码或存储。因此,“ARM + FPGA高速通信”是“ARM + FPGA架构”项目成功的关键因素。   创龙科技为满足能源电力、智慧医疗、轨道交通等行业日益增长的国产化需求,率先推出国产化率100%的RK3568J工业核心板,并提供基于RK3568J与FPGA的高速通信案例。   RK3568J + FPGA高速通信案例 下文将为大家介绍基于瑞芯微RK3568J(硬件平台:创龙科技TL3568-EVM评估板)与Xilinx Artix-7(硬件平台:创龙科技TLA7-EVM评估板)的PCIe高速通信案例。 ARM端基于PCIe总线对FPGA BRAM进行读写测试。应用程序通过ioctl函数发送命令开启DMA传输数据后,等待驱动上报input事件;当应用层接收到input事件,说明DMA传输数据完成。 硬件搭建方面,使用M.2 Key M转PCI-E 4X延长线将TL3568-EVM评估板的M.2 PCIe NVMe接口与创龙科技TLA7-EVM评估板的PCIe接口连接,并将TLA7-EVM评估板通过TL-DLC10下载器连接至PC机,硬件连接如下图所示。       图1 硬件搭建示意图   按照创龙科技提供的案例用户手册进行操作,我们得出ARM与FPGA基于PCIe通信的实测数据,如下图所示。实测写操作的DMA传输速率为780.77MB/s,读操作的DMA传输速率为563.06MB/s。 图2 数据实测   图3 数据解读    

  • 2023-11-28
  • 发表了主题帖: AM62x相比AM335x,到底升级了什么?

    Sitara作为TI处理器经典系列,曾推出众多优秀处理器型号(如AM335x)。因其能在相同价位下,提供比市面上其他厂商处理器更优良的性能,并凭借GPMC高速并口、PRU协处理器等个性化硬件资源,可提供更便利的拓展性,在工业控制、能源电力、轨道交通、智慧医疗等领域广受用户欢迎。 如今AM335x作为10年前的经典产品,已逐渐难以满足客户正在不断变化的产品需求。但TI凭借对工业市场的敏锐理解,已正式推出极有可能引领未来10年工业潮流的最新明星处理器平台-AM62x,创龙科技作为TI的官方合作伙伴,亦紧跟潮流正式推出搭载AM62x处理器的工业核心板-SOM-TL62x。  

  • 发表了主题帖: AM62x GPMC并口如何实现“小数据-低时延,大数据-高带宽”—ARM+FPGA低成本通信方案

    本帖最后由 别打牛牛 于 2023-11-28 17:04 编辑 GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率133MHz。 GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口,如: (1)FPGA器件 (2)ADC器件 (3)SRAM内存 (4)NOR/NAND闪存   图 1 GPMC功能框图 GPMC并口3大特点 (1)小数据-低时延 在工业自动化控制领域中,如工业PLC、驱控一体控制器、运动控制器、CNC数控主板、继电保护设备、小电流接地选线等,极其注重精确性与快速性,GPMC并口“小数据-低时延”的特点显得格外耀眼,能够很好地提高数据传输效率,降低传输成本。   (2)大数据-高带宽 大数据时代对能源电力领域的数据量传输、数据处理等方面提出了更高的要求。GPMC提供了最大的灵活性,以支持四个可配置片选中不同的时序参数和位宽配置。可根据外部设备的特点,使用最佳的片选设置。可通过配置GPMC接口的时序参数和不同工作模式,最大速率可超过100MB/s。因此,GPMC“大数据-高带宽”的特点在能源电力领域扮演着重要角色。   (3)低成本-低功耗 “低成本、低功耗、高性能”是如今智能设备发展趋势,GPMC并口相对于PCIe串行接口,成本更低、功耗更低。两者都为常用的通信接口,均可满足高速通信要求,但在与FPGA通信的时候,用户往往更喜欢选用GPMC并口,因为: 1、使用低成本FPGA即可实现高速通信,而具备PCIe接口的FPGA成本则成倍增长。 2、具备PCIe接口的FPGA功耗往往较大,而低成本FPGA功耗较小。一般而言,低功耗器件的使用寿命也将更长。   基于CPU直接访问方式 以AM62x为例,通过GPMC接口与FPGA连接,采用CPU直接访问方式读取FPGA端的数据,写速度可达15.501MB/s,读速度可达5.744MB/s。 此方式适合“小数据-低时延”场合。 图 2 CPU直接访问方式测试结果 程序流程说明: (1)ARM端通过GPMC总线将数据写入FPGA BRAM; (2)ARM端通过GPMC总线从FPGA BRAM读取数据; (3)判断写入与读取数据的正确性,并计算读写速率。 基于UDMA访问方式 以AM62x为例,通过GPMC接口与FPGA连接,采用UDMA的方式读取FPGA端的数据,写速度可达73.90MB/s,读速度可达77.47MB/s,实际上通过配置GPMC接口的时序参数和不同工作模式,最大速率可超过100MB/s。 此方式适合“大数据-高带宽”场合。 图 3 UDMA访问方式测试结果 备注:由于测试受线材限制影响,因此测得误码率会过高。   程序流程说明 ARM端: (1) 采用UDMA方式; (2)将数据写入至dma_memcpy驱动申请的连续内存空间(位于DDR); (3)配置UDMA,如源地址、目标地址、传输的数据大小等; (4)写操作:通过ioctl函数启动UDMA,通过GPMC总线将数据搬运至FPGA BRAM; (5)程序接收驱动上报input事件后,将通过ioctl函数获取UDMA搬运数据耗时,并计算UDMA传输速率(即写速率); (6)读操作:通过ioctl函数启动UDMA,通过GPMC总线将FPGA BRAM中的数据搬运至dma_memcpy驱动申请的连续内存空间; (7)程序接收驱动上报input事件后,将数据从内核空间读取至用户空间,然后校验数据,同时通过ioctl函数获取UDMA搬运数据耗时,并计算UDMA传输速率(即读速率)。   FPGA端: (1)根据ARM端GPMC时序解析数据,对FPGA内部BRAM资源进行访问。BRAM的地址位宽为10bit,数据位宽为16bit,内存空间大小为2KByte(1024 x 16bit)。 图 4 程序流程图  

  • 2023-11-23
  • 发表了主题帖: 配置上新 | 单双四核任选,TI Cortex-A53工业核心板

    创龙科技作为TI官方合作伙伴,在2022年9月即推出搭载TI AM62x最新明星处理器的工业核心板-SOM-TL62x。 SOM-TL62x工业核心板基于TI Sitara系列AM62x单/双/四核ARM Cortex-A53 + 单核ARM Cortex-M4F异构多核处理器设计,主频高达1.4GHz,支持2路TSN千兆网、3路CAN-FD、双屏异显、9路UART、高速并口GPMC等接口。 目前,已有超过200家客户将SOM-TL62x工业核心板应用于工业PLC、工业HMI、运动控制器、电力数据采集器、电力DTU等产品终端上,AM62x的优越性能、稳定品质得到了广大用户的认可! 配置上新,单双四核任选 为满足广大用户的降本需求,创龙科技在四核AM6254核心板的基础上,新增更实惠的单核AM6231、双核AM6232两款核心板配置。  

  • 2023-11-21
  • 发表了主题帖: 4.3s,Linux快速启动优化方法分享,基于全志T113-i国产平台!

    本帖最后由 别打牛牛 于 2023-11-21 09:01 编辑 哪些应用场景需要快速启动 很多应用场景对系统启动时间都有严苛的要求,例如在工业组态屏、工业HMI、机器人示教器、工业PLC、物联网网关、通讯管理机等应用场景对系统启动的时间都会有所要求。   当系统启动时间过长时,用户需要很长时间才能开始使用系统,不仅会对产品的精准度和实时性有所影响,而且过长时间的启动也会导致系统资源浪费,例如电力和硬件资源。而优化启动时间可节省这些资源,从而提高系统的效率和可靠性。另外,在某些嵌入式系统和设备中,启动时间对于系统的稳定性和可靠性至关重要,因此尽可能缩短启动时间,以确保系统能够在最短的时间内启动至关重要。 T113-i 系统快速启动实测数据 为了满足客户需求,我司对T113-i原生系统进行剪裁,得到一个可快速启动的程序镜像。经测试,eMMC配置核心板从上电至进入文件系统的时间为4.3秒,从上电至显示Qt界面的时间为7.7秒。详细数据请参考如下表格: 图1   T113-i系统快速启动优化方法 本节内容对T113-i(其他嵌入式平台亦可参考)Linux系统快速启动优化方法进行说明,主要通过对U-Boot、内核以及rcS启动脚本的修改,实现系统快速启动。下面以NAND FLASH配置TLT113-EVM评估板为例进行方法示例,TLT113-MiniEVM或eMMC配置评估板注意修改的文件路径有所不同。   (1) U-Boot快速启动优化。 修改延时bootdelay为0秒,可缩减bootdelay延时。在LinuxSDK解压目录T113-i_v1.0下修改如下文件: "device/config/chips/t113_i/configs/tlt113-evm-nand/longan/env.cfg". 图2 关闭boot0和U-Boot调试信息打印,启动时间可缩短约1秒。在LinuxSDK解压目录T113-i_v1.0下修改如下文件: "device/config/chips/t113_i/configs/tlt113-evm-nand/uboot-board.dts" "device/config/chips/t113_i/configs/tlt113-evm-nand/sys_config.fex" 图 3 uboot-board.dts文件 图 4 sys_config.fex文件 (2) 内核快速启动优化。 由于random设备初始化太慢,应用程序调用random的函数时可能被阻塞,导致应用启动慢,因此可通过关闭crng_ready()功能从而缩短启动时间,关闭crng_ready()功能后启动时间可缩短2~3秒。在LinuxSDK解压目录T113-i_v1.0下修改如下文件: "kernel/linux-5.4/drivers/char/random.c" 图5 通过修改串口打印优先级,关闭串口内核启动信息打印从而缩短启动时间。在LinuxSDK解压目录T113-i_v1.0下修改如下文件: "device/config/chips/t113_i/configs/tlt113-evm-nand/longan/env.cfg"     图6 (3) 文件系统快速启动优化。 通过取消相关服务启动以及自动挂载功能,优先执行Qt程序,并且延时一段时间再执行其他功能。启动时间可缩短约10秒。在LinuxSDK解压目录T113-i_v1.0下修改如下文件: "platform/framework/auto/rootfs/etc/init.d/rcS" 图7 如需关闭Qt Launcher,优化上电启动至进入文件系统的时间,需修改rcS脚本。修改内容如下: 图8 修改完成后,请参考我司的T113-i产品资料《Linux系统使用手册》文档,重新编译生成Linux系统镜像,同时参考《Linux系统启动卡制作及系统固化》文档,将Linux系统镜像文件固化至NAND FLASH或eMMC,再从NAND FLASH或eMMC上电启动即可。   创龙科技T113-i平台已发布系统快速启动案例,如需完整源码与文档,可与我司技术服务人员联系。

  • 发表了主题帖: T113-i发布Tina系统啦!OpenWRT三大优势,一文读懂!

    本帖最后由 别打牛牛 于 2023-11-21 08:57 编辑 创龙科技已发布支持OpenWRT的T113-i Tina系统啦!有些小伙伴可能会有疑问什么是OpenWRT,它有什么优势?今天,创龙科技带您一文读懂OpenWRT,以及它的三大优势。   什么是OpenWRT OpenWRT是嵌入式设备上运行的Linux文件系统。OpenWRT的文件系统是可写的,开发者无需在每一次修改后重新编译,这令它更像一个小型的Linux电脑系统,也加快了开发速度。您会发现无论是ARM、PowerPC或MIPS的处理器,它都有很好的支持。并且附带超过3000个软件包,用户可方便的使用自定义功能来制作固件。亦可方便的移植各类功能到OpenWRT下。   OpenWRT还是一个高度模块化、高度自动化的Linux文件系统,它拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。     OpenWRT的优势 可扩展性 OpenWRT提供了许多以往只在高端设备上才提供的各种功能。它提供超过3000个适用于网关的组件,让您可以轻松地将他们应用于各种支持的设备。   高性能、高稳定性 OpenWRT由专注网络性能的网络专家等专业人士设计,整合了许多最新研究的算法,因此其性能远远优于供应商提供的固件。   OpenWRT相当稳定,经受住了长时间运行的考验。无线网络优化让设备间支持更高的数据速率和均衡的通信时长。   OpenWRT使用缓冲池控制算法在减少延迟(或滞后)的同时增加网络吞吐量。   高安全性 OpenWRT是一个开源软件,来自全世界的许多开发者在发布前反复检查它的源码。   OpenWRT无硬件供应商隐藏的后门程序。得益不受常见攻击影响的Linux操作系统,OpenWRT可抵抗常见漏洞。   OpenWRT能延长您路由器的使用寿命。虽然许多供应商只会在更新型号发布之前为您的路由器或设备提供更新,但只要其内存或闪存可以接纳新版本,OpenWRT就能支持兼容型号。   OpenWRT的应用场景 OpenWRT的应用场景十分广泛,涵盖工业数据网关、通讯管理机、工业机器人、工业PLC等领域。创龙科技的全志T113-i平台支持OpenWRT系统后,性价比将进一步提升。   全志Tina系统介绍 全志科技基于OpenWRT构建的软件开发包 Tina是全志科技基于OpenWRT构建的软件开发包,它包含了Linux系统开发用到的内核源码、驱动、工具、系统中间件与应用程序包等。   Tina同时支持OpenWRT与buildroot Tina支持OpenWRT以及buildroot两套编译构建系统,在这之上加入了我们的build环境对接编译系统,可方便进行选择构建,可满足不同软件工程师的开发习惯。   创龙科技T113-i平台已发布适配支持OpenWRT的Tina系统,如需详细资料或源码,可与我司技术服务人员联系。

  • 发表了主题帖: 正式发售!全国产RK3588J工业核心板,让您的产品更具特色!八核2.4GHz!

    本帖最后由 别打牛牛 于 2023-11-21 08:53 编辑 全国产RK3588J工业核心板,正式发售 创龙科技备受多方瞩目的全国产明星平台RK3588J工业核心板,自上月发布以来,短短一个多月内已收到超过200家企业咨询,并已有超过50家企业预定,大家无不对这款国产化率100%的高性能旗舰工业平台表示期待。   今天,创龙科技全国产RK3588J工业核心板正式发售,可即刻在我司天猫旗舰店订购!  

  • 发表了主题帖: 79元国产ARM+DSP平台FFT实测分享

    本帖最后由 别打牛牛 于 2023-11-21 08:49 编辑 T113-i国产ARM+DSP架构介绍 创龙科技SOM-TLT113是一款基于国产全志T113-i双核ARM Cortex-A7 +  HiFi4 DSP + 玄铁C906 RISC-V异构多核处理器设计的全国产工业核心板,国产化率100%。核心板一片起含税就仅售79元,-40℃~ + 85℃真工业级。 其中ARM Cortex-A7 处理单元主频高达1.2GHz,HiFi4 DSP处理单元主频高达600MHz。HiFi4 DSP是属于VLIW架构的高性能嵌入式数字信号处理器,支持功能丰富且强大,包括在特定条件下每个周期支持8个32 x 16-bit MAC(Multiply Accumulate,表示一个周期完成一次乘法和加法运算),能够在每个周期发出两个64-bit负载,提供可选的矢量浮点单元。   图 1 T113-i处理器资源框图 T113-i DSP端FFT实测数据分享 下图为全志官方手册中的T113-i DSP端FFT参考数据。DSP主频为600MHz,则cycle time = 1.667ns。耗时 = N * Cycles,例如N = 512(scaling为2)时,则耗时 = 4401 x 1.667ns = 7.335us。 图 2 FFT运算官方参考数据 创龙科技T113-i产品资料中已提供led_flash、uart_echo、dsplib_fft等DSP开发案例。更多DSP或ARM + DSP 核间通信开发案例,预计将在2023Q4~2024Q1陆续发布,敬请留意。   其中dsplib_fft案例是调用Xtensa HiFi4 NatureDSP Library中的库函数,对整型信号进行快速傅里叶变换与快速傅里叶逆变换,采样点从16递增至4096,并将耗时打印至串口终端。创龙科技T113-i DSP端FFT运算实测数据如下。 图 3 FFT运算实测数据   T113-i应用场景与特点分享 创龙科技全志T113-i国产平台在工业中的应用已十分广泛,涵盖工业HMI、工业PLC、物联网网关、机器人示教器、户用储能EMS/BMS、汽车充电桩等领域,同时凭借着含税仅79元 + 双核Cortex-A7@1.2GHz硬件资源(还内置DSP与RISC-V),性价比不是一般的高!   另外,T113-i可运行Linux操作系统、Qt炫酷图形界面,并可支持1080P高清视频编解码、4G大数据传输、2Gb超大存储空间、LCD/LVDS/MIPI三种显示、原生千兆网/双CAN,是单片机升级的优选平台。   全国产T113-i工业核心板 尽在创龙科技

  • 2023-03-01
  • 发表了日志: 全志T3+FPGA国产核心板——Pango Design Suite的FPGA程序加载固化

  • 发表了主题帖: 全志T3+FPGA国产核心板——Pango Design Suite的FPGA程序加载固化

    本文主要基于紫光同创Pango Design Suite(PDS)开发软件,演示FPGA程序的加载、固化,以及程序编译等方法。适用的开发环境为Windows 7/10 64bit。 测试板卡为全志T3+Logos FPGA核心板,它是一款基于全志科技T3四核ARM Cortex-A7处理器 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核全国产工业核心板,ARM Cortex-A7处理单元主频高达1.2GHz。核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。 点击添加图片描述(最多60个字)编辑 核心板内部T3与Logos通过SPI、CSI、I2C通信总线连接,并通过工业级B2B连接器引出LVDS DISPLAY、RGB DISPLAY、MIPI DSI、TVOUT、TVIN、CSI、GMAC、EMAC、USB、SATA、SDIO、UART、SPI、TWI等接口及FPGA IO引脚,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编解码。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 FPGA程序位于产品资料Demo目录,请将对应的FPGA程序拷贝至Windows非中文路径下。下表为Demo目录的FPGA程序目录结构及主要文件说明。 表 1 目录 文件/目录 说明 bin xxx.sbit 可执行程序(BitStramFile文件),用于在线加载 xxx.sfc 可执行程序,用于固化至SPI FLASH project xxx_pgl25g/xxx_pgl50g constraints 约束文件目录 hdl Verilog源码文件目录 xxx.pds Pango Design Suite工程文件 按照本文档操作前,请先参考软件安装相关文档安装Pango Design Suite,并将评估板通过配套的FPGA下载器正常连接至PC机。 程序加载 本小节以led_flash案例为例,演示程序加载方法。 打开Windows的设备管理器,查看并确认FPGA下载器已正常连接至PC机。 图 1 点击添加图片描述(最多60个字)编辑 双击Pango Design Suite安装目录下"C:\pango\PDS_2021.1-SP7.1\bin\cdt_cfg.exe",打开Fabric Configuration界面。 图 2 点击添加图片描述(最多60个字)编辑 图 3 点击添加图片描述(最多60个字)编辑 将评估板上电,鼠标右键点击Fabric Configuration界面空白处,选择"Scan Device"选项,通过FPGA下载器扫描并连接FPGA设备。 图 4 点击添加图片描述(最多60个字)编辑 连接成功后,将出现FPGA芯片图标,并自动弹出FPGA程序选择窗口,请选择对应的xxx.sbit文件进行加载。 图 5 点击添加图片描述(最多60个字)编辑 图 6 点击添加图片描述(最多60个字)编辑 鼠标右键点击FPGA芯片图标,选择"Program…",将目标程序加载至FPGA运行。 图 7 点击添加图片描述(最多60个字)编辑 图 8 点击添加图片描述(最多60个字)编辑 程序成功加载后,Console控制台将会打印显示"COMMAND[Program] execute successfully"信息。同时可观察到评估底板LED按照一定的时间间隔循环亮灭,说明程序在线加载与运行正常。 图 9 点击添加图片描述(最多60个字)编辑 程序固化 本小节以led_flash案例为例,演示程序固化方法。 双击Pango Design Suite安装目录下"C:\pango\PDS_2021.1-SP7.1\bin\cdt_cfg.exe",打开Fabric Configuration界面。 图 10 点击添加图片描述(最多60个字)编辑 将评估板上电,鼠标右键点击Fabric Configuration界面空白处,选择"Scan Device"选项,通过FPGA下载器扫描并连接FPGA设备。 图 11 点击添加图片描述(最多60个字)编辑 连接成功后,将出现FPGA芯片图标,并自动弹出FPGA程序选择窗口,点击Cancel,不加载xxx.sbit文件。 图 12 点击添加图片描述(最多60个字)编辑 鼠标右键点击FPGA芯片图标,选择"Scan Outer Flash"扫描并识别SPI FLASH芯片。 图 13 点击添加图片描述(最多60个字)编辑 扫描成功后,将自动弹出文件选择窗口,选择需固化的xxx.sfc文件。 图 14 点击添加图片描述(最多60个字)编辑 鼠标右键点击"Outer Flash"芯片图标,选择"Program…"进行程序固化。 图 15 点击添加图片描述(最多60个字)编辑 图 16 点击添加图片描述(最多60个字)编辑 程序固化完成后,Console控制台将会打印显示如下信息。 图 17 点击添加图片描述(最多60个字)编辑 将评估板断开FPGA下载器并重新上电,即可观察到评估底板LED按照一定的时间间隔循环亮灭,说明程序固化成功、运行正常。 工程导入与程序编译 如需导入工程以及重新编译程序,请按如下步骤进行操作。如无需导入工程或重新编译程序,请忽略本章节内容。 本小节以led_flash案例为例,演示基于Pango Design Suite导入、编译FPGA工程的步骤。 工程导入 请双击桌面Pango Design Suite图标,打开软件。 图 18 点击添加图片描述(最多60个字)编辑 在弹出的界面中点击"Open Project"。 图 19 点击添加图片描述(最多60个字)编辑 在弹出的界面中选择FPGA案例"project\led_flash_xxx\目录下的xxx.pds文件,并点击Open打开。 图 20 点击添加图片描述(最多60个字)编辑 弹出如下界面,工程导入完成。 图 21 点击添加图片描述(最多60个字)编辑 工程新建、移植 本小节主要说明工程新建以及对现有工程进行移植的简要步骤。若无需新建工程或对现有工程进行移植,请跳过本小节内容。 双击打开Pango Design Suite,在弹出的界面中点击"New Project"。 图 22 点击添加图片描述(最多60个字)编辑 在弹出的界面中,点击Next,跳转到下一个界面。 图 23 点击添加图片描述(最多60个字)编辑 输入工程名字,根据实际情况修改文件保存路径,并点击Next。 图 24 点击添加图片描述(最多60个字)编辑 在弹出的界面中勾选"RTL project",并点击Next。 图 25 点击添加图片描述(最多60个字)编辑 弹出如下Add Design Source Files界面,直接点击Next跳过。 图 26 点击添加图片描述(最多60个字)编辑 弹出如下Add Existing IP界面,直接点击Next跳过。 图 27 点击添加图片描述(最多60个字)编辑 弹出如下Add Constraints界面,直接点击Next跳过。 图 28 点击添加图片描述(最多60个字)编辑 在弹出的工程配置界面中设置FPGA芯片参数。Family:Logos,Device:PGL25G,Package:MBG324,Speed:-6,Synthesis Tool:ADS,设置完成后,请点击Next。 图 29 点击添加图片描述(最多60个字)编辑 在弹出的界面,点击Finish,即可完成工程新建。 图 30 点击添加图片描述(最多60个字)编辑 图 31 点击添加图片描述(最多60个字)编辑 在工程界面,右击工程Designs,点击"Add Source"新建模块文件。 图 32 点击添加图片描述(最多60个字)编辑 在弹出如下界面,选择"Add or create design sources",并点击Next。 图 33 点击添加图片描述(最多60个字)编辑 在弹出的界面中,点击"Create File"选项,输入新建的模块文件名称,依次点击OK。 图 34 点击添加图片描述(最多60个字)编辑 图 35 点击添加图片描述(最多60个字)编辑 在弹出的界面,可直接通过图形界面配置引脚约束。由于本次演示通过新建约束文件进行引脚约束,请直接点击OK跳过。 图 36 点击添加图片描述(最多60个字)编辑 完成模块文件新建后,此时将在工程界面右侧出现程序编辑窗口。 图 37 点击添加图片描述(最多60个字)编辑 打开案例"project\led_flash_xxx\hdl\led_test.v"文件,将所有代码拷贝至程序编辑界面或自行编写,并点击保存编辑。完成保存后,Console窗口无Errors和Warning则说明程序语法无错误。 图 38 点击添加图片描述(最多60个字)编辑 图 39 点击添加图片描述(最多60个字)编辑 在工程界面,右击"Constraints -> Add Source"进行引脚约束。 图 40 点击添加图片描述(最多60个字)编辑 在弹出界面,选择"Add or create constraint sources",并点击Next。 图 41 点击添加图片描述(最多60个字)编辑 在弹出的界面中,点击"Create File"选项,输入新建引脚约束文件名称,依次点击OK。 图 42 点击添加图片描述(最多60个字)编辑 图 43 点击添加图片描述(最多60个字)编辑 引脚约束文件新建完成后,双击打开工程界面的xxx.fdc文件,如下图所示。 图 44 点击添加图片描述(最多60个字)编辑 图 45 点击添加图片描述(最多60个字)编辑 在如下界面选项栏中,依次点击"Device -> IO",根据工程xxx.v文件在"Tool Tabs"窗口生成引脚约束列表。请根据硬件连接进行引脚选择。 图 46 点击添加图片描述(最多60个字)编辑 引脚选择完成后,呈现界面如下图所示。至此,FPGA工程新建完成。 图 47 点击添加图片描述(最多60个字)编辑 程序编译 双击"Generate Bitstream"进行FPGA程序编译。 图 48 点击添加图片描述(最多60个字)编辑 编程完成后Console窗口将会打印信息:Process "Generate Bitstream" done,并在FPGA工程generate_bitstream目录下生成xxx.sbit文件。 图 49 点击添加图片描述(最多60个字)编辑 图 50 点击添加图片描述(最多60个字)编辑 如需生成用于固化至SPI FLASH的xxx.sfc文件,请按照如下步骤执行。 在菜单栏依次点击"Tools -> Configuration",进入Fabric Configuration界面,在菜单栏依次点击"Operations -> Convert File"。 图 51 点击添加图片描述(最多60个字)编辑 图 52 点击添加图片描述(最多60个字)编辑 在弹出界面,请按照下图方法配置SPI FLASH信息。Factory Name:WINBOND,Device Name:W25Q64Q(SPI FLASH芯片型号),BitStramFile:BitStramFile文件(xxx.sbit)路径,Output File Name:生成xxx.sfc文件保存路径(默认保存在BitStramFile文件同级目录下)。配置完成后,请点击OK保存配置。 图 53 点击添加图片描述(最多60个字)编辑 弹出如下界面,请点击OK。即已成功生成用于固化至SPI FLASH的xxx.sfc文件。 图 54 点击添加图片描述(最多60个字)编辑 图 55 点击添加图片描述(最多60个字)编辑  

  • 发表了主题帖: 嵌入式ARM端测试手册——全志T3+Logos FPGA开发板(上)

    前 言     本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMware15.5.5 进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装SecureCRT串口调试终端、VMware虚拟机等相关软件。 本文档主要提供开发板的硬件资源测试方法。无特殊说明情况下,默认使用USB TO UART0作为调试串口,使用Linux系统启动卡(Micro SD方式)启动系统,通过路由器与PC机进行网络连接。 本文测试板卡为创龙科技TLT3F-EVM开发板,它是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业开发板,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 点击添加图片描述(最多60个字)编辑 评估板接口资源丰富,引出三路网口、三路USB、双路CAN、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出LVDS LCD、TFT LCD、MIPI LCD、CVBS OUT、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编解码,并支持SATA大容量存储接口,方便用户快速进行产品方案评估与技术预研。 系统启动测试 接入电源,并使用Type-C线连接PC机和评估板的USB TO UART0调试串口。打开设备管理器,确认评估板USB TO UART0调试串口对应的COM端口号。 图 1 点击添加图片描述(最多60个字)编辑 图 2 点击添加图片描述(最多60个字)编辑 打开串口调试终端SecureCRT,选择对应的COM端口号,设置波特率为115200,8N1,无校验位。建立串口连接,如下图所示。 图 3 点击添加图片描述(最多60个字)编辑 将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为0(并非拨码开关上文字),此档位将优先从Linux系统启动卡中启动系统。将评估板上电启动,系统将会自动登录root用户,串口终端会打印如下类似启动信息。 图 4 点击添加图片描述(最多60个字)编辑 图 5 点击添加图片描述(最多60个字)编辑 备注:由于我司提供的Linux系统保留了部分官方驱动配置,且实际未使用到相关驱动的部分功能,因此在内核启动过程中,驱动会打印"OF: no ranges;cannot translate"、"failed to get normal led pin assign"等类似警告信息。此类警告信息不会影响系统的正常运行,请忽略即可。 图 6 点击添加图片描述(最多60个字)编辑 核心板LED在系统启动过程中的变化说明如下: 评估板上电后,电源指示灯LED0点亮;随后U-Boot第一阶段启动,LED1点亮;紧接着U-Boot第二阶段启动,LED2点亮;直至内核启动运行时,LED2熄灭,LED1进行心跳闪烁;eMMC进行读写时,LED2闪烁。 图 7 点击添加图片描述(最多60个字)编辑 文件传送测试 PC机和评估板之间传送文件的常见方式如下: 通过Linux系统启动卡、U盘等存储介质方式拷贝。 通过NFS、TFTP、OpenSSH等网络方式拷贝。 通过Linux系统启动卡 将配套的系统启动卡通过读卡器插至PC机挂载至虚拟机Ubuntu系统,如下图,查询系统启动卡设备节点,其中"/dev/sdb7"为Linux系统启动卡文件系统分区,具体以实际名称为准。 图 8 点击添加图片描述(最多60个字)编辑 执行如下命令,将"/dev/sdb7"设备节点挂载至"/mnt/"目录下。 Host# sudo mount /dev/sdb7 /mnt Host# ls /mnt/ 图 9 点击添加图片描述(最多60个字)编辑 执行如下命令在Ubuntu中新建文件test0,将test0文件拷贝至评估板文件系统root目录。 Host# touch test0 Host# sudo cp test0 /mnt/root/ 图 10 点击添加图片描述(最多60个字)编辑 文件拷贝完成后,请执行如下命令卸载设备,并拔出读卡器,从中取出Linux系统启动卡。 Host# sudo umount /dev/sdb7 图 11 点击添加图片描述(最多60个字)编辑 将Linux系统启动卡插至评估板Micro SD卡槽,评估板上电启动即可查看root目录下的文件。 Target# ls 图 12 点击添加图片描述(最多60个字)编辑 通过OpenSSH OpenSSH是SSH(Secure Shell)协议的免费开源实现。SSH协议族可用来进行远程控制,或在计算机之间传送文件,评估板文件系统默认已支持SSH库。 在Ubuntu中执行如下命令,查询是否已安装OpenSSH。 Host# ssh -v 图 13 点击添加图片描述(最多60个字)编辑 可看到系统已自带OpenSSH。如未安装,请先自行正确安装OpenSSH。 将评估板ETH0 RGMII网口通过网线连接至路由器。在评估板上执行如下命令可自动获取到IP,如下图所示。"-i"用于指定网卡,eth0为网卡名字,请根据实际情况修改。 Target# udhcpc -i eth0 图 14 点击添加图片描述(最多60个字)编辑 执行如下命令可查询IP地址。本次查询到的IP地址是192.168.0.87。 Target# ifconfig 图 15 点击添加图片描述(最多60个字)编辑 使用OpenSSH从PC机传送文件至评估板 执行如下命令在Ubuntu中新建文件test1,并使用OpenSSH命令将test1文件拷贝至评估板文件系统根目录。 Host# touch test1 //新建文件 Host# scp test1 root@192.168.0.87:/ 图 16 点击添加图片描述(最多60个字)编辑 如出现提示"Are you sure you want to continue connecting (yes/no)?",请输入:yes。 在评估板上执行如下命令可看到从PC机拷贝过来的文件,如下图所示。 Target# ls / 图 17 点击添加图片描述(最多60个字)编辑 使用OpenSSH从评估板传送文件至PC机 执行如下命令在评估板文件系统根目录新建一个测试文件test2。 Target# cd / Target# touch test2 //新建文件 图 18 点击添加图片描述(最多60个字)编辑 在Ubuntu上执行如下OpenSSH命令将评估板测试文件test2拷贝至PC机"/home/tronlong/"目录下。如传输的是文件夹,请在scp后面添加参数"-r"。 Host# sudo scp root@192.168.0.87:/test2 /home/tronlong/ Host# ls 图 19 点击添加图片描述(最多60个字)编辑 使用OpenSSH登录到评估板文件系统 在Ubuntu执行如下命令可通过OpenSSH登录评估板文件系统。 Host# sudo ssh root@192.168.0.87 图 20 点击添加图片描述(最多60个字)编辑 如需退出登录,请执行exit或者logout命令。 LED测试 评估底板LED1、LED2与GPIO对应关系如下表所示,系统启动后默认点亮。 表 1 LED1 LED2 PB4 PB10 进入评估板文件系统,执行如下命令逐盏熄灭、点亮LED。 Target# echo 0 > /sys/class/leds/user-led0/brightness //控制LED1灭 Target# echo 1 > /sys/class/leds/user-led0/brightness //控制LED1亮 Target# echo 0 > /sys/class/leds/user-led1/brightness //控制LED2灭 Target# echo 1 > /sys/class/leds/user-led1/brightness //控制LED2亮 图 21 点击添加图片描述(最多60个字)编辑 按键测试 评估底板包含3个用户按键:USER0(KEY3)、USER1(KEY4)、USER2(KEY5)。进入评估板文件系统,执行如下命令查看用户按键对应的事件号。其中USER0(KEY3)和USER1(KEY4)对应的按键事件号为event1,USER2(KEY5)对应的按键事件号为event5。 Target# cat /proc/bus/input/devices 图 22 点击添加图片描述(最多60个字)编辑 执行如下命令,分别按下USER0(KEY3)和USER1(KEY4)进行按键测试,可看到如下打印信息,其中"0094"表示USER0(KEY3),"0095"表示USER1(KEY4),按"Ctrl + C"可终止测试命令。 Target# od -x /dev/input/event1 图 23 点击添加图片描述(最多60个字)编辑 执行如下命令,按下USER2(KEY5)进行按键测试,可看到如下打印信息,"00ca"表示USER2(KEY5),按"Ctrl + C"可终止测试命令。 Target# od -x /dev/input/event5 图 24 点击添加图片描述(最多60个字)编辑 时钟设置测试 Linux系统中分系统时钟(软件时钟)和RTC时钟(硬件时钟),系统时钟掉电即会消失,RTC时钟在安装电池的情况下会长期运行。 如需使用外部RTC时钟,请先安装RTC电池。如下为时钟相关的常用命令。 查看系统时钟 Target# date 图 25 点击添加图片描述(最多60个字)编辑 查看RTC时钟 Target# hwclock -u 图 26 点击添加图片描述(最多60个字)编辑 设置系统时间 Target# date -s "2023-01-01 8:30:00" //设置时间:2023年1月1日8点30分00秒 Target# date 点击添加图片描述(最多60个字)编辑 同步系统时钟至RTC时钟 Target# hwclock --systohc -u Target# hwclock -u 同步系统和RTC的时钟 执行指令后,系统会同步RTC时钟作为系统时钟。 Target# hwclock --hctosys -u 图 29 点击添加图片描述(最多60个字)编辑 DDR读写测试 DDR读写速度受实际情况影响,测试速率以具体情况为准,如下测试数据仅供参考。 DDR读速度测试 进入评估板系统,执行如下命令对DDR进行读速度测试。 Target# bw_mem 100M rd 图 30 点击添加图片描述(最多60个字)编辑 测试从DDR中读取100MByte数据,可看到本次测试的读速度为1205.46MB/s。 DDR写速度测试 进入评估板系统,执行如下命令对DDR进行写速度测试。 Target# bw_mem 100M wr 图 31 点击添加图片描述(最多60个字)编辑 测试写入100MByte数据至DDR中,可看到本次测试的写速度为560.64MB/s。 DDR拷贝速度测试 进入评估板系统,执行如下命令对DDR进行拷贝速度测试。 Target# bw_mem 100M cp 图 32 点击添加图片描述(最多60个字)编辑 测试拷贝100MByte数据至DDR中,可看到本次测试的拷贝速度为281.57MB/s。 Micro SD接口读写测试 本小节使用SanDisk品牌、128GByte容量的Micro SD卡来测试评估板Micro SD接口性能。请参考《Linux系统启动卡制作及系统固化》文档将其制作成Linux系统启动卡再进行测试。不同的Micro SD卡以及不同的测试方法,对Micro SD接口测试结果将造成一定差异。 请先取出Linux系统启动卡,根据底板丝印将启动方式选择拨码开关拨为0,将评估板上电,系统将从eMMC启动,再将Linux系统启动卡插入评估板Micro SD卡槽。进入评估板文件系统执行如下命令查看Micro SD卡信息。 Target# fdisk -l 图 33 点击添加图片描述(最多60个字)编辑 Micro SD接口写速度测试 进入评估板系统,执行如下命令测试Micro SD接口写速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# mkdir -p /run/media/mmcblk1p7 Target# mount /dev/mmcblk1p7 /run/media/mmcblk1p7 Target# time dd if=/dev/zero of=/run/media/mmcblk1p7/test bs=1024K count=500 time命令有计时作用,dd用于复制,从if(input file)文件读出,写到of(output file)指定的文件,bs是每次写块的大小,count是读写块的数量。 "if=/dev/zero"不产生IO,即不断输出数据,可用来测试纯写速度。 图 34 点击添加图片描述(最多60个字)编辑 此处一共写500MByte测试数据至Micro SD卡的test文件,可看到本次测试的Micro SD接口写速度约为:500MB/28.169s = 17.733MB/s。 Micro SD接口读速度测试 执行如下命令测试Micro SD接口读速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/run/media/mmcblk1p7/test of=/dev/null bs=1024K "of=/dev/null"不产生IO,即不断接收数据,可用来测试纯读速度。 图 35 点击添加图片描述(最多60个字)编辑 此处从test文件一共读出500MByte的数据,可看到本次测试的Micro SD接口读速度约为:500MB/27.727s = 18.032MB/s。 eMMC读写测试 将Linux系统启动卡插入评估板Micro SD卡槽,评估板上电启动完成后,执行如下命令查看信息。 Target# fdisk -l 图 36 点击添加图片描述(最多60个字)编辑 eMMC写速度测试 执行如下命令对eMMC设备进行写速度测试。 Target# echo 3 > /proc/sys/vm/drop_caches Target# mkdir -p /run/media/mmcblk0p7 Target# mount /dev/mmcblk0p7 /run/media/mmcblk0p7 Target# time dd if=/dev/zero of=/run/media/mmcblk0p7/test bs=1024K count=500 图 37 点击添加图片描述(最多60个字)编辑 此处一共写500MByte测试数据至eMMC设备,可看到本次测试的eMMC设备写速度约为500MB/12.301s = 40.647MB/s。 (2)eMMC读速度测试 执行如下命令对eMMC设备进行读速度测试。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/run/media/mmcblk0p7/test of=/dev/null bs=1024K 图 38 点击添加图片描述(最多60个字)编辑 此处从eMMC设备中一共读出500MByte数据,可看到本次测试的eMMC设备读速度约为500MB/12.617 = 39.629MB/s。 SPI FLASH读写测试 本小节对SPI FLASH的MTD0分区进行读写速度测试。SPI FLASH由ARM端和FPGA端共同控制,因此在测试之前,需停止FPGA端控制,并配置SPI总线工作模式,使SPI与SPI FLASH通信。 执行如下命令,停止FPGA端控制,然后安装SPI FLASH驱动。 Target# echo 68 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio68/direction Target# echo 0 > /sys/class/gpio/gpio68/value //停止FPGA的控制 Target# echo 69 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio69/direction Target# echo 1 > /sys/class/gpio/gpio69/value //使能SPI与SPI FLASH通信 Target# depmod -a Target# modprobe m25p80 图 39 点击添加图片描述(最多60个字)编辑 执行如下命令,查看FLASH分区如下图所示。 Target# cat /proc/mtd 图 40 执行如下命令,拷贝文件至该分区,测试分区功能是否正常。 Target# time dd if=/CameraUI of=/dev/mtd0 图 41 点击添加图片描述(最多60个字)编辑 SPI FLASH写速度测试 进入评估板系统,执行如下命令对SPI FLASH进行写速度测试。 Target# time dd if=/dev/zero of=/dev/mtd0 bs=1024K count=8 图 42 点击添加图片描述(最多60个字)编辑 测试写入8MByte数据至SPI FLASH的MTD0分区下,可看到本次测试的SPI FLASH写速度约为:8MByte/19.248s = 0.415MB/s。 SPI FLASH读速度测试 重启评估板,进入评估板系统,执行如下命令对SPI FLASH进行读速度测试。 Target# time dd if=/dev/mtd0 of=/dev/null bs=1024K 图 43 点击添加图片描述(最多60个字)编辑 测试从SPI FLASH的MTD0分区读取8MByte数据,可看到本次测试的SPI FLASH读速度约为:8MByte/1.382s = 5.788MB/s。 SATA接口测试 本章节使用三星品牌、120GByte容量的SATA接口SSD固态硬盘(以下简称“SATA硬盘”)并划分一个FAT32格式20GByte容量的分区测试SATA接口。请将SATA硬盘通过数据线连接至评估底板SATA接口。 进入评估板文件系统,执行如下命令可查询到SATA硬盘设备节点为sda1,容量为20GByte。挂载多个存储设备时,挂载名可能会变更,请以实际查询为准。 Target# fdisk -l Target# df -h 图 44 点击添加图片描述(最多60个字)编辑 图 45 点击添加图片描述(最多60个字)编辑 写速度测试 执行如下命令,测试SATA接口写速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/dev/zero of=/mnt/usb/sda1/test bs=1024K count=1000 图 46 点击添加图片描述(最多60个字)编辑 此处一共写1000MByte测试数据至SATA硬盘,可看到本次测试的SATA接口写速度约为1000MB/30.119s = 33.201MB/s。 读速度测试 执行如下命令,测试SATA接口读速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/mnt/usb/sda1/test of=/dev/null bs=1024K 图 47 点击添加图片描述(最多60个字)编辑 此处从SATA硬盘中一共读出1000MByte的数据,可看到本次测试的SATA接口读速度为1000MB/5.326s = 187.758MB/s。 USB接口读写测试 USB HOST模式测试 本章节进行USB HOST模式读写测试,使用SanDisk品牌、FAT32格式、16GByte容量的U盘,支持USB3.0/2.0。不同品牌、格式或容量的U盘,测试结果会有所差别。 请通过Type-C转接头将U盘与评估板USB0 OTG接口连接,或直接将U盘与评估板USB1 HOST(双层)任意一个HOST接口连接。如下测试以USB1 HOST接口为例,其余接口方法一致,将U盘插至评估板USB1 HOST接口后,出现如下打印信息,可以从中看到U盘大小、挂载名等,如下图所示。出现如下信息说明正确识别到设备。 图 48 点击添加图片描述(最多60个字)编辑 执行如下命令可查询挂载路径。挂载名和挂载路径请以实际查询为准,如下图所示。 Target# df -h 图 49 点击添加图片描述(最多60个字)编辑 备注:USB0 OTG默认是DEVICE模式,测试USB HOST模式时,需将USB0 OTG修改为USB HOST模式。请执行如下命令,修改adb.sh文件,在文件最后一行添加内容"cat /sys/bus/platform/devices/usbc0.2/usb_host"。 Target# vim /adb.sh 图 50 点击添加图片描述(最多60个字)编辑 图 51 点击添加图片描述(最多60个字)编辑 写速度测试 执行如下命令,测试USB接口写速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/dev/zero of=/mnt/usb/sda1/test bs=1024K count=200 图 52 点击添加图片描述(最多60个字)编辑 此处一共写200MByte测试数据至U盘,可看到本次测试的USB接口写速度约为:200MB/15.218s = 13.142MB/s。 读速度测试 执行如下命令,测试USB接口读速度。 Target# echo 3 > /proc/sys/vm/drop_caches Target# time dd if=/mnt/usb/sda1/test of=/dev/null bs=1024K 图 53 点击添加图片描述(最多60个字)编辑 此处从USB接口读取200MByte数据,可看到本次测试的USB接口读速度约为200MB/12.617s = 15.851MB/s。 USB DEVICE模式测试 本小节测试仅支持USB0 OTG接口,USB0 OTG默认是DEVICE模式,请通过Type-C线将PC机与评估板的USB0 OTG(CON17)接口进行连接。 执行如下指令,将系统boot-resource分区(mmcblk1p2)虚拟化为U盘,PC机将识别该U盘。 Target# echo /dev/mmcblk1p2 > /sys/class/android_usb/f_mass_storage/lun/file Target# cat /sys/bus/platform/devices/usbc0.2/otg_role //查看当前USB模式 图 54 点击添加图片描述(最多60个字)编辑 图 55 点击添加图片描述(最多60个字)编辑 将U盘中的图片bootlogo.bmp拷贝至PC机中,在PC机查看图片是否正常显示,接着再把图片从电脑拷贝至U盘。 图 56 点击添加图片描述(最多60个字)编辑 PC机可正常识别boot-resource分区虚拟化的U盘,并能正常查看boot-resource分区文件与正常读写,说明USB DEVICE功能正常。 串口测试 TTL UART6、TTL UART7串口 使用TTL转Micro USB模块,将评估板的TTL UART6(CON7)或TTL UART7(CON8)串口连接至PC机的USB接口。本小节以TTL UART6(CON7)串口为例(设备节点为:ttyS6)进行演示。如需测试TTL UART7(CON8)串口,请将设备节点修改为ttyS7。 打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,TTL UART6串口的端口号为COM4,如下图所示。 图 57 点击添加图片描述(最多60个字)编辑 打开串口调试终端,COM4、COM9波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。 图 58 点击添加图片描述(最多60个字)编辑 发送测试 进入评估板文件系统,执行如下命令,设置TTL UART6串口。 Target# stty -F /dev/ttyS6 ispeed 115200 ospeed 115200 cs8 //设置串口波特率 Target# echo tronlong > /dev/ttyS6 图 59 点击添加图片描述(最多60个字)编辑 图 60 点击添加图片描述(最多60个字)编辑 接收测试 执行如下命令,由调试串口向TTL UART6串口发送数据,TTL UART6串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。 Target# cat /dev/ttyS6 //等待接收UART6串口数据 图 61 点击添加图片描述(最多60个字)编辑 图 62 点击添加图片描述(最多60个字)编辑 RS232 UART3串口 使用RS232交叉串口母母线、USB转RS232公头串口线,将评估板的RS232 UART3串口连接至PC机的USB接口。 打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,RS232 UART3串口的端口号为COM12,如下图所示。 图 63 点击添加图片描述(最多60个字)编辑 打开串口调试终端,COM9、COM12波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。 图 64 点击添加图片描述(最多60个字)编辑 发送测试 进入评估板文件系统,执行如下命令,由调试串口向RS232 UART3串口发送数据,RS232 UART3串口对应的串口调试终端将显示接收到的数据。 Target# stty -F /dev/ttyS3 ispeed 115200 ospeed 115200 cs8 //设置串口波特率 Target# echo tronlong > /dev/ttyS3 图 65 点击添加图片描述(最多60个字)编辑 图 66 点击添加图片描述(最多60个字)编辑 接收测试 执行如下命令,并在RS232 UART3串口输入数据,调试串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。 Target# cat /dev/ttyS3 //等待接收RS232 UART3串口数据 图 67 点击添加图片描述(最多60个字)编辑 图 68 点击添加图片描述(最多60个字)编辑 RS485 UART4、RS485 UART5串口 使用RS232转RS485模块、USB转RS232公头串口线,将评估板的RS485 UART4或RS485 UART5串口连接至PC机的USB接口。 RS232转RS485模块与评估板RS485串口连接方法如下: RS232转RS485模块485+端子,连接评估板RS485串口A端子。 RS232转RS485模块485-端子,连接评估板RS485串口B端子。 RS232转RS485模块GND端子,连接评估板RS485串口GND1端子。 本章节以RS485 UART4串口(设备节点为:ttyS4)为例进行演示。如需测试RS485 UART5串口,请将设备节点修改为ttyS5。 打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,RS485 UART4串口的端口号为COM12,如下图所示。 图 69 打开串口调试终端,COM9、COM12波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。 图 70 点击添加图片描述(最多60个字)编辑 发送测试 进入评估板文件系统,执行如下命令进行调试串口与RS485 UART4串口互发数据。RS485 UART4串口测试步骤、现象与RS232串口类似。 Target# stty -F /dev/ttyS4 ispeed 115200 ospeed 115200 cs8 //设置波特率 Target# echo tronlong > /dev/ttyS4 //向RS485 UART4串口发送数据 图 71 图 72 点击添加图片描述(最多60个字)编辑 接收测试 执行如下命令,并在RS458 UART4串口输入数据,调试串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。 Target# cat /dev/ttyS4 //等待接收RS485 UART4串口数据 图 73 点击添加图片描述(最多60个字)编辑 图 74

  • 发表了日志: 嵌入式ARM端测试手册——全志T3+Logos FPGA开发板(上)

  • 发表了日志: 嵌入式ARM端测试手册——全志T3+Logos FPGA评估板(下)

  • 发表了主题帖: 嵌入式ARM端测试手册——全志T3+Logos FPGA评估板(下)

    前 言   本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMware15.5.5 进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装SecureCRT串口调试终端、VMware虚拟机等相关软件。 本文档主要提供评估板的硬件资源测试方法。无特殊说明情况下,默认使用USB TO UART0作为调试串口,使用Linux系统启动卡(Micro SD方式)启动系统,通过路由器与PC机进行网络连接。 文章由于篇幅过长的原因,分为上下两篇,欢迎点击账号查询更多相关文章,或在评论区留言咨询 本文测试板卡为创龙科技TLT3F-EVM开发板,它是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业评估板,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 点击添加图片描述(最多60个字)编辑 评估板接口资源丰富,引出三路网口、三路USB、双路CAN、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出LVDS LCD、TFT LCD、MIPI LCD、CVBS OUT、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编解码,并支持SATA大容量存储接口,方便用户快速进行产品方案评估与技术预研。 CAN接口测试 请先按照《调试工具安装》文档安装CAN接口调试工具GCAN Tools。使用USB-CAN分析仪(型号:广成科技USBCAN-II FD)连接评估板CAN SPI2-1或CAN SPI2-2接口至PC机USB接口。 本章节以CAN SPI2-1接口(设备节点为:can0)进行演示。如需测试CAN SPI2-2接口,请将设备节点修改为can1。 进入评估板文件系统,执行如下命令配置CAN0总线比特率为1MHz,并启动CAN0总线。 Target# canconfig can0 stop Target# canconfig can0 bitrate 1000000 Target# canconfig can0 start 图 75 点击添加图片描述(最多60个字)编辑 接收测试 执行如下命令,接收PC端发送的数据。 Target# candump can0 图 76 在PC端打开GCAN Tools软件,等待软件检测到设备后,选择设备类型,点击“打开设备”。设备打开后,点击CAN1,将波特率设置为1000K,然后点击“确定”,如下图所示。 图 77 点击添加图片描述(最多60个字)编辑 进入GCAN Tools软件发送界面,取消"CAN FD"选项,USB-CAN分析仪连接成功后将会显示Connected状态,如下图所示。 图 78 点击添加图片描述(最多60个字)编辑 输入数据,点击“发送”按钮,向评估板发送数据,串口调试终端将会接收并打印显示,如下图所示。 图 79 点击添加图片描述(最多60个字)编辑 图 80 点击添加图片描述(最多60个字)编辑 接收测试 进入评估板文件系统执行如下命令,发送数据至PC端GCAN Tools软件,GCAN Tools软件收到数据说明功能正常。 Target# cansend can0 --identifier=0x123 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 图 81 图 82 点击添加图片描述(最多60个字)编辑 10.4英寸LVDS显示屏测试 评估板默认以10.4英寸LVDS显示屏(群创G104X1-L04)进行显示,请先将LVDS显示屏与评估板的LVDS LCD(显示)、RES TS(触摸)、BACK LIGHT(背光)接口正确连接。 备注:RES TS信号防反插注意事项。LVDS显示屏RES TS信号排线的金属触点需朝向触摸转接线的4个凹槽方向,请勿插反。请根据下表将RES TS信号杜邦线对准评估底板RES TS排针接口进行连接。 图 83 点击添加图片描述(最多60个字)编辑 表 2 RES TS信号杜邦线 评估底板RES TS排针接口丝印 红色 X+ 白色 Y- 绿色 X- 黑色 Y+ LVDS显示屏显示测试 评估板重启,进入文件系统后即可看到LVDS显示屏显示Qt界面。 图 84 点击添加图片描述(最多60个字)编辑 LVDS显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 85 点击添加图片描述(最多60个字)编辑 评估板重启后,执行如下校准命令。 Target# ts_calibrate 图 86 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击5次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 87 点击添加图片描述(最多60个字)编辑 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 88 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 89 点击添加图片描述(最多60个字)编辑 7英寸LCD显示屏测试 如需切换为LCD屏显示,请通过FFC软排线将创龙科技TL070A LCD显示屏与评估板TFT LCD(CON10)接口连接。 将产品资料“4-软件资料\Linux\Boot_package\AA_BB_CC\”目录下boot_package_tft_lcd.fex文件(支持LCD显示)拷贝至评估板文件系统root用户目录下,执行如下命令将其固化至Linux系统启动卡。 Target# dd if=boot_package_tft_lcd.fex of=/dev/mmcblk1 seek=32800 Target# dd if=boot_package_tft_lcd.fex of=/dev/mmcblk1 seek=24576 Target# sync Target# reboot 图 90 LCD显示屏显示测试 评估板重启,进入文件系统后在LCD显示屏可观察到Qt界面。 图 91 点击添加图片描述(最多60个字)编辑 LCD显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal //如"/etc/pointercal"不存在,请忽略 Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 92 点击添加图片描述(最多60个字)编辑 评估板重启后,执行如下命令,打开背光,配置tslib环境,并执行校准命令。 Target# mount -t debugfs none /sys/kernel/debug Target# echo PB20 1 > /sys/kernel/debug/sunxi_pinctrl/function Target# echo PB20 1 > /sys/kernel/debug/sunxi_pinctrl/data Target# ts_calibrate 图 93 点击添加图片描述(最多60个字)编辑 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击五次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 94 点击添加图片描述(最多60个字)编辑 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 95 点击添加图片描述(最多60个字)编辑 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 96 点击添加图片描述(最多60个字)编辑 7英寸MIPI显示屏测试 如需切换为MIPI屏显示,请将7英寸MIPI显示屏(型号:阿美林AML070WXII4006,分辨率:800x1280)与评估板的MIPI LCD(显示)、CAP TS(触摸)接口正确连接。 将产品资料“4-软件资料\Linux\Boot_package\AA_BB_CC\”目录下boot_package_mipi_lcd.fex文件(支持MIPI显示)拷贝至评估板文件系统root用户目录下,执行如下命令将其固化至Linux系统启动卡。 Target# dd if=boot_package_mipi_lcd.fex of=/dev/mmcblk1 seek=32800 Target# dd if=boot_package_mipi_lcd.fex of=/dev/mmcblk1 seek=24576 Target# sync Target# reboot 图 97 点击添加图片描述(最多60个字)编辑 MIPI显示屏显示测试 评估板重启,进入文件系统后即可看到MIPI屏显示Qt界面。 图 98 MIPI显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 99 点击添加图片描述(最多60个字)编辑 评估板重启后,执行如下校准命令。 Target# ts_calibrate 图 100 点击添加图片描述(最多60个字)编辑 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击五次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 101 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 102 点击添加图片描述(最多60个字)编辑 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 103 点击添加图片描述(最多60个字)编辑 CVBS OUT接口测试 请使用AV转VGA转换器连接评估板CVBS OUT接口和VGA显示屏。 评估板启动,将产品资料“4-软件资料\Linux\Boot_package\AA_BB_CC\”目录下boot_package_tft_lcd.fex镜像拷贝至评估板文件系统root用户目录下,该镜像同时支持CVBS OUT显示输出,执行如下命令将其固化至Linux系统启动卡。 系统重启后,评估板CVBS OUT接口将输出Qt界面至VGA显示屏。 Target# dd if=boot_package_tft_lcd.fex of=/dev/mmcblk1 seek=32800 Target# dd if=boot_package_tft_lcd.fex of=/dev/mmcblk1 seek=24576 Target# sync Target# reboot 图 104 图 105 点击添加图片描述(最多60个字)编辑 执行如下命令可查看CVBS OUT接口输出格式为"tv output mode(14)",即NTSC模式。 Target# cat /sys/class/disp/disp/attr/sys 图 106 点击添加图片描述(最多60个字)编辑 TVIN接口测试 使用FIT-ACAM-A V1.0模块连接评估板的TVIN接口,FIT-ACAM-A V1.0模块接入四路CCD摄像头,评估板使用LVDS LCD接口输出图像,请正确连接评估板和10.4英寸LVDS显示屏(群创G104X1-L04)。 将产品资料“4-软件资料\Linux\Boot_package\AA_BB_CC\”目录下boot_package_lvds_lcd.fex文件拷贝至评估板文件系统root用户目录下,执行如下命令将其固化至Linux系统启动卡。 Target# dd if=boot_package_lvds_lcd.fex of=/dev/mmcblk1 seek=32800 Target# dd if=boot_package_lvds_lcd.fex of=/dev/mmcblk1 seek=24576 Target# sync Target# reboot 图 107 点击添加图片描述(最多60个字)编辑 评估板重启后,执行如下命令关闭Qt显示功能,重新初始化framebuffer。 Target# killall Launcher MediaUI CameraUI Target# fbinit Target# echo 0,0 > /sys/class/disp/disp/attr/fb2ui 图 108 点击添加图片描述(最多60个字)编辑 执行如下命令可查看TVIN接口的四个video*设备节点。 Target# ls /dev/video* 图 109 执行如下命令,采集四路TVIN视频并通过LVDS LCD显示屏显示。 Target# /sdktest 4 4 5 6 7 图 110 点击添加图片描述(最多60个字)编辑 可观察到LVDS LCD显示屏依次循环显示四路TVIN采集到的图像。 图 111 点击添加图片描述(最多60个字)编辑 AUDIO音频测试 评估板板载H/P OUT、LINE IN接口。请准备一条3.5mm两头均为公头的音频线,一端连接评估板的LINE IN接口,另外一端连接正在播放音频的播放器(手机或PC机均可),将音箱或耳机插入H/P OUT接口。 执行如下命令,音箱或耳机正常播放音乐,并且不存在杂音、失真,按"Ctrl + C"停止播放。 Target# killAllUI //关掉Qt应用程序,否则会冲突 Target# tinymix 21 1 > /dev/null //打开右输入 Target# tinymix 28 1 > /dev/null //打开左输入 Target# tinymix 8 0 > /dev/null //关闭麦克风1 Target# tinymix 9 0 > /dev/null //关闭麦克风2 Target# arecord -Dhw:0,0 -f cd | aplay -Dhw:0,0 -f cd > /dev/null //启动录音与播放 点击添加图片描述(最多60个字)编辑 图 112 DI/DO接口测试 将评估板断电,请通过杜邦线分别将J10的pin7与pin9、pin11与pin13、pin15与pin17、pin19进行连接。 图 113 执行如下命令,进行DI/DO回环测试。 Target# echo 9 > /sys/class/gpio/export Target# echo 193 > /sys/class/gpio/export Target# echo 194 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio9/direction Target# echo out > /sys/class/gpio/gpio193/direction Target# echo out > /sys/class/gpio/gpio194/direction Target# echo 192 > /sys/class/gpio/export Target# echo 195 > /sys/class/gpio/export Target# echo 258 > /sys/class/gpio/export Target# echo 259 > /sys/class/gpio/export Target# echo in > /sys/class/gpio/gpio192/direction Target# echo in > /sys/class/gpio/gpio195/direction Target# echo in > /sys/class/gpio/gpio258/direction Target# echo in > /sys/class/gpio/gpio259/direction Target# echo 1 > /sys/class/gpio/gpio9/value Target# echo 1 > /sys/class/gpio/gpio193/value Target# echo 1 > /sys/class/gpio/gpio194/value Target# echo DI1 "value: "`cat /sys/class/gpio/gpio192/value` Target# echo DI2 "value: "`cat /sys/class/gpio/gpio195/value` Target# echo DI3 "value: "`cat /sys/class/gpio/gpio258/value` Target# echo DI4 "value: "`cat /sys/class/gpio/gpio259/value` Target# echo 0 > /sys/class/gpio/gpio9/value Target# echo 0 > /sys/class/gpio/gpio193/value Target# echo 0 > /sys/class/gpio/gpio194/value Target# echo DI1 "value: "`cat /sys/class/gpio/gpio192/value` Target# echo DI2 "value: "`cat /sys/class/gpio/gpio195/value` Target# echo DI3 "value: "`cat /sys/class/gpio/gpio258/value` Target# echo DI4 "value: "`cat /sys/class/gpio/gpio259/value` 图 114 看门狗测试 进行看门狗测试前,请先将评估板Watchdog的跳线帽选择ON档位,若不执行任何操作,系统将在1~3min内重启。 备注:如下测试出现"can't find function irg on pin xxx"打印信息,表示该IO不支持外部中断,请忽略。 60s超时模式测试 请执行如下命令开始喂狗,喂狗期间系统不会重启。 Target# mount -t debugfs debug /proc/sys/debug Target# echo 43 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio43/direction Target# while true; do echo 1 > /sys/class/gpio/gpio43/value;sleep 1; echo 0 > /sys/class/gpio/gpio43/value;sleep 1; done 图 115 按"Ctrl + C"停止喂狗,执行如下命令,系统将在1~3min内重启。 Target# echo 44 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio44/direction Target# echo 1 > /sys/class/gpio/gpio44/value 点击添加图片描述(最多60个字)编辑 图 116 10s超时模式测试 请执行如下命令开始喂狗,喂狗期间系统不会重启。 Target# mount -t debugfs debug /proc/sys/debug //若已执行则无需再次执行,重复执行会报错,忽略即可 Target# echo 43 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio43/direction Target# while true; do echo 1 > /sys/class/gpio/gpio43/value;sleep 1; echo 0 > /sys/class/gpio/gpio43/value;sleep 1; done 点击添加图片描述(最多60个字)编辑 图 117 按"Ctrl + C"停止喂狗,执行如下命令,系统将在10~30s内重启。 Target# echo 44 > /sys/class/gpio/export Target# echo out > /sys/class/gpio/gpio44/direction Target# echo 0 > /sys/class/gpio/gpio44/value 点击添加图片描述(最多60个字)编辑 图 118 蓝牙测试 评估板已板载蓝牙模块,评估板上电时蓝牙数据指示灯LED5和连接指示灯LED6呈现熄灭状态。当蓝牙连接成功后,连接指示灯呈现绿色并常亮;当蓝牙收发数据时,数据指示灯呈现黄色并闪烁。 本案例测试需准备一台智能手机。将手机蓝牙功能开启,手机微信搜索“亿佰特物联网应用专家”公众号并进入。点击“客户支持 -> BLE测试工具”进入EBYTE小程序,查找并点击"E104-BT5011A"设备进入。 点击添加图片描述(最多60个字)编辑 图 119 Slave模式 在微信小程序,选择进入Slave模式并点击"Cloud Connect"连接。 点击添加图片描述(最多60个字)编辑 图 120 然后在评估板输入如下命令,手机端将接收到评估板(作为Slave)发送的信息。 Target# stty -F /dev/ttyS2 ispeed 115200 ospeed 115200 cs8 -icanon Target# echo tronlong > /dev/ttyS2 点击添加图片描述(最多60个字)编辑 图 121 点击添加图片描述(最多60个字)编辑 图 122 Center模式 微信小程序,点击返回键"<"返回至模式选择界面,选择进入Center模式点击"Cloud Connect"连接。 点击添加图片描述(最多60个字)编辑 图 123 评估板先执行如下命令,等待接收手机(作为Slave)发送的信息。 Target# cat /dev/ttyS2 点击添加图片描述(最多60个字)编辑 图 124 然后在微信小程序的Center模式下点击蓝色字体"Write new value"。手机键盘输入字符"tronlong",接着按下回车键,微信小程序将会弹出发送成功提示信息。 点击添加图片描述(最多60个字)编辑 图 125 同时评估板串口终端将接收到手机发送的字符信息,如下图所示。 图 126 完成测试后,可执行如下命令断开连接,评估底板蓝牙连接指示灯LED6熄灭,表示已断开连接。 Target# mount -t debugfs debug /proc/sys/debug Target# echo PB8 1 > /proc/sys/debug/sunxi_pinctrl/function Target# echo PB8 0 > /proc/sys/debug/sunxi_pinctrl/data 点击添加图片描述(最多60个字)编辑 图 127 网络接口测试 评估板配备1个千兆网口(ETH0 RGMII)和2个百兆网口(ETH1 MII、ETH1 USB),网卡名字对应如下: ETH0 RGMII:eth0,默认网卡。 ETH1 MII:eth1。 ETH2 USB:eth2。 请使用网线将评估板对应网口、PC机连接至同一个路由器,然后启动评估板。 ETH0 RGMII网口测试 网络连通测试 进入评估板文件系统,执行如下命令获取IP以及查看网口配置信息。 Target# ifconfig 点击添加图片描述(最多60个字)编辑 图 128 如对应网卡未自动获取到IP,请执行如下命令。 Target# udhcpc -i eth0 "-i"用于指定网卡,eth0为网卡名字,请根据实际情况修改。不加"-i"和网卡名字,则指默认网卡eth0。 点击添加图片描述(最多60个字)编辑 图 129 如多个网口同时连接,请使用ifconfig命令关闭所有非当前测试网口,并打开当前测试网口。例如: Target# ifconfig eth0 up Target# ifconfig eth1 down Target# ifconfig eth2 down 网卡名字请根据实际情况修改,down表示关闭,up表示打开。如网口未正常连接,请尝试先关闭网口再打开网口。 图 130 测试网口连接外网是否正常,以访问"www.baidu.com"为例,执行如下命令,"-I"代表指定网口,不加"-I"则使用默认网卡。可按"Ctrl + C"终止ping命令。 Target# ping www.baidu.com -I eth0 点击添加图片描述(最多60个字)编辑 图 131 TCP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 132 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.2为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。若Ubuntu未安装Iperf3工具,可在Ubuntu中执行"sudo apt-get install iperf3"安装。 Host# iperf3 -c 192.168.2.2 -i 1 图 133 点击添加图片描述(最多60个字)编辑 图 134 UDP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 135 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.2为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。"-R"表示反向模式运行(Server端发送,Client端接收)。 Host# iperf3 -u -c 192.168.2.2 -b 0 -R 图 136 图 137 ETH1 MII网口测试 网络连通测试 进入评估板文件系统,执行如下命令关闭所有非当前测试网口,并打开当前测试网口。网卡名字请根据实际情况修改,down表示关闭,up表示打开。如网口未正常连接,请尝试先关闭网口再打开网口。 Target# ifconfig eth0 down Target# ifconfig eth1 up Target# ifconfig eth2 down 图 138 请执行如下命令,自动获取IP地址。 Target# udhcpc -i eth1 Target# ifconfig "-i"用于指定网卡,eth1为网卡名字,请根据实际情况修改。不加"-i"和网卡名字,则指默认网卡eth0。 点击添加图片描述(最多60个字)编辑 图 139 测试网口连接外网是否正常,以访问"www.baidu.com"为例,执行如下命令,"-I"代表指定网口,不加"-I"则使用默认网卡。可按"Ctrl + C"终止ping命令。 Target# ping www.baidu.com -I eth1 点击添加图片描述(最多60个字)编辑 图 140 TCP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 141 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.9为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。 Host# iperf3 -c 192.168.2.9 -i 1 图 142 点击添加图片描述(最多60个字)编辑 图 143 UDP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 144 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.9为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。"-R"表示反向模式运行(Server端发送,Client端接收)。 Host# iperf3 -u -c 192.168.2.9 -b 0 -R 点击添加图片描述(最多60个字)编辑 图 145 点击添加图片描述(最多60个字)编辑 图 146 ETH2 USB网口测试 网络连通测试 进入评估板文件系统,执行如下命令关闭所有非当前测试网口,并打开当前测试网口。网卡名字请根据实际情况修改,down表示关闭,up表示打开。如网口未正常连接,请尝试先关闭网口再打开网口。 Target# ifconfig eth0 down Target# ifconfig eth1 down Target# ifconfig eth2 up 图 147 请执行如下命令,自动获取IP地址。 Target# udhcpc -i eth2 Target# ifconfig "-i"用于指定网卡,eth2为网卡名字,请根据实际情况修改。不加"-i"和网卡名字,则指默认网卡eth0。 图 148 测试网口连接外网是否正常,以访问"www.baidu.com"为例,执行如下命令,"-I"代表指定网口,不加"-I"则使用默认网卡。可按"Ctrl + C"终止ping命令。 Target# ping www.baidu.com -I eth2 点击添加图片描述(最多60个字)编辑 图 149 TCP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 150 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.6为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。 Host# iperf3 -c 192.168.2.6 -i 1 点击添加图片描述(最多60个字)编辑 图 151 点击添加图片描述(最多60个字)编辑 图 152 UDP带宽测试 如下使用Iperf3工具测试评估板与PC机的网络通信带宽。评估板作为服务端,执行如下命令等待PC机连接。"-A"表示设置CPU亲和力。 Target# iperf3 -s -A 3 图 153 在Ubuntu执行如下命令测试网络通信带宽,命令中192.168.2.6为评估板IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。"-R"表示反向模式运行(Server端发送,Client端接收)。 Host# iperf3 -u -c 192.168.2.6 -b 0 -R 图 154 图 155

  • 发表了主题帖: 基于OMAPL138+FPGA核心板——MCSDK开发入门(下)

        本文测试板卡为创龙科技 SOM-TL138F 是一款基于 TI OMAP-L138(定点/浮点 DSP C674x + ARM9)+ 紫光同创 Logos/Xilinx Spartan-6 低功耗 FPGA 处理器设计的工业级核心板。核心板内部OMAP-L138 与 Logos/Spartan-6 通过 uPP、EMIFA、I2C 通信总线连接,并通过工业级 B2B连接器引出网口、EMIFA、SATA、USB、LCD 等接口。   核心板经过专业的 PCB Layout 和高低温测试验证,稳定可靠,可满足各种工业应用环境。用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研 ex02_messageq 示例名字:MessageQ 功能说明:基于队列的消息传递,负责GPP与DSP端的可变长度的短消息交互。   图 49 参考英文资料:   图 50 运行命令: Target# cd demo-rootfs/ex02_messageq/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 51 特点: 实现了处理期间变长消息的传递; 消息的传递都是通过操作消息队列来实现的; 每个消息队列可以有多个写者,但只能有一个读者;每个任务(task)可以对多个消息队列进行读写; 一个宿主在准备接收消息时,必须先创建消息队列,而在发送消息前,需要打开预定的接收消息队列; 常用在以下场景中: 在消息传递中有多个写者,但仅有一个读者; 所需要传递的消息超过32bit,且长度可变;读写者的缓冲区大小相同; 处理期间需要频繁传递消息,在这种情况下,消息被依次放入队列,能保证不会丢消息; 消息队列为空时,调用MessageQ_get()获取消息时会被阻塞,直到消息队列被写入消息; 支持处理器间移动消息队列,在这种情况下,调用MessageQ_open()来定位队列位置,而消息传递部分代码不需要改动; 提供的API接口: 消息队列初始化:MessageQ_Params_init() 消息队列创建/销毁:MessageQ_create()/MessageQ_delete(),create创建消息队列,并分配相应存储空间 消息队列打开/关闭:MessageQ_open()/MessageQ_close(),open时会返回远程处理器上的QueID的地址 为消息队列分配堆内存:MessageQ_alloc()/MessageQ_free() 为消息队列注册/注销堆内存:MessageQ_registerHeap()/MessageQ_unregisterHeap() 向消息队列中放入/获取消息:MessageQ_put()/MessageQ_get() 获取消息队列ID:MessageQ_getQueueId() 获取消息队列中消息数:MessageQ_count() 在消息队列中嵌入消息:MessageQ_setReplyQueue() 为消息队列解阻塞:MessageQ_unblock() 为调试消息队列加入Trace:MessageQ_setMsgTrace() ex03_notify 示例名字:Notify 功能说明:将硬件中断抽象成多组逻辑事件,是一种简单快捷的发送低于32bit信息的通信方式。 参考英文资料:   图 52 运行命令: Target# cd demo-rootfs/ex03_notify/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 53 特点: 同一个中断号可以注册多个事件,同一个事件可以有多个回调函数或者多个宿主(可以是处理器、线程或者任务),事件被触发后所有宿主都会被唤醒; 一个事件可以接收多个宿主发送来的通知(notification),事件所携带的参数最大支持32bit; 事件是有优先级的,EventId越小优先级越高,事件0的优先级最高,随着EventId增大优先级依次递减;当多个事件被触发,优先级最高的会最先响应; Notify模块使用硬件中断,因此不能被频繁调度。 提供的API接口: 初始化并配置Notify组件:Notify_attach(); 注册/注销事件:Notify_registerEvent()/Notify_unregisterEvent()/ 发送带参数的事件给某处理器:Notify_sendEvent() 通过回调函数接收事件:Notify_FnNotifyCbck() 使能/禁用事件:Notify_disableEvent()/Notify_enableEvent() 其他逻辑接口:Notify_eventAvailable()/Notify_intLineRegistered()/ Notify组件常用于传递附带消息少于32bit的场景,如信令传递、buffer指针传递等。在信令传递时使用高优先级的事件,如事件0。而在传递buffer指针是可以使用低优先级的事件,如事件30等。 在Notify_sentEvent() API中带有参数waitClear,该参数为可选参数,如果waitClear为TRUE,这就意味着多宿主事件无法及时响应,必须等待前一宿主事件结束后才能响应下一宿主;如果waitClear为FALSE,最好不要为事件附带参数,否则多宿主事件可能会由于消息被覆盖而出现丢消息的现象。 该API最好不要在中断服务程序(ISR)调用(特别是waitClear=TRUE时),否则会导致中断调度出现异常(表现之一:高优先级的中断响应会延迟)。此外该API不能再使用GateMP模块锁保护的程序段中调用,否则可能会导致操作系统死锁。 由于其他模块使用了Notify机制,因此在SysLink中预留了部分事件号,这部分事件号用户需要慎重选用(如果没有使用其他组件,可以考虑占用这部分事件号),在注册事件前可以使用Notify_eventAvailable()来检查该事件是否可用,即该中断号上的该事件号是否被注册。 表 2 Module Event IDs FrameQBufMgr 0 FrameQ 1 MessageQ(TransportShm) 2 RingIO 3 NameServerRemoteNotify 4   ex04_sharedregion 示例名字:SharedRegion 功能说明:SharedRegion模块负责管理共享内存区。在一个有共享内存的多核架构中,普遍会遇到共享内存映射虚拟地址转换问题。 参考英文资料:   图 54 运行命令: Target# cd demo-rootfs/ex04_sharedregion/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 55 提供的API接口: SharedRegion_clearEntry() SharedRegion_entryInit() SharedRegion_getCacheLineSize() SharedRegion_getEntry()、SharedRegion_setEntry() SharedRegion_getHeap() SharedRegion_getId() SharedRegion_getIdByName() SharedRegion_getNumRegions() SharedRegion_getPtr() SharedRegion_getSRPtr() SharedRegion_isCacheEnabled() SharedRegion_translateEnabled() 一般来说配置一个SharedRegion需要关心以下几个参数: base:The base address,共享内存区的基地址,这个所谓的基地址实际上是映射后的虚拟地址,并非物理地址; len:The length,共享内存区的大小,对于同一片共享内存,其所有者的查找表中该项值应该是相同的; name:The name of the region,该共享内存区的名字; isValid:Whether the region is valid,对于该处理器而言,是否具有权限去访问该共享内存区; ownerProcId:The id of the processor which owns the region,管理该内存区的处理器ID,该处理器具有创建HeapMemMP的权限,而其他处理器只有使用的权限; cacheEnable:Whether the region is cacheable,是否为该共享内存区创建cache; cacheLineSize:The cache line size,cache的大小; createHeap:Whether a heap is created for the region,是否使用Heap(堆)管理该内存区域; ex05_heapbufmp 示例名字:HeapBufMP 功能说明:为用户提供了固定大小的缓冲池管理接口。 参考英文资料:   图 56 运行命令: Target# cd demo-rootfs/ex05_heapbufmp/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 57 提供的API接口: HeapBufMP创建/删除:HeapBufMP_create()/HeapBufMP_delete() HeapBufMP打开/关闭:HeapBufMP_open()/HeapBufMP_close() HeapBufMP参数初始化:HeapBufMP_Params_init() HeapBufMP分配/释放内存:HeapBufMP_alloc()/HeapBufMP_free() HeapBufMP获取所有状态:HeapBufMP_getExtendedStats()/HeapBufMP_getStats() ex06_listmp 示例名字:ListMP 功能说明:实现了多宿主双向循环链表,即该双向循环链表为多个处理器共同拥有,可以由多个处理器共同维护,共同使用。 参考英文资料:   图 58 运行命令: Target# cd demo-rootfs/ex06_listmp/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 59 特点: ListMP的实现区别于一般的双向循环链表,因此它不仅具有双向循环链表的特性外,还增添了其他的特性,比如以下几点: 实现了简单的多宿主协议,支持多个读写者(multi-reader、multi-writee)q; 使用Gate作为内部保护机制,防止多个宿主处理器同时访问该链表; ListMP的实现并未加入通知机制,如果需要的话,可以在外部封装时引入Notify机制来实现;使用ListMP机制来管理的buffers都需要从共享内存区分配,包括从堆内存分配的buffers以及动态分配的内存。 常用在以下场景中: 需要被多个宿主访问并且需要频繁传递消息或者数据; 可用于无规则的消息传递,基于链表实现,因此读者可以遍历所有对象,并选出需要的对象进行处理;如果硬件支持快速队列,则无法完成队列遍历操作; 可以自定义消息优先级,同样是基于链表实现,读者可以随意的选择在链表头部还是链表的尾部来插入消息或者实现链表对象的位置调整,进而实现消息的优先级选择;如果硬件支持快速队列,则无法完成队列遍历操作; 无内置通知机制,可以灵活的外部通知机制来实现。譬如根据实际情况,选用Notify来实现,亦或是使用选用MessageQ则可以使用最少的中断资源实现性能优良的通知机制,缺点是需要额外的代码实现通知机制; 提供的API接口: 参数初始化:ListMP_Params_init() 创建/销毁:ListMP_create()/ListMP_delete() 打开/关闭:ListMP_open()/ListMP_close() 相关链表操作: 判断链表空:ListMP_empty() 获取保护锁:ListMP_getGate() 获取链表头/表尾:ListMP_getHead()/ListMP_getTail() 链表插入操作:ListMP_insert() 获取链表上游元素/下游元素:ListMP_next()/ListMP_prev() 插入元素至链表头/尾:ListMP_putHead()/ListMP_putTail() 删除元素:ListMP_remove() ex07_gatemp 示例名字:GateMP 功能说明:GateMP是针对于多处理器共享资源的一种保护机制,就如其名字一样,把共享资源比作房子,那么GateMP就是这个房子的门。GateMP组件实现了开关门的机制,用于保护共享资源一次只被一个处理器读写。根据Soc硬件资源配置的不同,GateMP的实现有所不同。对于硬件支持Hardware Spinlock的可以基于H/W spinlock来实现GateHwSpinlock;而对于没有该硬件资源的系统中,则使用软件方法(Peterson算法)来实现GatePeterson。 GateMP组件框架如下:   图 60 参考英文资料:   图 61 运行命令: Target# cd demo-rootfs/ex07_gatemp/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 62 提供的API接口: 初始化:GateMP_Params_init() 创建/删除:GateMP_create()/GateMP_delete() 打开/关闭:GateMP_open()/GateMP_close() 进入/离开保护:GateMP_enter()/GateMP_leave() 获取当前的保护类型:GateMP_getLocalProtect()/GateMP_getRemoteProtect() ex08_ringio 示例名字:RingIO 功能说明:该组件提供基于数据流的循环缓冲区。该组件允许在共享存储空间创建循环缓冲区,不同的处理都能够读取或者写入循环缓冲区。RingIO组件允许通过写指针来获取数据缓冲区的空存储空间,当该存储空间被释放之后,相应存储空间可以被再次写入。 RingIO组件允许读指针获取缓冲区中读取空间的有效数据。当被释放之后,相应存储空间的数据被标记为无效。每个RingIO实体拥有一个读指针和一个写指针。RingIO组件也有API函数可以使能数据属性的同步传输。如:EOS(End Of Stream)、事件戳、流偏移地址等,也可能伴随着循环缓冲区的偏移值。   图 63 参考英文资料:   图 64 运行命令: Target# cd demo-rootfs/ex08_ringio/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 65 特点: 仅支持一个读者和一个写者; 读写相对独立,可以在不同的进程或者处理器中同时进行读写操作; 提供的API接口: RingIO参数初始化:RingIO_Params_init() 创建/删除RingIO对象:RingIO_create()/RingIO_delete() 打开/关闭RingIO对象:RingIO_open()/RingIO_close(),RingIO_openByAddr() 获取共享内存请求:RingIO_sharedMemReq() 注册/注销RingIO通知:RingIO_registerNotifier()/RingIO_unregisterNotifier() 强制发送RingIO通知:RingIO_sendNotify() 获取RingIO通知类型:RingIO_setNotifyType() 设置/获取水印标志/通知类型:RIngIO_setWaterMark()/RIngIO_getWaterMark() 获取/释放RingIO数据:RingIO_acquire()/RingIO_release() 设置/获取RingIO属性:RingIO_setvAttribute()/RingIO_getvAttribute() 设置/获取RingIO固定大小的属性:RingIO_setAttribute()/RingIO_getAttribute() 刷新RingIO的buffer:RingIO_flush() 获取有效/空buffer大小:RingIO_getValidSize()/RingIO_getEmptySize() 获取有效/空属性大小:RingIO_getValidAttrSize()/RingIO_getEmptyAttrSize() 获取需求buffer的大小/位置:RingIO_getAcquiredSize()/ RingIO_getAcquiredOffset() ex09_readwrite 示例名字:ProcMgr read/write 功能说明:ProcMgr read/write示例阐明了大缓冲区通过直接读写DSP内部RAM来进行传输的概念。它实现了在GPP端和使用ProcMgr_read()和ProcMgr_write() API的DSP端以及两个DSP端之间的大尺寸数据缓冲器之间的数据与信息的传递和转换。"ProcMgr read/write"示例中数据与信息流向图如下:   图 66 运行命令: Target# cd demo-rootfs/ex09_readwrite/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 67 ex33_umsg 示例名字:umsg(Inter-processor Unidirectional Messaging) 功能说明:编译usmg库文件和umsg相关驱动。 参考英文资料:   图 68 运行命令: Target# cd demo-rootfs/ex33_umsg/ Target# ls Target# ./load_umsg.sh 成功运行提示如下图:   图 69 备注:由于ex34_radar示例用到了ex33_umsg示例编译出来的驱动程序和库文件,因此在使用ex34_radar示例之前,一定要运行ex33_umsg示例。 ex34_radar 示例名字:radar 功能说明:阐明如何利用umsg库在GPP和DSP之间传递信息。   图 70 参考英文资料:   图 71 Target# cd demo-rootfs/ex34_radar/debug/ Target# ls Target# ./run.sh 成功运行提示如下图:   图 72  

最近访客

< 1/2 >

统计信息

已有16人来访过

  • 芯积分:98
  • 好友:--
  • 主题:30
  • 回复:4
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言