基于 NXP i.MX6ULL 的扫码枪行业应用方案

扫码枪是用来扫描条码的设备,俗称扫码器、扫描器、扫描枪等。是光学、机械、电子、软件应用等技术

紧密结合的高科技产品,是键盘、鼠标之后的主要电脑输入设备。从直接的图片、照片、胶片等图纸到文稿都可用扫码枪输入到计算机中,实现信息处理、管理、使用、储存或输出。适用于物流、工厂、码头等工作环境恶劣,且工作负荷较高的行业。
          1

       i.MX 6ULL系列具有一个单核Cortex-A7平台,运行频率最高可达900 MHz,配备128KB L2缓存和16位DDR3/DDR3L/LPDDR2支持,是一个高效率、高性价比应用处理器系列。

 ? i.MX6ULL应用处理器方框图

  2
   

硬件设计说明:

    i.MX 6ULL开发板的功能电路及接口非常丰富,针对于扫码枪,硬件部分我们只需要在上面做减法,保留开发板方框图中的黄色部分。

 ? i.MX6ULL开发板部分原理图
4
? i.MX6ULL开发板PCB Layout
5

软件设计说明:

      本软件系统采用的是Linux系统,Linux具有开源、快速移植、应用广泛的特点,整个系统包括uboot、Linux Kernel、rootfs。由于将uboot、kernel、rootfs都放在16或32MB SPI Nor Flash中,并且要求快速启动,因此软件设计的一个任务是要对Linux系统进行裁剪使尽可能小。本章节主要对uboot、kernel、rootfs的移植裁剪以及应用程序测试说明。

1、Uboot

    uboot是bootloader,主要任务是初始化ARM、时钟、外部DDR3、QSPI Nor Flash等,以及将Kernel从SPI Nor Flash中复制到DDR3中运行引导起来。

    i.MX6ULL上电启动过程中首先是执行ROM Boot,读到QSPI启动方式设置后(硬件电路需先设置成QSPI启动),先执行spiflash中的uboot,为了更快地运行uboot,需要对uboot进行移植裁剪,同时删除一些不必要的功能。

(1)uboot配置和修改

uboot配置通过窗口菜单的形式可以配置,在uboot当前路径中执行以下命令:

export CROSS_COMPILE=arm-linux-gnueabihf-

export ARCH=arm

make menuconfig

然后会弹出下图窗口:
            7
   

       在窗口中菜单中进行配置,选择SPI Flash驱动,同时将一些不必要的功能去掉如net、fs、I2C等,将delay参数改成0,另外可以对uboot的源码进行删减,以尽可能地加快uboot的启动。

(2)uboot编译

   export CROSS_COMPILE=arm-poky-linux-gnueabi-

   export ARCH=arm

   make clean

   make u-boot.imx

   最后编译出u-boot.imx,可以用于下载到spi flash中。

2、Linux Kernel

      Linux Kernel是整个系统的核心部分,其可靠性和稳定性与否决定了整个系统的可行性,硬件驱动程序也其中。NXP同样提供基于i.MX6ULL的Linux源码,在此基础上进行移植裁剪。

  (1)Linux移植

  export CROSS_COMPILE=arm-poky-linux-gnueabi-

  export ARCH=arm

  make imx_v7_defconfig

  打开配置窗口,执行以下命令:

  make menuconfig

  然后会弹出以下配置窗口:

            6

        增加I2C、Carmera ov5640以及spi flash驱动,并将一些不要的net和驱动去掉。

      Ov5640驱动配置在Device Drivers--->Multimedia support-->V4L platform devices

另外,需要在设备树文件imx6ull-14x14-evk.dts中的I2C增加ov5640的一些参数配置,如下图所示:

            8

(2)Linux Kernel编译

  执行以下命令编译

  make

  最后会编译出zImage 和imx6ull-14x14-evk.dtb,可以用于下载到spi flash。

3、rootfs

   为了执行应用程序,需要移植rootfs,通过buildroot可以裁剪出最小的rootfs,rootfs以initramfs形式通过
kernel引导起来。

(1)下载buildroot源码:

  git clone git://git.buildroot.net/buildroot

(2)配置和编译

  make menuconfig

  make

  然后会编译出最小的rootfs

  将rootfs放在kernel同级目录,在Linux Kernel中配置initramfs,可以与kernel编译在一起。

4、下载

    使用NXP提供的uuu工具将uboot和zImage以及imx6ull-14x14-evk.dtb下载到spiflash中

  uuu  uuu-spi

  下载成功后然后上电启动后,调试串口输出一些启动信息:

  9

5、测试摄像头

执行以下命令:

# /usr/mx6s_v4l2_capture.out -m 1

然后会在LCD屏上显示摄像头采集的图像:

9
    

    在扫码枪的应用中,需要另外开发识读二维码算法或者购买第三方的算法移植,以实现扫码的功能。

 

场景应用图

sceneryUrl

产品实体图

imgUrl