tag 标签: arm

相关博文
  • 热度 1
    2023-3-6 16:45
    252 次阅读|
    0 个评论
    1.测试对象 HD-G2L-IOT基于HD-G2L-COREV2.0工业级核心板设计,双路千兆网口、双路CAN-bus、2路RS-232、2路RS-485、DSI、LCD、4G/5G、WiFi、CSI摄像头接口等,接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。 HD-G2L-CORE系列工业级核心板基于RZ/G2L微处理器配备Cortex®-A55(1.2GHz)CPU、16位DDR3L/DDR4接口、带ArmMali-G31的3D图形加速引擎以及视频编解码器(H.264)。此外,这款微处理器还配备有大量接口,如摄像头输入、显示输出、USB2.0和千兆以太网,因此特别适用于入门级工业人机界面(HMI)和具有视频功能的嵌入式设备等应用。 图1.1HD-G2L-IOT  2.测试目的 MPU(MicroprocessorUnit,微处理器单元)是嵌入式系统中最常用的处理器之一,它具有计算能力和控制能力,广泛应用于各种嵌入式系统中,例如智能手机、平板电脑、汽车电子、工业自动化、智能家居等等。 对MPU进行压力测试的目的是为了评估其性能和稳定性,以确保其能够在各种情况下正常运行。在压力测试过程中,会模拟各种场景和负载,例如高并发访问、大量数据处理、频繁的IO操作等,以测试MPU在高负载下的响应速度、处理能力、稳定性和可靠性等方面的表现。 通过压力测试,可以发现MPU在极限负载下的表现,为开发人员和测试人员提供重要的性能数据和反馈,以改进系统设计、优化代码和测试策略,从而提高MPU的性能和稳定性,确保系统在各种情况下的高效运行。 该报告适用于CPU/GPU/VPU负载50%以上的压力测试(72小时以上)。  2.1 测试结果 经过超过72小时的MPU压力测试,主要针对CPU、GPU、VPU负载达到50%以上的情况进行测试。测试结果显示,在持续高强度负载下,系统整体表现稳定,无明显卡顿或崩溃现象,CPU、GPU、VPU负载水平均能够保持在稳定的水平。测试结果表明,系统能够在长时间高负载的工作环境下保持可靠性和稳定性,具有较高的抗压能力。 3.测试原理 3.1.1 CPU负载 使用C语言编写模拟CPU压力测试程序,通过命令行参数指定CPU的负载率,并在一定的时间跨度内持续运行,以模拟CPU的高负载状态。程序通过使用循环和休眠来控制CPU的负载率,并在循环中通过获取当前时间戳来计算CPU的使用时间和空闲时间。程序会一直持续运行,直到手动终止。其评估板运行CPU压力测试程序后如所示。 图3.1演示程序 该程序需要在空闲的机器上运行才能精确的获取到设置的CPU负载率,如果有其他占用CPU的进程在运行则实际的利用率会比设定值要高,所以与实际设置的CPU负载率存在一定的误差。 3.1.2 GPU/VPU负载 通过死循环脚本不断播放格式为.mp4的视频。 图3.2GPU负载 3.2 硬件准备 HD-G2L-IOT评估板、HD-G2L-COREV2.0核心板、网线、Type-c数据线、12V电源适配器、UART模块、电容屏、电脑主机。 3.3 测试环境 图3.3测试环境 3.4 开始MPU负载测试 根据测试目的,运行测试程序,将CPU负载率设置为70%,外接电容屏播放视频并持续运行72小时以上。 图3.4 图3.5视频播放 如图3.4所示,运行CpuStress程序设置负载率为70%:先检测是否存在CpuStress进程,若有则杀掉进程,随后根据用户输入时间校准评估板时间,最后输入测试时长(秒)开始MPU负载测试并持续显示当前CPU负载率在屏幕,若达到测试时长则自动结束测试。  3.5 结束MPU负载测试 图3.6测试结果 图3.7视频播放 如图3.6所示,CpuStress程序在运行了72小时30分钟后结束运行,并显示测试完成,在此测试期间,持续高强度负载下,系统整体表现稳定,无明显卡顿或崩溃现象,CPU、GPU、VPU负载水平均能够保持在稳定的水平。测试结果表明,系统能够在长时间高负载的工作环境下保持可靠性和稳定性,具有较高的抗压能力。 4.关于HD-G2L-IOT 4.1 硬件参数 HD-G2L-IOT板载的外设功能: 集成2路10M/100M/1000M自适应以太网接口 集成Wi-Fi 集成2路RS-232接口 集成2路RS-485接口 集成2路CAN-bus接口 集成2路USBHost 集成1路USB扩展4G模块接口(集成SIM卡接口) 集成1路USB扩展5G模块接口(集成SIM卡接口) 支持1路TF卡接口 支持液晶显示接口(RGB信号) 支持4线电阻触摸屏与电容屏接口 1路MIPIDSI接口 1路摄像头接口(MIPICSI) 支持音频(耳机、MiC、SPK) 支持实时时钟与后备电池 支持蜂鸣器与板载LED 支持GPIO 1路TTL调试串口 直流+12V电源供电(宽压9~36V) HD-G2L-CORE核心板硬件资源参数: 注:受限于主板的尺寸与接口布局,核心板部分资源在IoT底板上以插针方式引出。  
  • 2023-3-1 11:53
    212 次阅读|
    0 个评论
    前 言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMware15.5.5 进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装S ecureCRT串口调试终端、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和高低温测试验证,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富, 引出三路网口、三路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 接收测试 执行如下命令,接收PC端发送的数据。 Target# candump can0 图 76 在PC端打开GCAN Tools软件,等待软件检测到设备后,选择设备类型,点击“打开设备”。设备打开后,点击CAN1,将波特率设置为1000K,然后点击“确定”,如下图所示。 图 77 进入GCAN Tools软件发送界面,取消"CAN FD"选项,USB-CAN分析仪连接成功后将会显示Connected状态,如下图所示。 图 78 输入数据,点击“发送”按钮,向评估板发送数据,串口调试终端将会接收并打印显示,如下图所示。 图 79 图 80 接收测试 进入评估板文件系统执行如下命令,发送数据至PC端GCAN Tools软件,GCAN Tools软件收到数据说明功能正常。 Target# cansend can0 --identifier=0x123 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 图 81 图 82 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 表 2 RES TS信号杜邦线 评估底板RES TS排针接口丝印 红色 X+ 白色 Y- 绿色 X- 黑色 Y+ LVDS显示屏显示测试 评估板重启,进入文件系统后即可看到LVDS显示屏显示Qt界面。 图 84 LVDS显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 85 评估板重启后,执行如下校准命令。 Target# ts_calibrate 图 86 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击5次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 87 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 88 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 89 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 LCD显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal //如"/etc/pointercal"不存在,请忽略 Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 92 评估板重启后,执行如下命令,打开背光,配置tslib环境,并执行校准命令。 Target# mount -t debugfs none /sys/kernel/debug Target# /sys/kernel/debug/sunxi_pinctrl/function Target# /sys/kernel/debug/sunxi_pinctrl/data Target# ts_calibrate 图 93 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击五次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 94 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 95 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 96 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 MIPI显示屏显示测试 评估板重启,进入文件系统后即可看到MIPI屏显示Qt界面。 图 98 MIPI显示屏校准测试 执行如下命令删除校准文件,并关闭默认启动的Qt程序。 Target# rm /etc/pointercal Target# mv /etc/init.d/runqt /etc/init.d/K99runqt Target# reboot 图 99 评估板重启后,执行如下校准命令。 Target# ts_calibrate 图 100 执行完命令后,进入如下界面进行校准,根据提示点击坐标点,连续点击五次之后,会在文件系统"/etc/"目录下生成校准文件pointercal,校准后的信息记录在该文件中。 图 101 检查校准坐标,执行如下指令,并点击屏幕,查看打印坐标是否正常,按"Ctrl + C"结束。 Target# ts_print 图 102 校准完毕,执行如下命令恢复默认启动Qt程序。 Target# mv /etc/init.d/K99runqt /etc/init.d/runqt Target# reboot 图 103 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 执行如下命令可查看CVBS OUT接口输出格式为"tv output mode(14)",即NTSC模式。 Target# cat /sys/class/disp/disp/attr/sys 图 106 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 评估板重启后,执行如下命令关闭Qt显示功能,重新初始化framebuffer。 Target# killall Launcher MediaUI CameraUI Target# fbinit Target# /sys/class/disp/disp/attr/fb2ui 图 108 执行如下命令可查看TVIN接口的四个video*设备节点。 Target# ls /dev/video* 图 109 执行如下命令,采集四路TVIN视频并通过LVDS LCD显示屏显示。 Target# /sdktest 4 4 5 6 7 图 110 可观察到LVDS LCD显示屏依次循环显示四路TVIN采集到的图像。 图 111 AUDIO音频测试 评估板板载H/P OUT、LINE IN接口。请准备一条3.5mm两头均为公头的音频线,一端连接评估板的LINE IN接口,另外一端连接正在播放音频的播放器(手机或PC机均可),将音箱或耳机插入H/P OUT接口。 执行如下命令,音箱或耳机正常播放音乐,并且不存在杂音、失真,按"Ctrl + C"停止播放。 Target# killAllUI //关掉Qt应用程序,否则会冲突 Target# /dev/null //打开右输入 Target# /dev/null //打开左输入 Target# /dev/null //关闭麦克风1 Target# /dev/null //关闭麦克风2 Target# /dev/null //启动录音与播放 图 112 DI/DO接口测试 将评估板断电,请通过杜邦线分别将J10的pin7与pin9、pin11与pin13、pin15与pin17、pin19进行连接。 图 113 执行如下命令,进行DI/DO回环测试。 Target# /sys/class/gpio/export Target# /sys/class/gpio/export Target# /sys/class/gpio/export Target# /sys/class/gpio/gpio9/direction Target# /sys/class/gpio/gpio193/direction Target# /sys/class/gpio/gpio194/direction Target# /sys/class/gpio/export Target# /sys/class/gpio/export Target# /sys/class/gpio/export Target# /sys/class/gpio/export Target# /sys/class/gpio/gpio192/direction Target# /sys/class/gpio/gpio195/direction Target# /sys/class/gpio/gpio258/direction Target# /sys/class/gpio/gpio259/direction Target# /sys/class/gpio/gpio9/value Target# /sys/class/gpio/gpio193/value Target# /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# /sys/class/gpio/gpio9/value Target# /sys/class/gpio/gpio193/value Target# /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# /sys/class/gpio/export Target# /sys/class/gpio/gpio43/direction Target# /sys/class/gpio/gpio43/value;sleep 1; done 图 115 按"Ctrl + C"停止喂狗,执行如下命令,系统将在1~3min内重启。 Target# /sys/class/gpio/export Target# /sys/class/gpio/gpio44/direction Target# /sys/class/gpio/gpio44/value 图 116 10s超时模式测试 请执行如下命令开始喂狗,喂狗期间系统不会重启。 Target# mount -t debugfs debug /proc/sys/debug //若已执行则无需再次执行,重复执行会报错,忽略即可 Target# /sys/class/gpio/export Target# /sys/class/gpio/gpio43/direction Target# /sys/class/gpio/gpio43/value;sleep 1; done 图 117 按"Ctrl + C"停止喂狗,执行如下命令,系统将在10~30s内重启。 Target# /sys/class/gpio/export Target# /sys/class/gpio/gpio44/direction Target# /sys/class/gpio/gpio44/value 图 118 蓝牙测试 评估板已板载蓝牙模块,评估板上电时蓝牙数据指示灯LED5和连接指示灯LED6呈现熄灭状态。当蓝牙连接成功后,连接指示灯呈现绿色并常亮;当蓝牙收发数据时,数据指示灯呈现黄色并闪烁。 BLE测试工具”进入EBYTE小程序,查找并点击"E104-BT5011A"设备进入。 图 119 Slave模式 在微信小程序,选择进入Slave模式并点击"Cloud Connect"连接。 图 120 然后在评估板输入如下命令,手机端将接收到评估板(作为Slave)发送的信息。 Target# stty -F /dev/ttyS2 ispeed 115200 ospeed 115200 cs8 -icanon Target# /dev/ttyS2 图 121 图 122 Center模式 微信小程序,点击返回键"<"返回至模式选择界面,选择进入Center模式点击"Cloud Connect"连接。 图 123 评估板先执行如下命令,等待接收手机(作为Slave)发送的信息。 Target# cat /dev/ttyS2 图 124 然后在微信小程序的Center模式下点击蓝色字体"Write new value"。手机键盘输入字符"tronlong",接着按下回车键,微信小程序将会弹出发送成功提示信息。 图 125 同时评估板串口终端将接收到手机发送的字符信息,如下图所示。 图 126 完成测试后,可执行如下命令断开连接,评估底板蓝牙连接指示灯LED6熄灭,表示已断开连接。 Target# mount -t debugfs debug /proc/sys/debug Target# /proc/sys/debug/sunxi_pinctrl/function Target# /proc/sys/debug/sunxi_pinctrl/data 图 127 网络接口测试 评估板配备1个千兆网口(ETH0 RGMII)和2个百兆网口(ETH1 MII、ETH1 USB),网卡名字对应如下: ETH0 RGMII:eth0,默认网卡。 ETH1 MII:eth1。 ETH2 USB:eth2。 请使用网线将评估板对应网口、PC机连接至同一个路由器,然后启动评估板。 ETH0 RGMII网口测试 网络连通测试 进入评估板文件系统,执行如下命令获取IP以及查看网口配置信息。 Target# ifconfig 图 128 如对应网卡未自动获取到IP,请执行如下命令。 Target# udhcpc -i eth0 "-i"用于指定网卡,eth0为网卡名字,请根据实际情况修改。不加"-i"和网卡名字,则指默认网卡eth0。 图 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 图 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 图 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。 图 139 测试网口连接外网是否正常,以访问"www.baidu.com"为例,执行如下命令,"-I"代表指定网口,不加"-I"则使用默认网卡。可按"Ctrl + C"终止ping命令。 Target# ping www.baidu.com -I eth1 图 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 图 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 图 145 图 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 图 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 图 151 图 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
  • 2023-3-1 11:51
    177 次阅读|
    0 个评论
    本章节内容是为评估板串口安装USB转串口驱动程序。驱动适用于CH340、CH341等USB转串口芯片。 USB转串口驱动安装 适用安装环境:Windows 7 64bit、Windows 10 64bit。 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F设计的多核工业级核心板, 通过工业级B2B连接器引出5x TSN Ethernet、9x UART 、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。 核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 用户使用核心板进行二次开发时,仅需专注上层运用 ,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。 请通过Micro USB线将评估板的调试串口(USB TO UART0)与PC机USB接口相连,并打开PC设备管理器,找到USB Serial,右键选择“更新驱动程序(P)”,如下图所示。 图 1 选择“浏览我的电脑以查找驱动程序(R)”,如下图所示。 图 2 选择产品资料“4-软件资料\Tools\Windows\CH341SER.zip”解压后的文件夹路径,点击“下一步(N)”,如下图所示。 图 3 提示安装成功后,可在PC设备管理器中查看到USB转串口驱动,如下图所示。 图 4 图 5 如依然无法正常安装,可使用驱动精灵、鲁大师等第三方软件联网安装USB转串口驱动。如果驱动正常但连接依然失败,请检查USB连接线是否正常。 系统调试工具SecureCRT安装 本章节内容是为评估板安装系统调试工具软件SecureCRT。SecureCRT调试工具的主要用途是通过串口或网口对评估板系统信息进行查看、对评估板系统进行调试等。 适用安装环境:Windows 7 64bit、Windows 10 64bit。 安装软件 解压产品资料的“ 4-软件资料\Tools\Windows \VanDyke.SecureCRT.zip”压缩包 。 64位计算机请双击安装解压目录中的"VanDyke.SecureCRT\x64\scrt725-x64_tt7z.com.exe"安装程序。 32位计算机请双击安装解压目录中的"VanDyke.SecureCRT\x86\scrt725-x86_tt7z.com.exe"安装程序。 弹出如下解压进度条。 图 6 解压完成后,弹出如下安装界面。 图 7 点击Next,弹出如下对话框。 图 8 点击第一个"I accept the terms in the license agreement"选项,同意安装协议,然后点击Next,弹出如下对话框。 图 9 点击第一个"Common profile(affects all users)"选项,然后点击Next,弹出如下对话框。 图 10 点击Custom选项,然后点击Next,弹出如下安装路径。 图 11 点击"Change…"选项,选择SecureCRT的安装路径(推荐使用英文安装路径),然后点击Next,弹出如下对话框。 图 12 勾选"Create a program group for SecureCRT"、"Add a desktop shortcut for SecureCRT"选项,然后点击Next,弹出如下界面。 图 13 点击Install,弹出如下进度条。 图 14 安装过程持续约1min,安装完成后弹出界面。 图 15 点击Finish即可完成安装。完成后,需输入License序列号方可正常使用,请自行购买License。 串口连接设置 如下步骤适用于串口调试方式。 Quick Connect…",进入连接配置界面。或直接点击"Quick Connect"快捷按钮,如下图所示。 图 16 图 1 7 在弹出对话框中,配置串口连接方式。Protocol选择Serial,Port选择相应COM口,波特率为115200,其他参数默认不变,最后点击Connect连接,如下图所示。 备注: COM口编号需要在Windows设备管理器“端口(COM和LPT)”处查看。 图 18 网口连接设置 如下步骤适用于网口调试方式。 打开"Quick Connect",参考上述“串口连接设置”相关步骤。 在弹出对话框中,配置网口连接方式。Protocol选择SSH2(SSH协议),Hostname后面方框填写评估板的IP地址,其他参数默认不变,最后点击Connect连接,如下图所示。 图 19 字符编码设置 为了保证系统调试工具支持中文显示,避免出现中文乱码,请进行如下字符编码设置。 Appearance",Character encoding选择UTF-8,点击OK保存即可。 图 20 图 21 系统启动信息(Log)保存 在调试过程中,经常需对系统启动信息(Log)进行保存。 Log Session",进入Log保存配置界面,选择Log保存路径后点击“保存”,如下图所示。 图 22 图 23 当系统启动完成后,Log将自动保存在对应的log文件中,内容类似下图所示。 图 24 图 25 CAN调试工具GCAN Tools安装 本章节内容是为评估板安装CAN接口调试工具GCAN Tools。CAN接口调试工具的主要用途是查看CAN接口相关打印信息。 适用安装环境:Windows 7 64bit、Windows 10 64bit。 USB转CAN驱动安装 请将USB-CAN分析仪(型号:广成科技USBCAN-II FD)接入PC机USB接口,打开PC设备管理器,右键点击CAN驱动程序,弹出菜单中选择“属性(R)”选项。 图 26 打开“更新驱动程序”对话框,选择“浏览我的电脑以查找驱动程序(R)”选项。 图 27 点击“浏览(R)…”选项,选择USB转CAN驱动程序所在路径。USB转CAN驱动程序存放于产品资料 的“ 4-软件资料\Tools\Windows\GCAN Tools调试分析软件\Driver\” 目录下 。确认完毕后点击“下一步(N)”进行安装。 图 28 成功安装USB-CAN驱动程序后,弹出对话框如下图所示。 图 29 重新打开PC设备管理器,即可查看到成功安装的USB转CAN驱动程序,如下图所示。 图 30 CAN调试工具GCAN Tools安装 双击产品资料“4-软件资料\Tools\Windows\GCAN Tools调试分析软件\GCANTools-Setup20221026cn.exe”文件,安装CAN接口调试工具GCAN Tools。 图 31 弹出安装向导,如下图所示。点击“下一步(N)”继续安装程序。 图 32 在弹出对话框中选择软件安装路径,如下图所示。默认安装在C盘目录下,点击“下一步(N)”。 图 33 弹出如下界面创建快捷方式,点击“下一步(N)”。 图 34 进入如下安装界面,点击“安装(I)”。 图 35 弹出如下界面,点击“下一步(N)”开始安装,如下图所示。 图 36 弹出如下界面,点击“完成”,如下图所示。然后退出安装向导,安装完成。 图 37 图 38
  • 2023-3-1 11:49
    95 次阅读|
    0 个评论
    前 言 本文档主要说明AM64x基于IPC的多核开发方法。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu 18.04.4 64bit Linux Processor SDK:ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39 U-Boot:U-Boot-2021.01 CCS版本:CCS11.2.0 MCU+ SDK:mcu_plus_sdk_am64x_08_03_00_18 SysConfig:sysconfig-1.12.1_2446 GCC AARCH64 Compiler:gcc-arm-9.2-2019.12-mingw-w64-i686-aarch64-none-elf 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F设计的多核工业级核心板, 通过工业级B2B连接器引出5x TSN Ethernet、9x UART 、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。 核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 用户使用核心板进行二次开发时,仅需专注上层运用 ,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。 AM64x是SOC多核处理器,一般情况下,Cortex-A53核心运行Linux系统,Cortex-R5F/Cortex-M4F核心运行Baremetal(裸机)或RTOS(FreeRTOS等)。 ARM基于Linux的remoteproc/rpmsg驱动程序,可以实现Linux内核与运行RTOS的从处理器上的IPC驱动程序通信,具体框图如下图所示。 图 1 IPC多核开发案例位于“4-软件资料\Demo\RTOS-demos\”目录下,案例project目录存放工程源码,bin目录存放可执行程序文件。 表 1 案例 目录 说明 ipc_rpmsg_echo_linux bin 可执行程序 project 工程源码 ipc_rpmsg_echo_linux案例 案例说明 案例功能:基于RP Message的API实现Cortex-A53与Cortex-R5F核间通信,以及Cortex-A53与Cortex-M4F核间通信。 程序框图如下图所示。 图 2 程序框图 RTOS工程创建了两个RPMsg端点,其中一个端点与Linux内核交换消息,另外一个端点用于与Linux用户空间、裸机或RTOS交换消息。 图 3 案例测试 环境搭建 请将案例bin目录下的am64-main-r5f0_0-fw、am64-main-r5f0_1-fw、am64-main-r5f1_0-fw、am64-main-r5f1_1-fw、am64-mcu-m4f0_0-fw可执行程序拷贝至评估板文件系统任意目录下。 图 4 进入评估板文件系统,执行如下命令,删除原来的软链接。 Target# rm /lib/firmware/am64-main-r5f0_0-fw Target# rm /lib/firmware/am64-main-r5f0_1-fw Target# rm /lib/firmware/am64-main-r5f1_0-fw Target# rm /lib/firmware/am64-main-r5f1_1-fw Target# rm /lib/firmware/am64-mcu-m4f0_0-fw 图 5 执行如下命令,创建新的软链接。 Target# ln -sf /home/root/am64-main-r5f0_0-fw /lib/firmware/am64-main-r5f0_0-fw Target# ln -sf /home/root/am64-main-r5f0_1-fw /lib/firmware/am64-main-r5f0_1-fw Target# ln -sf /home/root/am64-main-r5f1_0-fw /lib/firmware/am64-main-r5f1_0-fw Target# ln -sf /home/root/am64-main-r5f1_1-fw /lib/firmware/am64-main-r5f1_1-fw Target# ln -sf /home/root/am64-mcu-m4f0_0-fw /lib/firmware/am64-mcu-m4f0_0-fw 图 6 请将评估板重启,在系统启动过程中,Cortex-R5F、Cortex-M4F核心将会引导启动。在评估板文件系统执行如下命令,查询Cortex-R5F、Cortex-M4F核心与remoteproc关系。 Target# head /sys/class/remoteproc/remoteproc*/name 图 7 Cortex-R5F、Cortex-M4F核心与remoteproc关系如下表所示。AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。 表 2 CPU核心 remoteproc m4fss0_0 remoteproc0 r5fss0_0 remoteproc1 r5fss0_1 remoteproc2 r5fss1_0 remoteproc3 r5fss1_0 remoteproc4 备注: 核心与remoteproc对应关系,请以实际情况为准。 执行如下命令,可查看Cortex-M4F、Cortex-R5F核心程序运行日志。 Target# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc3/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc4/trace0 图 8 功能测试 本小节主要介绍如何基于RPMsg测试Cortex-A53与Cortex-M4F核间通信,以及Cortex-A53与Cortex-R5F核间通信。 基于Linux应用程序测试 本次测试使用TI官方提供的rpmsg_char_simple工具,我司提供的文件系统已移植该工具。 进入评估板文件系统执行如下命令,查看程序相关参数。 Target# rpmsg_char_simple -h 图 9 参数解析: rproc_id:核心ID,默认是0; num_msgs:发送的RPMsg数据包数量,默认是100; rpmsg_dev_name:RPMsg驱动设备节点,默认为不使用; remote_endpt:对端核心接收RPMsg的端点,默认为14。 Cortex-M4F核心、Cortex-R5F核心对应的ID,如下表所示。 表 3 核心 ID r5fss0_0 2 r5fss0_1 3 r5fss1_0 4 r5fss1_1 5 m4fss0_0 9 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss0_0)接收。 Target# rpmsg_char_simple -r 2 -n 10 图 10 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss0_1)接收。 Target# rpmsg_char_simple -r 3 -n 10 图 11 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss1_0)接收。 Target# rpmsg_char_simple -r 4 -n 10 图 12 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss1_1)接收。 Target# rpmsg_char_simple -r 5 -n 10 图 13 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-M4F核心(m4fss0_0)接收。 Target# rpmsg_char_simple -r 9 -n 10 图 14 基于Linux驱动程序测试 本次测试使用TI官方提供的rpmsg_client_sample驱动程序,我司提供的文件系统已移植该工具。 执行如下命令,查看各个核心对应的virtio ID。 Target# cd /sys/bus/virtio/drivers/virtio_rpmsg_bus Target# ls virtio* -l 图 15 表 4 设备节点 核心 Virtio ID 5000000.m4fss m4fss0_0 0 78000000.r5f r5fss0_0 1 78200000.r5f r5fss0_1 2 78400000.r5f r5fss1_0 3 78600000.r5f r5fss1_1 4 进入评估板文件系统执行如下命令,加载驱动,并设置RPMsg数据包数量为10。 Target# modprobe rpmsg_client_sample count=10 //count表示发送的RPMsg数据包数量。 图 16 执行如下命令查看驱动运行信息,打印"incoming msg x (src:0xd)"表示数据收发成功,即核间通信成功。 Target# dmesg | grep rpmsg_client_sample 图 17 案例编译 Import CCS Projects...",导入案例工程。 图 18 在弹出的如下界面,选中"ipc_rpmsg_echo_linux_am64x-evm_system_freertos",并勾选"Automatically import referenced projects found in same search-directory",然后点击Finish,导入Cortex-R5F核心与Cortex-M4F核心的全部工程。 图 19 在工程界面,右键选中ipc_rpmsg_echo_linux_am64x-evm_system_freertos,选择"Rebuild Project",重新编译全部工程。 图 20 编译完成后,将会在各个核心对应工程的Debug目录下生成可执行程序。 图 21 关键代码 创建任务并调度任务运行。 图 22 等待Linux就绪。 图 23 创建两个接收RPMsg的任务:用于接收Linux内核、Linux用户空间、Cortex-R5F核心(r5fss0_0)的RPMsg。 图 24 RPMsg接收任务。 图 25
  • 2023-3-1 11:48
    187 次阅读|
    0 个评论
    前 言 本文主要介绍AM64x的Cortex-A53、Cortex-M4F和Cortex-R5F核心程序自启动使用说明。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 本说明文档适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu 18.04.4 64bit Linux Processor SDK:ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39 U-Boot:U-Boot-2021.01 CCS版本:CCS11.2.0 MCU+ SDK:mcu_plus_sdk_am64x_08_03_00_18 SysConfig:sysconfig-1.12.1_2446 GCC AARCH64 Compiler:gcc-arm-9.2-2019.12-mingw-w64-i686-aarch64-none-elf 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F设计的多核工业级核心板, 通过工业级B2B连接器引出5x TSN Ethernet、9x UART 、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。 核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 用户使用核心板进行二次开发时,仅需专注上层运用 ,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。 基于SBL引导裸机、FreeRTOS程序启动 程序启动流程说明 评估板上电后,固化在CPU内部的RBL将会先运行,RBL根据评估板BOOT SET从启动介质(如eMMC,Micro SD、SPI FLASH)读取SBL,然后通过SBL引导应用程序启动。 程序启动流程如下图所示。 图 1 目前官方提供的MCU+ SDK(版本为mcu_plus_sdk_am64x_08_03_00_18),SBL将会先读取应用程序至MSRAM,然后再进行解析。由于MSRAM空间有限,分配给SBL使用的内存空间仅512KByte,并且SBL运行需使用部分MSRAM空间。因此,为确保SBL引导应用程序正常启动,应用程序大小不能超过380KByte。 图 2 基于Micro SD卡启动 启动卡制作 请准备一张FAT32格式的Micro SD卡,通过读卡器将Micro SD卡连接至PC机。 双击产品资料“ 4-软件资料\Tools\Windows \”目录下PartManFree-Setup.exe 分区管理软件,按默认安装即可。安装完成后,打开分区管理软件,将会自动识别到Micro SD卡分区,请右键选中该分区,点击"Set Active"设置为活跃分区,如下图所示。 图 3 进入MCU+ SDK组件安装目录"C:\ti\mcu_plus_sdk_am64x_08_03_00_18\tools\boot\sbl_prebuilt\am64x-evm\",将sbl_sd.release.tiimage拷贝至Micro SD卡,并重命名为tiboot3.bin,如下图所示。 备注: sbl_sd.release.tiimage为官方提供的SBL镜像。 图 4 图 5 单核启动 本小节以Cortex-A53核心的led_flash裸机工程为例进行演示,Cortex-M4F和Cortex-R5F核心操作步骤与之类似。 请参考《FreeRTOS、Baremetal案例开发手册》文档,正确编译产品资料“4-软件资料\Demo\Baremetal-demos\led_flash\project\”目录下的led_flash_a53ss_nortos工程,然后将编译生成的led_flash_a53ss_nortos.appimage镜像文件拷贝至Micro SD卡,并重命名为app。 图 6 图 7 请将Micro SD卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为101000(1~6),此档位为Micro SD启动模式。然后使用Micro USB线连接评估板的USB TO UART0调试串口至PC机, 请将评估板上电启动,串口调试终端将会打印如下类似启动信息。同时,可观察到评估底板LED1、LED2闪烁,说明程序自启动成功。 图 8 多核启动 本小节以Cortex-A53、Cortex-M4F和Cortex-R5F核心的led_flash裸机工程为例进行演示。 请在磁盘根目录新建一个非中文文件夹test,将产品资料“4-软件资料\Demo\Baremetal-demos\led_flash\bin\”目录下的led_flash_a53ss_nortos.out、led_flash_m4fss_nortos.out、led_flash_r5fss_nortos.out全部拷贝至该目录下。 图 9 右键Windows按钮,点击"Windows PowerShell(I)",打开Windows PowerShell终端。 图 10 在Windows PowerShell终端执行如下命令进入test目录。 Window# cd E:\test\ 图 11 rprc文件生成 在Windows PowerShell终端执行如下命令,基于 xxx .out文件使用CCS和MCU+ SDK生成 xxx .rprc文件, xxx .rprc文件已包含可加载段的bin文件。CCS与MCU+ SDK路径请以实际情况为准。 Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_a53ss_nortos.out Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_m4fss_nortos.out Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_r5fss_nortos.out 图 12 执行完成后,将会在当前目录下生成了led_flash_a53ss_nortos.rprc、led_flash_m4fss_nortos.rprc、led_flash_r5fss_nortos.rprc文件。 图 13 appimage文件生成 基于 xxx .rprc文件生成镜像 xxx .appimage,需指定启动核心的ID,对应关系如下表所示。 备注: AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。 表 1 核心 ID Cortex-A53 a53ss0_0 0 Cortex-R5F r5fss0_0 4 r5fss0_1 5 r5fss1_0 6 r5fss1_1 7 Cortex-M4F m4fss0_0 14 在Windows PowerShell终端执行如下命令,将Cortex-A53、Cortex-M4F和Cortex-R5F核心的led_flash可执行程序合并为led_flash.appimage,并指定运行核心分别为a53ss0_0、m4fss0_0、r5fss0_0。 Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/multicoreImageGen/multicoreImageGen.js --devID 55 --out led_flash.appimage led_flash_a53ss_nortos.rprc@0 led_flash_m4fss_nortos.rprc@14 led_flash_r5fss_nortos.rprc@4 图 14 执行完成后,将会在当前目录下生成led_flash.appimage镜像文件。 图 15 请将生成的led_flash.appimage镜像文件拷贝至Micro SD卡,并重命名为app。 图 16 请将Micro SD卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为101000(1~6),此档位为Micro SD启动模式。然后使用Micro USB线连接评估板的USB TO UART0调试串口至PC机。 评估板上电启动,串口调试终端将会打印如下类似启动信息。同时,可观察到评估底板LED1、LED2、LED3闪烁,说明程序自启动成功。 图 17 基于Linux引导裸机、FreeRTOS程序启动 基于Linux启动 本小节以产品资料“4-软件资料\Demo\RTOS-demos\”目录下的ipc_rpmsg_echo_linux案例为例进行演示。该案例主要实现Cortex-A53与Cortex-R5F核间通信,以及Cortex-A53与Cortex-M4F核间通信。 请将案例bin目录下的am64-main-r5f0_0-fw、am64-main-r5f0_1-fw、am64-main-r5f1_0-fw、am64-main-r5f1_1-fw、am64-mcu-m4f0_0-fw镜像文件拷贝至评估板文件系统根目录下。 图 18 进入评估板文件系统,执行如下命令,删除原来的软链接。 Target# rm /lib/firmware/am64-main-r5f0_0-fw Target# rm /lib/firmware/am64-main-r5f0_1-fw Target# rm /lib/firmware/am64-main-r5f1_0-fw Target# rm /lib/firmware/am64-main-r5f1_1-fw Target# rm /lib/firmware/am64-mcu-m4f0_0-fw 图 19 执行如下命令,创建新的软链接。 Target# ln -sf /home/root/am64-main-r5f0_0-fw /lib/firmware/am64-main-r5f0_0-fw Target# ln -sf /home/root/am64-main-r5f0_1-fw /lib/firmware/am64-main-r5f0_1-fw Target# ln -sf /home/root/am64-main-r5f1_0-fw /lib/firmware/am64-main-r5f1_0-fw Target# ln -sf /home/root/am64-main-r5f1_1-fw /lib/firmware/am64-main-r5f1_1-fw Target# ln -sf /home/root/am64-mcu-m4f0_0-fw /lib/firmware/am64-mcu-m4f0_0-fw 图 20 请将评估板重启,在系统启动过程中,Cortex-R5F、Cortex-M4F核心将会引导启动。在评估板文件系统执行如下命令,查询Cortex-R5F、Cortex-M4F核心与remoteproc关系。 Target# head /sys/class/remoteproc/remoteproc*/name 图 21 表 2 CPU核心 remoteproc m4fss0_0 remoteproc0 r5fss0_0 remoteproc1 r5fss0_1 remoteproc2 r5fss1_0 remoteproc3 r5fss1_0 remoteproc4 备注: 核心与remoteproc对应关系,请以实际情况为准。 执行如下命令,可查看Cortex-M4F、Cortex-R5F核心程序运行日志。 Target# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc3/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc4/trace0 图 22 工程配置说明 本小节主要演示如何在Cortex-R5F、Cortex-M4F核心的Baremetal(裸机)工程与FreeRTOS工程中添加Linux引导配置。 内存空间说明 如Cortex-R5F、Cortex-M4F核心的工程需支持基于Linux启动,则需进行内存空间分配,在Linux设备树中已指定内存空间,预留给Cortex-R5F、Cortex-M4F核心使用。内存空间分配如下图所示。 图 23 Cortex-M4F工程配置 本小节以Cortex-M4F核心的led_flash裸机工程为例进行演示。 IPC配置 在syscfg配置文件,添加IPC配置,具体配置如下图所示。 图 24 编译器链接脚本修改 双击打开编译器链接脚本linker.cmd,修改脚本内容。 图 25 在SECTIONS命令中新增一个.resource_table段,具体代码如下所示。 GROUP { /* This is the resource table used by linux to know where the IPC "VRINGs" are located */ .resource_table: {} palign(4096) DDR_0 图 26 在MEMORY命令中,设置.resource_table段的加载地址为0xA4100000,作为Cortex-M4F预留内存空间,具体代码如下所示。 /* Resource table must be placed at the start of DDR_0 when M4 core is early booting with Linux */ DDR_0 : ORIGIN = 0xA4100000 , LENGTH = 0x1000 图 27 Cortex-R5F工程配置 本小节以Cortex-R5F核心的led_flash裸机工程为例进行演示。 AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。不同的Cortex-R5F核心,编译器链接脚本指定的.resource_table段加载地址有所不同,具体如下表所示。 表 3 CPU核心 加载地址 r5fss0_0 0xA0100000 r5fss0_1 0xA1100000 r5fss1_0 0xA2100000 r5fss1_1 0xA3100000 led_flash_r5fss_nortos工程配置的Cortex-R5F核心为r5fss0_0,下面演示如何修改led_flash_r5fss_nortos工程配置,实现基于Linux引导启动r5fss0_0。 IPC配置 在syscfg配置文件,添加IPC配置,具体配置如下图所示。 图 28 UART配置 UART0为Cortex-A53核心(Linux系统)的调试串口。在led_flash_r5fss_nortos工程中已配置UART0作为调试串口,请在syscfg配置文件取消勾选"Enable UART Log"配置选项,或修改为Linux设备树中未使能的串口。 图 29 编译器链接脚本修改 双击打开编译器链接脚本linker.cmd,修改脚本内容。 图 30 修改内容如下: 启动代码链接至R5F_TCMA; 新增一个.resource_table段; 代码段、数据段、bss段、堆栈全部链接至DDR,在Linux上为r5fss0_0预留内存地址空间; SECTIONS { GROUP { .text.hwi: palign(8) .text.cache: palign(8) .text.mpu: palign(8) .text.boot: palign(8) .text:abort: palign(8) /* this helps in loading symbols when using XIP mode */ R5F_TCMA GROUP { .text: {} palign(8) /* This is where code resides */ .rodata: {} palign(8) /* This is where const's go */ DDR_1 GROUP { /* This is the resource table used by linux to know where the IPC "VRINGs" are located */ .resource_table: {} palign(4096) DDR_0 GROUP { .data: {} palign(8) /* This is where initialized globals and static go */ DDR_1 GROUP { .bss: {} palign(8) /* This is where uninitialized globals go */ RUN_START(__BSS_START) RUN_END(__BSS_END) .sysmem: {} palign(8) /* This is where the malloc heap goes */ .stack: {} palign(8) /* This is where the main() stack goes */ DDR_1 GROUP { .irqstack: {. = . + __IRQ_STACK_SIZE;} align(8) RUN_START(__IRQ_STACK_START) RUN_END(__IRQ_STACK_END) .fiqstack: {. = . + __FIQ_STACK_SIZE;} align(8) RUN_START(__FIQ_STACK_START) RUN_END(__FIQ_STACK_END) .svcstack: {. = . + __SVC_STACK_SIZE;} align(8) RUN_START(__SVC_STACK_START) RUN_END(__SVC_STACK_END) .abortstack: {. = . + __ABORT_STACK_SIZE;} align(8) RUN_START(__ABORT_STACK_START) RUN_END(__ABORT_STACK_END) .undefinedstack: {. = . + __UNDEFINED_STACK_SIZE;} align(8) RUN_START(__UNDEFINED_STACK_START) RUN_END(__UNDEFINED_STACK_END) DDR_1 /* Sections needed for C++ projects */ GROUP { .ARM.exidx: {} palign(8) /* Needed for C++ exception handling */ .init_array: {} palign(8) /* Contains function pointers called before main */ .fini_array: {} palign(8) /* Contains function pointers called after main */ DDR_1 /* Sections needed for C++ projects */ GROUP { .ARM.exidx: {} palign(8) /* Needed for C++ exception handling */ .init_array: {} palign(8) /* Contains function pointers called before main */ .fini_array: {} palign(8) /* Contains function pointers called after main */ DDR_1 } 图 31 图 32 设置.resource_table段的加载地址为0xA0100000,作为r5fss0_0核心预留内存空间; 设置共享内存链接至Linux为共享内存预留的内存地址空间。 /* Resource table must be placed at the start of DDR_0 when R5 cores are early booting with Linux */ DDR_0 : ORIGIN = 0xA0100000, LENGTH = 0x1000 DDR_1 : ORIGIN = 0xA0101000 , LENGTH = 0xEFF000 USER_SHM_MEM : ORIGIN = 0xA5000000 , LENGTH = 0x80 LOG_SHM_MEM : ORIGIN = 0xA5000000 + 0x80, LENGTH = 0x00004000 - 0x80 RTOS_NORTOS_IPC_SHM_MEM : ORIGIN = 0xA5004000 , LENGTH = 0x0000C000 图 33
相关资源