嵌入式 Linux 开发 2:评估开发板

为什么要评估开发板

制作 Linux 硬件是一件代价很大且风险很高的事情,为了快速检验可行性,一般会先评估 Linux 开发板。
开发板让 Linux 软件工程师尽快投入开发,也给硬件工程师提供参考设计,确实是个不错的工具。

向厂商申请哪些资源

除了 Linux 开发板硬件外,一般还需要如下的资源

  • Linux 核心板和开发板说明书
  • 硬件设计资料:原理图,PCB 封装,BOM 清单
  • Linux 4 组件及源代码:开发工具链,u-boot,内核,根文件系统

盘点开发板资源

首先将 USB2TTL 连接 PC 和 开发板,接上网线,然后启动 Linux 系统,查看如下资源

  • CPU cat /proc/cpuinfo
  • RAM free
  • FLASH cat /proc/mtd df -h
  • 以太网 ifconfig
  • 内核版本 cat /proc/version
  • 文件系统 cat /proc/filesystems mount
  • 设备 cat /proc/devices

小窍门:一般 Linux 开发板都可以串口登录,常见波特率为 115200/57600-8-n-1 可使用如下软件和 Linux 命令
TeraTerminal串口软件
提高 Linux 服务器性能

测试工具链/u-boot/内核/根文件系统

拿开发板厂商提供的工具,按文档快速完成如下 5 步,评估 Linux 软硬件可行性。

  • 安装交叉编译工具链
  • 编译 u-boot(可选:烧录并测试 u-boot)
  • 联编内核
  • 编译一个小型应用程序,并添加到根文件系统中
  • 用新构建的根文件系统和内核启动开发板,调试应用程序

小窍门1:小心烧录 u-boot 的危险性! 这依赖 CPU 的启动方式:

  • 如果 CPU 支持 USB ISP 启动,烧录 u-boot 很容易,出错也容易恢复--再来一次。
  • 否则,如果升级 u-boot 时破坏了【正常工作的 u-boot】那就只能依靠 JTAG 仿真器来烧录了,这引入了不必要的麻烦。

小窍门2:每一种 CPU 都有自己独特的【编译和烧录】方式,尽早尝试,既可以熟悉流程,还能判断该 CPU 是否适合产品需求。

测试开发板硬件

测试 SPI

  • 联编 SPI 到内核:在 Device Drivers--->SPI support 选中 SPI 总线,选中 User mode SPI device driver support
  • 查看 SPI 设备文件:ls -l /dev/spidev1.0
  • 从原理图查找并短接 SPI 的 2 引脚 MOSI 和 MISO
  • 交叉编译 spidev_test.c 测试代码并上传到开发板(使用 NFS / SD / USB 等方式)
  • 执行 ./spidev_test -D /dev/spidev1.0 看到下面的语句即 OK
    spi mode: 0x0
    bits per word: 8
    max speed: 500000 Hz (500 KHz)
    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D

小窍门:如果将 MISO 短接到 3.3V 将会显示 32 个 FF 如果将 MISO 短接到 GND 将会显示 32 个 00

测试 UART

  • 联编 UART 到内核:在 Device Drivers--->Character devices--->Serial drivers 选中 UART 总线
  • 查看 SPI 设备文件:ls -l /dev/ttyS*
  • 从原理图查找 UART 的 2 引脚 RxD 和 TxD 连同 GND 连接到 USB2TTL<-->PC 打开【串口调试助手】,配置 9600-8n1
  • 修改 程序清单4 串口示例1代码 DEV_NAME 交叉编译并上传到开发板(使用 NFS / SD / USB 等方式)
  • 执行 ./uart_demo 在【串口调试助手】看到 "hello world" ---> 发送正常
  • 在【串口调试助手】发送 68 65 6C 6C 6F 20 77 6F 72 6C 64 0D 在 shell 看到 "hello world" ---> 接收正常

测试 GPIO

  • 联编 GPIO 到内核:在 Device Drivers--->GPIO Support 选中 /sys/class/gpio/...(sysfs interface)
  • 从原理图查找 GPIO 引脚(优先连接 LED 的 GPIO 方便测试,其次使用【万用表】连接 GPIO 和 GND 测量电压)
  • 修改 GPIO 引脚号并执行下面 toggle_gpio.sh 脚本 ---> 测试 GPIO 每 3 秒翻转电平
#!/bin/sh
GPIO=33
echo $GPIO > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio${GPIO}/direction
while true
do
    echo 1 > /sys/class/gpio/gpio${GPIO}/value
    sleep 3
    echo 0 > /sys/class/gpio/gpio${GPIO}/value
    sleep 3
done

有必要做一个样机吗

基于 Linux 开发板做样机是一件正确的事,它能用极低的代价“深入”检验产品的可行性。
一旦样机能跑起来,团队能将抽象的概念具体化,能聚焦精力,并且团队可以操作实物。
小心:样机不是真正的产品,它只能检验核心功能,切勿在它上面追求完美!

posted @ 2022-09-22 13:29  KevinAshton  阅读(134)  评论(0编辑  收藏  举报