上面是我的微信和QQ群,欢迎新朋友的加入。
前段时间,做了一个H3的双DDR方案,记录一下测试过程。
1.硬件速率检测
1.取掉SD卡,不接调试串口,按住复位按键,上电
设备管理器会弹出USB设备,打开硬件测试工具,点击开始之后,重新插拔USB,这里建议用648M测试,客户是408M速度,测试标准应该更高
以下是720M环境下,10轮DDR测试
2.Memtester测试
主要用于检查内存的稳定性和健康状况,检测内存错误,通过写入和读取内存来检查内存数据的完整性。
主要用于检查内存的稳定性和健康状况,检测内存错误,通过写入和读取内存来检查内存数据的完整性。
apt-get install memtester #安装测试软件
memtester 100M #测试100M数据,不停止
memtester 1GB 4 #测试1G,循环4次
memtester -a 0x12345678 1GB 4 #指定地址测试
如果报错,htop查看是不是CPU占满了
测试结果
3.MBW测试
用于测量系统的内存带宽性能,通过复制内存块来测量内存带宽。
apt-get install mbw
apt-get install dmidecode
cat /proc/cpuinfo #查看CPU
cat /proc/meminfo #查看内存
sudo dmidecode -t memory #查看内存型号和频率等信息
cat /proc/cpuinfo |grep MHz|uniq #查看cpu内核频率命令
mbw -q -n 10 256
-n 10表示运行10次,256表示测试所用的内存大小,单位为MB。
- MEMCPY:使用标准的 memcpy() 函数进行内存复制。平均带宽为 257.739 MiB/s。
- DUMB:使用一个简单的循环复制内存的方法。平均带宽为 274.722 MiB/s。
- MCBLOCK:使用内存块拷贝的方式进行复制。平均带宽为 344.940 MiB/s。
4.SD卡镜像启动
1) 首先准备一张 8GB或更大容量的TF卡,TF卡的传输速度必须为class10 以上,建议使用闪迪等品牌的TF卡
2) 然后使用读卡器把TF卡插入windows电脑
3) 接着格式化TF卡
a. 可以使用SD Card Formatter 这个软件格式化TF卡,其下载地址为
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip
b. 下载完后直接解压安装即可,然后打开软件
c. 如果电脑只插入了TF卡,则Select card一栏中会显示TF卡的盘符,如果电脑插入了多个USB存储设备,可以通过下拉框选择TF卡对应的盘符
d. 然后点击 Format,格式化前会弹出一个警告框,选择“是(Y)”后就会开始格式化
e. 格式化完TF卡后会弹出下图所示的信息,点击确定即可
4)找售后支持获取镜像文件,以“.img”结尾的文件就是操作系统的镜像文件,大小一般都在 1GB以上
5)使用Win32Diskimager烧录Linux镜像到TF卡
a. Win32Diskimager的下载页面为
http://sourceforge.net/projects/win32diskimager/files/Archive/
b. 下载完后直接安装即可,Win32Diskimager界面如下所示
a) 首先选择镜像文件的路径
b) 然后确认下TF卡的盘符和“设备”一栏中显示的一致
c) 最后点击“写入”即可开始烧录
d. 镜像写入完成后,点击“退出”按钮退出即可,然后就可以拔出TF卡插到开发板中启动
5.EMMC镜像启动
1) 烧录 linux 镜像到 eMMC 中需要借助 TF 卡来完成,首先将 linux 镜像烧录到 TF卡上,然后启动开发板进入 linux 系统
2) 然后运行 nand-sata-install 脚本
nand-sata-install
3) 然后选择 2 Boot from eMMC - sysytem on eMMC
4) 然后会弹出一个警告,脚本将会擦除 eMMC 上的所有数据,选择继续
5) 然后会提示选择文件系统的类型,支持 ext2/3/4、f2fs 以及 btrfs 五种文件系统
6) 然后会开始格式化 eMMC
7) 格式化完 eMMC 后就会开始烧录 linux 镜像到 eMMC 中
8) 烧录完后会提示下面的选项,可以选择直接关机
9) 然后拔出 TF 卡,再重新上电,就会启动 eMMC 中的 linux 系统了
6.4G模组联网
不是主要支持方案,这里只做参考
sudo apt-get install ppp
mkdir -p /etc/ppp
mkdir -p /etc/ppp/peers
vi /etc/ppp/gprs-connect-chat
# vi /etc/ppp/gprs-connect-chat
# 移动: at+cgdcont=1,"ip","cmnet"
# 联通: at+cgdcont=1,"ip","3gnet"
# 电信: at+cgdcont=1,"ip","ctnet"
#
# 拨号:
# 移动: *99***1#或*98*1#
# 联通: *99#
# 电信: ATD*99***1#
# Chat script for China Mobile, used SIMCOM sim4100 TD module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' \rAT
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","CTNET"
OK AT+CGEQREQ=1,2,128,384,,,0,,,,,,
OK ATD*99***1#
CONNECT
连接网络
注意:在这个过程中可能出现错误
pppd: The remote system is required to authenticate itself
pppd: but I couldn’t find any suitable secret (password) for it to use to do so.
解决方法:在配置文件/etc/ppp/options末尾添加上noauth即可。
7.WIFI联网
查看网络设备列表
nmcli dev
注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.
开启WiFi
nmcli r wifi on
扫描附近的 WiFi 热点
nmcli dev wifi
连接到指定的 WiFi 热点
nmcli dev wifi connect "yan" password "cj13397597688" ifname wlan0
如果你的USB WiFi无法正常工作, 大概率是因为文件系统里缺少了对应的USB WiFi固件。对于Debian系统, 可以在Debian-WiFi里找到并安装USB WiFi芯片的固件。而对于Ubuntu系统, 则可以通过下列命令安装所有的USB WiFi固件:
apt-get install linux-firmware
以下是联网正常状态
8.485收发测试
确认USB被正常检测
测试端子485发送
stty -a -F /dev/ttyUSB4 echo -e "hell 485 test\r\n" > /dev/ttyUSB4
测试端子485发送。记得杀掉之前得程序
cat /dev/ttyUSB4
记得要加回车换行
9.GPIO输入输出测试
1.LED测试
确定IO编号
下面是LED和按键测试
# 导出GPIO引脚GPIOA18 GPIOA21 GPIOA19 GPIOL3
echo 18 > /sys/class/gpio/export
echo 21 > /sys/class/gpio/export
echo 19 > /sys/class/gpio/export
echo 355 > /sys/class/gpio/export
# 设置GPIO引脚方向
echo out > /sys/class/gpio/gpio18/direction
echo out > /sys/class/gpio/gpio21/direction
echo out > /sys/class/gpio/gpio19/direction
echo in > /sys/class/gpio/gpio355/direction
# 控制LED状态 全部熄灭
echo 1 > /sys/class/gpio/gpio18/value
echo 1 > /sys/class/gpio/gpio21/value
echo 1 > /sys/class/gpio/gpio19/value
# 红灯
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio18/value
# 绿灯
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio21/value
# 蓝灯
echo 1 > /sys/class/gpio/gpio21/value
echo 0 > /sys/class/gpio/gpio19/value
# 读取按键状态
cat /sys/class/gpio/gpio355/value
状态正常
2.输入输出测试
下面是输入输出端口测试
# 导出GPIO引脚GPIOA
echo 8 > /sys/class/gpio/export
echo 9 > /sys/class/gpio/export
echo 15 > /sys/class/gpio/export
echo 16 > /sys/class/gpio/export
# 设置GPIO引脚方向
echo out > /sys/class/gpio/gpio8/direction
echo out > /sys/class/gpio/gpio9/direction
echo in > /sys/class/gpio/gpio15/direction
echo in > /sys/class/gpio/gpio16/direction
# 控制状态为1
echo 1 > /sys/class/gpio/gpio8/value
echo 1 > /sys/class/gpio/gpio9/value
# 控制状态为0
echo 0 > /sys/class/gpio/gpio8/value
echo 0 > /sys/class/gpio/gpio9/value
# 读取按键状态
cat /sys/class/gpio/gpio15/value
cat /sys/class/gpio/gpio16/value
继电器正常
对外12V正常
外部输入正常
10.RTC时钟芯片
linux5.4 系统在 dts 中默认关闭了 40pin 中的 i2c 控制器,如果需要使用 i2c,首先需要先打开 i2c 的配置,在 /boot/orangepiEnv.txt 中设置 overlays=i2c0 i2c1 就可以同时打开 i2c0和 i2c1 的配置
overlays=i2c0
测试 i2c,首先安装 i2c-tools
apt update
apt install i2c-tools
i2cdetect -y 0